Go to the documentation of this file.
123 for(
j=0;
j < jhigh-1;
j=jp1)
132 term = biatx[
i]/(deltar[
i] + deltal[
j-
i]);
133 biatx[
i] = saved + deltar[
i]*
term;
243 int i,
j,
k, ipk, jmax, midmk;
245 double factor, pivot;
247 if(nrowm1<1 ||
nband <1)
251 for(
i=0;
i<nrowm1;
i++)
255 for(
j=0;
j<jmax;
j++)
258 for(
k=0;
k<jmax;
k++)
262 factor = w[ipk][midmk-1];
263 for(
j=0;
j<jmax;
j++)
264 w[ipk][midmk+
j] -= w[
i][
nband+
j+1]*factor;
352 int i,
j, jmax, nrowm1;
361 for(
i=0;
i<nrowm1;
i++)
364 for(
j=1;
j<=jmax;
j++)
370 for(
i=0;
i<nrow;
i++)
377 for(
i=nrow-1;
i>0;
i--)
381 for(
j=1;
j<=jmax;
j++)
477 int i, ilp1mx,
j, kpkm2,
left;
484 for(
j=0;
j<=kpkm2;
j++)
491 ilp1mx = (
i+
k<n) ?
i+
k-1 : n-1;
499 return IMSL_KNOT_DATA_INTERLACING;
501 while(taui >=
t[
left+1] &&
left < ilp1mx)
505 return IMSL_KNOT_DATA_INTERLACING;
507 bsplvb(
t,
k, taui,
left, bcoef);
514 memcpy(bcoef, gtau, n*
sizeof(
double));
515 banslv(
q, n,
k-1, bcoef);
626 #if __STDC_VERSION__ < 199901L
630 #define HACK_LENGTH 1
640 int order, num_coef, num_knots;
645 spline_wrap *pspline;
649 const double *knots=
NULL;
658 while((arg=va_arg(ap,
int)))
661 order = va_arg(ap,
int);
662 else if(arg==IMSL_KNOTS)
663 knots = va_arg(ap,
double*);
712 pspline = (spline_wrap*) malloc(
713 offsetof(spline_wrap,hack)+(2*ndata+order)*
sizeof(
double));
720 pspline->spline.domain_dim = 1;
721 pspline->spline.target_dim = 1;
722 pspline->spline.order = &pspline->order;
723 pspline->spline.num_coef = &pspline->num_coef;
724 pspline->spline.num_knots = &pspline->num_knots;
725 pspline->spline.knots = &pspline->knots;
726 pspline->spline.coef = &pspline->coef;
728 pspline->order = order;
729 pspline->num_coef = ndata;
730 pspline->num_knots = order+ndata;
731 pspline->knots = pspline->hack;
738 pspline->coef = pspline->hack+ndata+order;
739 memcpy(pspline->hack, knots, (ndata+order)*
sizeof(
double));
741 epsilon = (knots[ndata+order-1]-knots[0]) / pow(
DBL_MAX,1.0/(
double)order);
752 for(
i=0;
i<ndata-1;
i++)
754 if(xdata[
i+1] < xdata[
i])
758 return &pspline->spline;
764 return &pspline->spline;
768 for(
i=0;
i<ndata+order-1;
i++)
769 if(knots[
i+1] < knots[
i])
775 return &pspline->spline;
778 for(
i=0;
i<ndata;
i++)
783 return &pspline->spline;
792 if(xdata[
i] > knots[ndata])
795 return &pspline->spline;
798 if(xdata[
i] < knots[order-1])
801 return &pspline->spline;
805 for(
i=0;
i<ndata;
i++)
811 return &pspline->spline;
subroutine spline(s, x, y, n, in, t, il, iu, vl, vu, e, u)
Imsl_code IMSL_error_code
PGE01 indicating that PGE02 PGE01 V6 for and PGE01 V2 for MOD03 were used to produce the granule By convention adopted in all MODIS Terra PGE02 code versions are The fourth digit of the PGE02 version denotes the LUT version used to produce the granule The source of the metadata environment variable ProcessingCenter was changed from a QA LUT value to the Process Configuration A sign used in error in the second order term was changed to already in place for MODIS TERRA was implemented for MODIS AQUA A time dependent LUT was added which gives coefficients for a detector specific crosstalk correction based on the aggregated Band radiances The Band scaled integers are adjusted by the Band correction term
Imsl_d_spline *IMSL_DECL imsl_d_spline_interp(int ndata, double xdata[], double fdata[],...)
#define MAX_IMPULSE_NUMBER
subroutine splint(xa, ya, y2a, n, x, y)