/* Steven Andrews, 9/98 */ /* See documentation called BasisFn doc */ /* Copyright 2003 by Steven Andrews. Permission is granted for non-commercial use of and modifications to the code. */ #ifndef __BasisFn_h #define __BasisFn_h #include "string2.h" #include "Spectra.h" #include "Set.h" typedef struct modeltype { char name[STRCHAR]; char file[STRCHAR]; char color[STRCHAR]; sptr spec; sptr uncert; set basis; int np; float sigma; float xmin; float xmax; float dx; float *covar; }* modelptr; typedef struct basisfn { char name[STRCHAR]; char proc[STRCHAR]; char color[STRCHAR]; char desc[STRCHAR]; float (*addr)(float x,float *param,sptr spec,float *deriv); modelptr model; int n; float *param; float *pold; float *paramlo; float *paramhi; char **eqn; char **pname; int *freeze; float *scratch; int isspec; sptr spec; }* basisptr; basisptr BasisAlloc(int n); void BasisFree(basisptr b); modelptr ModelAlloc(sptr s); void ModelFree(modelptr m); int CheckBasis(basisptr b,modelptr m); int CheckMSpec(modelptr m); int CheckUncert(modelptr m); int setupbasis(); void PlotBasis(basisptr b); void PlotModel(modelptr m); void BasisRange(basisptr b,float *xa,float *xb,float *ya,float *yb,int fn); void ModelRange(modelptr m,float *xa,float *xb,float *ya,float *yb,int fn); int CountFreParam(modelptr m,int **frzptr); int FindBasisParam(basisptr *bptr,modelptr m,char* str); int FindBasisParam2(basisptr *bptr,modelptr m,float* fltptr); float ModelValue(float x,modelptr m); float ModelValueD(float x,modelptr m,float *d); void TypeBasis(basisptr b); void TypeAllBasis(); void TypeModel(modelptr m); basisptr BasisCopy(basisptr b); modelptr ModelCopy(modelptr m); basisptr AddBasis(basisptr b,char *bproc,sptr s,modelptr m); void RemoveBasis(basisptr b); int SaveModel(modelptr m); int LoadModel(modelptr *mptr,char *name,sptr s); int BasisMath(basisptr b,void *v,sptr *ansptr,float k,char *fn); int ModelMath(modelptr m,void *v,sptr *ansptr,float k,char *fn); void endbasis(); float rmserror(modelptr m); float chisq(modelptr m,float ch2max); float ChiSqD(modelptr m,float ch2max,float *alpha,float *beta,int np); int prefit(modelptr m,float ***pptr,float **ploptr,float **phiptr); int ModelCovar(modelptr m); void unfit(modelptr m); int RandomFit(modelptr m); int LinearFit(modelptr m); int LMFit(modelptr m); int RandMultiFit(set s); #endif