71 #define BIGINT (1 << 30)
81 integer i, j, k, pvr, pvc, nr, nc, r;
90 if (neq <= 0 || (
unsigned long)neq >
NAIVE_MAX) {
97 for (pvr = 0; pvr < neq; pvr++) {
100 for (i = 0; i < neq; i++) {
110 for (k = 0; k < nr; k++) {
113 fari =
fabs(a[r][i]);
115 mulpiv = fari*minpiv;
116 if (nzc[r] <= nc || mulpiv > fapvr) {
121 }
else if (nzc[r] < nc && fari > mulpiv) {
127 for (k = 0; k < nr; k++) {
130 fari =
fabs(a[r][i]);
137 for (k = 0; k < nr; k++) {
140 fari =
fabs(a[r][i]);
141 if (fari >= mulpiv && nzc[r] < nc) {
152 den = papvr[i] = 1.0/papvr[i];
154 for (k = 0; k < nr; k++) {
155 if (!todo[r = pri[k]]) {
continue; }
157 mul = par[i] = par[i]*den;
160 for (j = 0; j < nc; j++) {
161 if ((pvc = pci[j]) <= i) {
continue; }
163 par[pvc] -= mul*papvr[pvc];
165 par[pvc] = -mul*papvr[pvc];
167 ri[pvc][nzr[pvc]++] = r;
168 ci[r][nzc[r]++] = pvc;
201 if (neq <= 0 || (
unsigned long)neq >
NAIVE_MAX) {
205 fwd[0] = rhs[piv[0]];
206 for (i = 1; i < neq; i++) {
207 nc = nzc[r = piv[i]];
211 for (k = 0; k < nc; k++) {
212 if ((c = pci[k]) < i) {
220 sol[neq] = fwd[neq]*a[r][neq];
221 for (i = neq - 1; i >= 0; i--) {
222 nc = nzc[r = piv[i]];
226 for (k = 0; k < nc; k++) {
227 if ((c = pci[k]) > i) {
GradientExpression< UnaryExpr< FuncFabs, Expr > > fabs(const GradientExpression< Expr > &u)
int naivfct(RMAT a, integer neq, integer *nzr, IMAT ri, integer *nzc, IMAT ci, NZMAT nz, integer *piv, doublereal minpiv)
static std::stack< cleanup * > c
static const doublereal a
int naivslv(RMAT a, integer neq, integer *nzc, IMAT ci, doublereal *rhs, doublereal *sol, integer *piv)