This commit is contained in:
George Weigt 2006-01-05 19:38:07 -07:00
parent 18f25a56ee
commit 0875cf160a
3 changed files with 20 additions and 24 deletions

21
det.cpp
View file

@ -1,5 +1,3 @@
#include "stdafx.h"
//-----------------------------------------------------------------------------
//
// Input: Matrix on stack
@ -17,10 +15,9 @@
//
//-----------------------------------------------------------------------------
#include "stdafx.h"
#include "defs.h"
static void __detg(void);
static int
check_arg(void)
{
@ -61,7 +58,7 @@ det(void)
break;
if (i == n)
__detg();
yydetg();
else {
for (i = 0; i < p1->u.tensor->nelem; i++)
push(p1->u.tensor->elem[i]);
@ -164,8 +161,6 @@ determinant(int n)
//
//-----------------------------------------------------------------------------
static void decomp(int);
void
detg(void)
{
@ -181,13 +176,13 @@ detg(void)
return;
}
__detg();
yydetg();
restore();
}
static void
__detg(void)
void
yydetg(void)
{
int i, n;
@ -196,7 +191,7 @@ __detg(void)
for (i = 0; i < n * n; i++)
push(p1->u.tensor->elem[i]);
decomp(n);
lu_decomp(n);
tos -= n * n;
@ -217,8 +212,8 @@ __detg(void)
#define M(i, j) stack[h + n * (i) + (j)]
static void
decomp(int n)
void
lu_decomp(int n)
{
int d, h, i, j;

19
inv.cpp
View file

@ -1,5 +1,3 @@
#include "stdafx.h"
//-----------------------------------------------------------------------------
//
// Input: Matrix on stack
@ -17,10 +15,9 @@
//
//-----------------------------------------------------------------------------
#include "stdafx.h"
#include "defs.h"
static void __invg(void);
static int
check_arg(void)
{
@ -61,7 +58,7 @@ inv(void)
break;
if (i == n)
__invg();
yyinvg();
else {
push(p1);
adj();
@ -77,8 +74,6 @@ inv(void)
restore();
}
static void decomp(int);
void
invg(void)
{
@ -94,13 +89,15 @@ invg(void)
return;
}
__invg();
yyinvg();
restore();
}
static void
__invg(void)
// inverse using gaussian elimination
void
yyinvg(void)
{
int h, i, j, n;
@ -151,7 +148,7 @@ __invg(void)
#define A(i, j) stack[a + n * (i) + (j)]
#define U(i, j) stack[u + n * (i) + (j)]
static void
void
decomp(int n)
{
int a, d, i, j, u;

View file

@ -210,6 +210,8 @@ void test_derivative(void);
void det(void);
void determinant(int n);
void detg(void);
void yydetg(void);
void lu_decomp(int n);
// dirac.cpp
void eval_dirac(void);
@ -429,6 +431,8 @@ void make_integral_code(void);
// inv.cpp
void inv(void);
void invg(void);
void yyinvg(void);
void decomp(int n);
// invfourier.cpp
void eval_invfourier(void);