33 #include "floatmath.h"
35 static void sortit (
float [],
int);
80 extern void seeing(ap_t *ap,
int nrows,
float *ellipt,
float *pkht,
81 float **areal,
float *work,
float *fwhm) {
83 float aper,delaper,area,logf5t,logf2,arg;
87 logf5t = logf(0.5/ap->thresh);
93 for (i = 0; i < nrows; i++) {
94 if (ellipt[i] < 0.2 && pkht[i] < 30000.0 && pkht[i] > 10.0*ap->thresh) {
95 aper = (logf5t + logf(pkht[i]))/logf2 + 1.0;
97 delaper = aper - iaper;
98 if (iaper > 0 && iaper < NAREAL && areal[1][i] > 0.0) {
99 area = (1.0-delaper)*areal[iaper-1][i] +
100 delaper*areal[iaper][i];
101 work[ii++] = CPL_MATH_2_SQRTPI*sqrtf(area);
111 *fwhm = work[ii/3 - 1];
115 arg = 0.25*CPL_MATH_PI*powf(*fwhm,2.0) - 1;
116 *fwhm = 2.0*sqrt(MAX(0.0,arg/CPL_MATH_PI));
124 static void sortit (
float ia[],
int n) {
125 int i, j, ii, jj, ifin;
131 jj = MIN(n,(3 * jj)/4 - 1);
135 for (ii = 0; ii < ifin; ii++) {
147 }
while (ia[i] > it);
void seeing(ap_t *ap, int nrows, float *ellipt, float *pkht, float **areal, float *work, float *fwhm)
Work out the median seeing.