IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 7, 2008, 3:31:01 PM (18 years ago)
Author:
eugene
Message:

big update from eam_branch_20081124 with updates to Opihi math

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/cmd.data/vstat.c

    r7917 r20936  
    55  int i, N;
    66  double max, min, sum, var, dvar, mean, stdev;
    7   float *X, IgnoreValue;
     7  float IgnoreValue;
    88  int Ignore, Quiet;
    99
     
    4141
    4242  /* calculate max, min, mean, sum, npix */
    43   X = vec[0].elements;
    4443  max = -HUGE_VAL;
    4544  min = HUGE_VAL;
    4645  sum = N = 0;
    47   for (i = 0; i < vec[0].Nelements; i++, X++) {
    48     if (!finite (*X)) continue;
    49     if (Ignore && (*X == IgnoreValue)) continue;
    50     max = MAX (*X, max);
    51     min = MIN (*X, min);
    52     sum += *X;
    53     N++;
    54   }     
     46  if (vec[0].type == OPIHI_FLT) {
     47    opihi_flt *X = vec[0].elements.Flt;
     48    for (i = 0; i < vec[0].Nelements; i++, X++) {
     49      if (!finite (*X)) continue;
     50      if (Ignore && (*X == IgnoreValue)) continue;
     51      max = MAX (*X, max);
     52      min = MIN (*X, min);
     53      sum += *X;
     54      N++;
     55    }     
     56  } else {
     57    opihi_int *X = vec[0].elements.Int;
     58    for (i = 0; i < vec[0].Nelements; i++, X++) {
     59      if (!finite (*X)) continue;
     60      if (Ignore && (*X == IgnoreValue)) continue;
     61      max = MAX (*X, max);
     62      min = MIN (*X, min);
     63      sum += *X;
     64      N++;
     65    }     
     66  }
    5567  mean = sum / N;
    5668
     
    6577  ALLOCATE (Nval, int, 1002);
    6678  bzero (Nval, 1000*sizeof(int));
    67   X = vec[0].elements;
    6879  var = 0;
    69   for (i = 0; i < vec[0].Nelements; i++, X++) {
    70     if (!finite (*X)) continue;
    71     if (Ignore && (*X == IgnoreValue)) continue;
    72     bin = MAX (0, MIN (1000, (*X - min) / dx));
    73     Nval[bin] ++;
    74     dvar = (*X - mean);
    75     var += dvar*dvar;
    76   }     
     80  if (vec[0].type == OPIHI_FLT) {
     81    opihi_flt *X = vec[0].elements.Flt;
     82    for (i = 0; i < vec[0].Nelements; i++, X++) {
     83      if (!finite (*X)) continue;
     84      if (Ignore && (*X == IgnoreValue)) continue;
     85      bin = MAX (0, MIN (1000, (*X - min) / dx));
     86      Nval[bin] ++;
     87      dvar = (*X - mean);
     88      var += dvar*dvar;
     89    }     
     90  } else {
     91    opihi_int *X = vec[0].elements.Int;
     92    for (i = 0; i < vec[0].Nelements; i++, X++) {
     93      if (!finite (*X)) continue;
     94      if (Ignore && (*X == IgnoreValue)) continue;
     95      bin = MAX (0, MIN (1000, (*X - min) / dx));
     96      Nval[bin] ++;
     97      dvar = (*X - mean);
     98      var += dvar*dvar;
     99    }     
     100  }
    77101  stdev = sqrt (var / N);
    78102
Note: See TracChangeset for help on using the changeset viewer.