Local(FloatHiPtr) J; /* current set of Jacobian vals */ Local(FloatHiPtr) H; /* current set of Hessian vals */ Local(FloatHiPtr) D3; /* current set of third-order dervals */ Local(Int2) Der2num; /* number of 2nd order derivatives */ Local(Int2) Der3num; /* number of 3nd order derivatives */ Local(void) CopyToX(Vector x); Local(void) CopyToP(Vector x); /**************************************************************************/ /* Returns Jacobian matrix of RHS using symbolic derivatives */ Local(void) SymJac(Vector x, Matrix Jac) { int SUP,i,j,k,nactive; VAR s; /* x - initial point; F = F^i(x); DF = DF^i(x); DFF; */ CopyToX(x); CopyToP(x); J=stagenData->Der1(X,P,&zero); nactive=staFunc->GetVectorDim(x)-nphase; if (itmap==1) { for (i=0; iRhs(X,P,&zero,F); CopyToX(F); J=stagenData->Der1(X,P,&zero); for (i=0; iDer2(X,P,&zero); J=stagenData->Der1(X,P,&zero); MemCopy(DF,J,sizeof(FloatHi)*nphase*(nphase+npar)); H=stagenData->Der2(X,P,&zero); MemCopy(D2,H,sizeof(FloatHi)*nphase*Der2num); MemCopy(F,x,sizeof(FloatHi)*nphase); for (SUP=1; SUPRhs(X,P,&zero,F); CopyToX(F); J=stagenData->Der1(X,P,&zero); H=stagenData->Der2(X,P,&zero); /* DxDx */ for (i=0; ik) Swap(j,k); if (j>l) Swap(j,l); if (k>l) Swap(k,l); return ind3_(j,k,l); } Local(FloatHiPtr) SymD3(Vector x) { int SUP,a,i,j,k,l,m,n,indik,indjk,indij,indijk; VAR s,r; /* x - initial point; F = F^i(x); DF = DF^i(x); DFF; */ CopyToX(x); CopyToP(x); if (itmap==1) return stagenData->Der3(X,P,&zero); J=stagenData->Der1(X,P,&zero); MemCopy(DF,J,sizeof(FloatHi)*nphase*(nphase+npar)); H=stagenData->Der2(X,P,&zero); MemCopy(D2,H,sizeof(FloatHi)*nphase*Der2num); MemCopy(F,x,sizeof(FloatHi)*nphase); D3=stagenData->Der3(X,P,&zero); MemCopy(D3F,D3,sizeof(FloatHi)*nphase*Der3num); for (SUP=1; SUPRhs(X,P,&zero,F); CopyToX(F); J=stagenData->Der1(X,P,&zero); H=stagenData->Der2(X,P,&zero); D3=stagenData->Der3(X,P,&zero); /* DxDxDx */ for (a=0; ak) Swap(j,k); if (j>l) Swap(j,l); if (k>l) Swap(k,l); return Der3Elem(i,j,k,l); } #undef Swap