source: trunk/projects/slim-curve/src/main/c/EcfInternal.h @ 7706

Revision 7706, 3.8 KB checked in by aivar, 9 years ago (diff)

Changed GCI_gauss_jordan to be GCI_solve and GCI_invert. The current default CGI_solve uses Gaussian Elimination. Added inversion method. Added Lower/Upper Decomposition code for both solve and invert, but it is commented out.

Line 
1/* This is EcfInternal.h, the header file for internal functions in
2   the 2003 version of the ECF library. */
3
4#ifndef _GCI_ECF_INTERNAL
5#define _GCI_ECF_INTERNAL
6
7#include "Ecf.h"  /* in case there's anything we need from there */
8
9#define MAXFIT 20  /* The maximum number of parameters we'll ever try
10                              to fit; saves dynamic allocation of small arrays.
11                                      If this is increased, then the arrays chisq50 etc.
12                                      in ecf.c will need to be extended.  The values can
13                                      be calculated by using the test function at the end
14                                      of the file. */
15
16#define MAXITERS 80
17#define MAXREFITS 10
18
19/* Functions from EcfSingle.c */
20
21int GCI_marquardt_compute_fn(float x[], float y[], int ndata,
22                                         noise_type noise, float sig[],
23                                         float param[], int paramfree[], int nparam,
24                                         void (*fitfunc)(float, float [], float *, float [], int),
25                                         float yfit[], float dy[],
26                                         float **alpha, float beta[], float *chisq,
27                                         float alambda);
28int GCI_marquardt_compute_fn_instr(float xincr, float y[], int ndata,
29                                   int fit_start, int fit_end,
30                                   float instr[], int ninstr,
31                                   noise_type noise, float sig[],
32                                   float param[], int paramfree[], int nparam,
33                                   void (*fitfunc)(float, float [], float *, float [], int),
34                                   float yfit[], float dy[],
35                                   float **alpha, float beta[], float *chisq, float old_chisq,
36                                   float alambda,       
37                                        float **pfnvals, float ***pdy_dparam_pure, float ***pdy_dparam_conv,
38                                        int *pfnvals_len, int *pdy_dparam_nparam_size);
39int GCI_marquardt_compute_fn_final(float x[], float y[], int ndata,
40                                         noise_type noise, float sig[],
41                                         float param[], int paramfree[], int nparam,
42                                         void (*fitfunc)(float, float [], float *, float [], int),
43                                         float yfit[], float dy[], float *chisq);
44int GCI_marquardt_compute_fn_final_instr(float xincr, float y[], int ndata,
45                                   int fit_start, int fit_end,
46                                   float instr[], int ninstr,
47                                   noise_type noise, float sig[],
48                                   float param[], int paramfree[], int nparam,
49                                   void (*fitfunc)(float, float [], float *, float [], int),
50                                   float yfit[], float dy[], float *chisq,     
51                                        float **pfnvals, float ***pdy_dparam_pure, float ***pdy_dparam_conv,
52                                        int *pfnvals_len, int *pdy_dparam_nparam_size);
53
54/* Functions from EcfGlobal.c */
55
56
57/* Functions from EcfUtil.c */
58
59int GCI_solve(float **a, int, float *b);
60int GCI_invert(float **a, int);
61void GCI_covar_sort(float **covar, int nparam, int paramfree[], int mfit);
62float ***GCI_ecf_matrix_array(long nblocks, long nrows, long ncols);
63void GCI_ecf_free_matrix_array(float ***marr);
64int check_ecf_params (float param[], int nparam,
65                                        void (*fitfunc)(float, float [], float *, float [], int));
66int check_ecf_user_params (float param[], int nparam,
67                                        void (*fitfunc)(float, float [], float *, float [], int));
68int GCI_chisq(int nu, float chisq, float *root);
69int multiexp_lambda_array(float xincr, float param[],
70                                                  float *y, float **dy_dparam, int nx, int nparam);
71int multiexp_tau_array(float xincr, float param[],
72                                           float *y, float **dy_dparam, int nx, int nparam);
73int stretchedexp_array(float xincr, float param[],
74                                           float *y, float **dy_dparam, int nx, int nparam);
75int ECF_Find_Float_Max (float data[], int np, float *max_val);
76
77/* For debugging printing */
78extern int ECF_debug;  /* defined in EcfUtil.c */
79int dbgprintf(int dbg_level, const char *format, ...);
80
81// Vars for the export of params at each iteration
82int ecf_exportParams;
83char ecf_exportParams_path[256];
84
85void ecf_ExportParams_OpenFile (void);
86void ecf_ExportParams_CloseFile (void);
87void ecf_ExportParams (float param[], int nparam, float chisq);
88
89#endif /* _GCI_ECF_INTERNAL */
90
91
92// Emacs settings:
93// Local variables:
94// mode: c
95// c-basic-offset: 4
96// tab-width: 4
97// End:
Note: See TracBrowser for help on using the repository browser.