source: Sophya/trunk/SophyaLib/NTools/nbmath.h@ 633

Last change on this file since 633 was 244, checked in by ansari, 26 years ago

beaucoup modifs rz+cmv 22/4/99

File size: 5.1 KB
Line 
1/* quelques fonctions mathematiques et constantes utiles */
2/* cmv 23/06/94 */
3#ifndef NBMATH_H_SEEN
4#define NBMATH_H_SEEN
5
6#include "machdefs.h"
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12/* EA conflit entre les diverses copies de nbmath.h, nbconst.h... A nettoyer... */
13#undef Pi
14#undef Pis2
15#undef DeuxPi
16#undef SPi
17#undef S2Pi
18#undef Rac2
19#undef Log2
20#undef LnPi
21#undef LgPi
22#undef Ln10
23#undef DftoDm
24#undef Hln2pi
25#undef JourSec
26#undef AnSec
27
28#undef GRAND
29#undef GRAND2
30#undef IGRAND
31
32#define Pi (double) ( 3.14159265358979310e+00) /* c'est Pi */
33#define Pis2 (double) (1.57079632679489655) /* c'est Pi/2 */
34#define DeuxPi (double) ( 6.28318530717958620e+00) /* c'est 2*Pi */
35#define SPi (double) ( 1.77245385090551590e+00) /* c'est sqrt(Pi) */
36#define S2Pi (double) ( 2.50662827463100020e+00) /* c'est sqrt(2*Pi) */
37#define Rac2 (double) ( 1.41421356237309510e+00) /* c'est sqrt(2) */
38#define Log2 (double) ( 3.01029995663981200e-01) /* c'est log10(2) */
39#define LnPi (double) ( 1.14472988584940020e+00) /* c'est ln(Pi) */
40#define LgPi (double) ( 4.97149872694133850e-01) /* c'est log10(Pi) */
41#define Ln10 (double) ( 2.30258509299404590e+00) /* c'est ln(10) */
42#define DftoDm (double) ( 1.08573620475812940e+00) /* c'est 2.5/ln(10) */
43#define Hln2pi (double) ( 9.18938533204672670e-01) /* c'est Ln(2*pi)/2 */
44
45#define JourSec (float) (86400.000000) /* nombre de secondes dans 24H */
46#define AnSec (int) (31557600) /* nombre de secondes dans 365.25 jours */
47
48#define GRAND (float) (1.e+35)
49#define GRAND2 (double) (1.e+35)
50#define IGRAND (int_4) (2147483647)
51
52/* pour le fit 1-dim */
53#define NPAR_FITFUN 10
54#define FITFUN_FLOAT 1
55#define FITFUN_DOUBLE 2
56union FloatDouble { float *fx; double *dx; };
57typedef union FloatDouble FLOATDOUBLE;
58
59double FitFun( double (*FunFit) (double ,double *,double *) ,int_4 type
60 ,FLOATDOUBLE temps,FLOATDOUBLE mag,FLOATDOUBLE err
61 ,int_4 *ndata,int_4 I1,int_4 I2
62 ,double *par,double *epar,double *stepar
63 ,double *minpar,double *maxpar,int_4 npar
64 ,double stochi2,int_4 NstepMX,int_4 deb);
65
66double GausPiv(double *A,int_4 nca,int_4 n,double *B,int_4 ncb,int_4 m,int_4 Inv);
67
68int_4 paramga(float sxin, float syin, float rhoin
69 , float *smax, float *axisrat, float *tiltdeg);
70int_4 gaparam(float smax, float axisrat, float tiltdeg
71 , float *sxin, float *syin, float *rhoin);
72
73double nberfc(double x);
74float probnb(float sci2,int_4 inddl,int_4 *ipass);
75double nbgammln(double xx);
76double nbgammq(double a,double x);
77double nbgammp(double a,double x);
78
79void Set_Ihoq(int degre,int *mIhoqN,double *IhoqNX,double *IhoqNW);
80int Get_Ihoq(int degre,double *IhoqNX,double *IhoqNW);
81void nbgauleg(double x1,double x2,double *x,double *w,int n);
82double Integ_Fun(double xmin,double xmax,double (*fonc)(double),int npas);
83double Integ_Fun_2D(double (*fonc)(double x,double y)
84 ,double xmin,double xmax,double ymin,double ymax
85 ,int npasx,int npasy);
86
87void Set_FitFunDPol(int DPol);
88double Gauss1DPolF(double x,double *Par,double *DgDpar);
89double GaussI1DPol(double x,double *Par,double *DgDpar);
90double Polyn1D(double x,double *Par,double *DgDpar);
91
92double FitProp(double *x,double *y,double *ey,int *n,double *a1);
93double FitLin(double *x,double *y,double *ey,int *n
94 ,double *a0,double *a1);
95double FitPar(double *x,double *y,double *ey,int *n
96 ,double *a0,double *a1,double *a2);
97double FitParLin(double *xx,double *y,double *ey,int *n,double x0,int Deg_d
98 ,double *a0,double *a1,double *b1,double *b2);
99double FitPropClean(double *x,double *y,double *ey,int *n
100 ,double per_clean,double *a1);
101double FitLinClean(double *x,double *y,double *ey,int *n
102 ,double per_clean,double *a0,double *a1);
103double FitParClean(double *x,double *y,double *ey,int *n
104 ,double per_clean,double *a0,double *a1,double *a2);
105
106float interpole(float x,int n,float *t1,float *t2);
107
108int_4 MeanSig(float *mag,float *err,int_4 *ndata,float nsigma,float *mean,float *sigma);
109int Most_Probable( float *val, int nval, float binin, int nmoy
110 , float low, float high, float *most, int deb);
111float Ajust_GaFn(int Ns,float *fcfr
112 ,float *haut,float *ehaut,float *mean,float *emean
113 ,float *sigma,float *esigma,float *fond,float *efond
114 ,int fixfond,int NBIN_RESOL
115 ,float perc_net,float frac_sgb,float dyn_sgb,int deb);
116float HFit_GaFn(int Ns,float *fcfr
117 ,float *haut,float *ehaut,float *mean,float *emean
118 ,float *sigma,float *esigma,float *fond,float *efond
119 ,int fixfond,int nbin,float xmin,float xmax,int deb);
120int Ajust_MnSg(int Ns,float *fcfr
121 ,float *mean,float *emean,float *sigma,float *esigma
122 ,float perc_net,float n_sigma,int deb);
123
124float Int3DCube(float(*fonction)(float, float, float), float step,
125 float precision);
126
127int IntFaisDr(int n,float *cs,float *sn,float *p,float *x0,float *y0
128 ,int npass,float perclean,int lp);
129
130#ifdef __cplusplus
131}
132#endif
133
134#endif
Note: See TracBrowser for help on using the repository browser.