6 extern int C2F(dgesv)(int*, int*, double*, int*, int*, double*, int*, int*);
7 extern double C2F(dlamch)(char*);
8 typedef void (*resfunc)(double*, double*, double*, double*, int*, double*, int*);
10 int C2F(pjac1)(resfunc res, int *ires, int *nequations, double *tOld, double *actual, double *actualP,
11 double *rewt, double *savr, double *wk, double *h, double *cj, double *wp, int *iwp,
12 int *ier, double *rpar, int *ipar)
23 int neq = *nequations;
24 double SQuround = sqrt(C2F(dlamch)("P"));
28 e = (double*)calloc(neq, sizeof(double));
30 for (i = 0 ; i < neq ; ++i)
32 del = Max(SQuround * Max(fabs(actual[i]), fabs(*h * actualP[i])), 1. / rewt[i]);
33 del *= (*h * actualP[i] >= 0) ? 1 : -1;
37 actualP[i] += *cj * del;
38 res(&tx, actual, actualP, e, ires, rpar, ipar);
46 for (j = 0 ; j < neq ; j++)
48 wp[nrow + j] = (e[j] - savr[j]) * delinv;
49 iwp[nrow + j] = i + 1;
50 iwp[nrow + j + neq * neq] = j + 1;
62 int C2F(psol1)(int *nequations, double *tOld, double *actual, double *actualP,
63 double *savr, double *wk, double *cj, double *wght, double *wp,
64 int *iwp, double *b, double *eplin, int *ier, double *dummy1, int *dummy2)
70 ipiv = (int *) malloc(*nequations * sizeof(int));
72 C2F(dgesv) (nequations, &nColB, wp, nequations, ipiv, b, nequations, &info);