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

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

Got rid of the global old_chisquare, it's passed in as a parameter now. Some test code, commented out, bails out if the delta params go to zero. This gives about a 10% boost in performance. At least, in this case, we should avoid making new alpha and beta matrices.

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_gauss_jordan(float **a, int n, float *b);
60void GCI_covar_sort(float **covar, int nparam, int paramfree[], int mfit);
61float ***GCI_ecf_matrix_array(long nblocks, long nrows, long ncols);
62void GCI_ecf_free_matrix_array(float ***marr);
63int check_ecf_params (float param[], int nparam,
64                                        void (*fitfunc)(float, float [], float *, float [], int));
65int check_ecf_user_params (float param[], int nparam,
66                                        void (*fitfunc)(float, float [], float *, float [], int));
67int GCI_chisq(int nu, float chisq, float *root);
68int multiexp_lambda_array(float xincr, float param[],
69                                                  float *y, float **dy_dparam, int nx, int nparam);
70int multiexp_tau_array(float xincr, float param[],
71                                           float *y, float **dy_dparam, int nx, int nparam);
72int stretchedexp_array(float xincr, float param[],
73                                           float *y, float **dy_dparam, int nx, int nparam);
74int ECF_Find_Float_Max (float data[], int np, float *max_val);
75
76/* For debugging printing */
77extern int ECF_debug;  /* defined in EcfUtil.c */
78int dbgprintf(int dbg_level, const char *format, ...);
79
80// Vars for the export of params at each iteration
81int ecf_exportParams;
82char ecf_exportParams_path[256];
83
84void ecf_ExportParams_OpenFile (void);
85void ecf_ExportParams_CloseFile (void);
86void ecf_ExportParams (float param[], int nparam, float chisq);
87
88#endif /* _GCI_ECF_INTERNAL */
89
90
91// Emacs settings:
92// Local variables:
93// mode: c
94// c-basic-offset: 4
95// tab-width: 4
96// End:
Note: See TracBrowser for help on using the repository browser.