65 float* chisq,
float* siga,
float* sigb,
float* sigc )
68 double sumx, sumx2, sumx3, sumx4, sumy, sumyx, sumyx2, det;
99 for ( i = 0; i <
n; i++ )
101 sumx = sumx +
w[i] * x[i];
102 sumx2 = sumx2 +
w[i] * x[i] * x[i];
103 sumx3 = sumx3 +
w[i] * x[i] * x[i] * x[i];
104 sumx4 = sumx4 +
w[i] * x[i] * x[i] * x[i] * x[i];
105 sumy = sumy +
w[i] * y[i];
106 sumyx = sumyx +
w[i] * y[i] * x[i];
107 sumyx2 = sumyx2 +
w[i] * y[i] * x[i] * x[i];
113 HepMatrix D( 3, 3, 1 );
114 HepMatrix
C( 3, 1 ), ABC( 3, 1 );
116 D( 1, 2 ) = D( 2, 1 ) = sumx3;
117 D( 1, 3 ) = D( 3, 1 ) = D( 2, 2 ) = sumx2;
118 D( 3, 2 ) = D( 2, 3 ) = sumx;
125 ABC = ( D.inverse( ierr ) ) *
C;
132 float center = *b / ( -2 * ( *a ) );
134 for ( i = 0; i <
n; i++ ) { mean_x += x[i] /
n; }
136 if ( mean_x > center ) *half = 2;
143 for ( i = 0; i <
n; i++ )
146 chi + (
w[i] ) * ( ( y[i] ) - *a * ( x[i] ) - *b ) * ( ( y[i] ) - *a * ( x[i] ) - *b );
int QuadFit(float x[], float y[], float w[], int n, float *a, float *b, float *c, int *half, float *chisq, float *siga, float *sigb, float *sigc)