IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 20857


Ignore:
Timestamp:
Nov 30, 2008, 7:45:21 AM (17 years ago)
Author:
eugene
Message:

modify functions to use both int and flt vectors

Location:
branches/eam_branch_20081124/Ohana/src/opihi
Files:
58 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.astro/cgrid.c

    r20839 r20857  
    391391  graphmode.ptype = 100; /* connect a pair */
    392392  graphmode.etype = 0;
    393   PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     393  PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    394394
    395395  free (Xvec.elements.Flt);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.astro/cplot.c

    r20839 r20857  
    2323  if ((yvec = SelectVector (argv[2], OLDVECTOR, TRUE)) == NULL) return (FALSE);
    2424
     25  REQUIRE_VECTOR_FLT (xvec, FALSE);
     26  REQUIRE_VECTOR_FLT (yvec, FALSE);
     27
    2528  if (xvec[0].Nelements != yvec[0].Nelements) {
    2629    gprint (GP_ERR, "vectors are not the same length\n");
     
    4144  Npts = 0;
    4245  for (i = 0; i < Xvec.Nelements; i++, r++, d++) {
    43       *r = ohana_normalize_angle (*r);
     46    *r = ohana_normalize_angle (*r);
    4447    while (*r < Rmin) *r += 360.0;
    4548    while (*r > Rmax) *r -= 360.0;
     
    7780
    7881  graphmode.etype = 0;
    79   PlotVectorPair (kapa, Npts, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     82  PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    8083 
    8184  free (Xvec.elements.Flt);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.astro/czplot.c

    r20839 r20857  
    33int czplot (int argc, char **argv) {
    44 
    5   int i, kapa, Npts;
     5  int i, kapa;
    66  double min, range, Rmin, Rmax;
    7   opihi_flt *in, *out, *r, *d, *x, *y;
     7  opihi_flt *out, *r, *d, *x, *y;
    88  Vector Xvec, Yvec, Zvec, *xvec, *yvec, *zvec;
    99  Graphdata graphmode;
     
    2626  if ((zvec = SelectVector (argv[3], OLDVECTOR, TRUE)) == NULL) return (FALSE);
    2727
     28  REQUIRE_VECTOR_FLT (xvec, FALSE);
     29  REQUIRE_VECTOR_FLT (yvec, FALSE);
     30
    2831  if (xvec[0].Nelements != yvec[0].Nelements) {
    2932    gprint (GP_ERR, "vectors %s and %s not the same length\n", argv[1], argv[2]);
     
    4346  r   = xvec[0].elements.Flt;
    4447  d   = yvec[0].elements.Flt;
    45   in  = zvec[0].elements.Flt;
    4648  x   = Xvec.elements.Flt;
    4749  y   = Yvec.elements.Flt;
    48   out = Zvec.elements.Flt;
    49   for (i = 0; i < Zvec.Nelements; i++, in++, out++, r++, d++, x++, y++) {
    50     *out = MIN (1.0, MAX (0.01, (*in - min) / range));
     50  for (i = 0; i < Zvec.Nelements; i++, r++, d++, x++, y++) {
    5151    *r = ohana_normalize_angle (*r);
    5252    RD_to_XY (x, y, *r, *d, &graphmode.coords);
     53  }
     54
     55  out = Zvec.elements.Flt;
     56  if (zvec->type == OPIHI_FLT) {
     57    opihi_flt *in  = zvec[0].elements.Flt;
     58    for (i = 0; i < Zvec.Nelements; i++, in++, out++) {
     59      *out = MIN (1.0, MAX (0.01, (*in - min) / range));
     60    }
     61  } else {
     62    opihi_int *in  = zvec[0].elements.Int;
     63    for (i = 0; i < Zvec.Nelements; i++, in++, out++) {
     64      *out = MIN (1.0, MAX (0.01, (*in - min) / range));
     65    }
    5366  }
    5467
     
    5669  graphmode.size = -1; /* point size determined by Zvec */
    5770  graphmode.etype = 0;
    58   Npts = Xvec.Nelements;
    59   PlotVectorTriplet (kapa, Npts, Xvec.elements.Flt, Yvec.elements.Flt, Zvec.elements.Flt, &graphmode);
     71  PlotVectorTriplet (kapa, Xvec, Yvec, Zvec, &graphmode);
    6072
    6173  free (Xvec.elements.Flt);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/grid.c

    r20839 r20857  
    193193  graphmode.ptype = 100; /* connect a pair */
    194194  graphmode.etype = 0;
    195   PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     195  PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    196196
    197197  free (Xvec.elements.Flt);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/interpolate.c

    r20839 r20857  
    2121  if ((yout = SelectVector (argv[4],  ANYVECTOR, TRUE)) == NULL) return (FALSE);
    2222
    23   yout[0].Nelements = xout[0].Nelements;
    24   REALLOCATE (yout[0].elements.Flt, opihi_flt, yout[0].Nelements);
     23  REQUIRE_VECTOR_FLT (in, FALSE);
     24  REQUIRE_VECTOR_FLT (xv, FALSE);
     25  REQUIRE_VECTOR_FLT (yv, FALSE);
     26  ResetVector (yout, OPIHI_FLT, xout[0].Nelements);
    2527
    2628  dx = xin[0].elements.Flt[1] - xin[0].elements.Flt[0];
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/lookup.c

    r20839 r20857  
    1717  if ((yv  = SelectVector (argv[4], OLDVECTOR, TRUE)) == NULL) return (FALSE);
    1818
     19  REQUIRE_VECTOR_FLT (in, FALSE);
     20  REQUIRE_VECTOR_FLT (xv, FALSE);
     21  REQUIRE_VECTOR_FLT (yv, FALSE);
     22
    1923  if (xv[0].Nelements != yv[0].Nelements) {
    2024      gprint (GP_ERR, "unmatched lookup table lengths\n");
     
    2226  }
    2327
    24   out[0].Nelements = in[0].Nelements;
    25   REALLOCATE (out[0].elements.Flt, opihi_flt, out[0].Nelements);
     28  ResetVector (out, OPIHI_FLT, in[0].Nelements);
    2629
    2730  ip = in[0].elements.Flt;
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/medacc.c

    r20839 r20857  
    2121  if ((out = SelectVector (argv[2], ANYVECTOR, TRUE)) == NULL) return (FALSE);
    2222
     23  REQUIRE_VECTOR_FLT (val, FALSE);
     24  REQUIRE_VECTOR_FLT (key, FALSE);
     25
    2326  start = atof (argv[4]);
    2427  end   = atof (argv[5]);
     
    3437  Nbins = 1 + (int)((end - start) / delta);
    3538
    36   out[0].Nelements = Nbins;
    37   REALLOCATE (out[0].elements.Flt, opihi_flt, out[0].Nelements);
     39  ResetVector (out, OPIHI_FLT, Nbins);
    3840  bzero (out[0].elements.Flt, sizeof(opihi_flt)*out[0].Nelements);
    3941
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/mget.c

    r20839 r20857  
    3333
    3434  if (xdir) {
    35     vec[0].Nelements = Npix = Nx;
    36     REALLOCATE (vec[0].elements.Flt, opihi_flt, Npix);
     35    Npix = Nx;
     36    ResetVector (vec, OPIHI_FLT, Nx);
    3737    if (Nset >= Ny) {
    3838      gprint (GP_ERR, "row out of range\n");
     
    4545    }
    4646  } else {
    47     vec[0].Nelements = Npix = Ny;
    48     REALLOCATE (vec[0].elements.Flt, opihi_flt, Npix);
     47    Npix = Ny;
     48    ResetVector (vec, OPIHI_FLT, Ny);
    4949    if (Nset >= Nx) {
    5050      gprint (GP_ERR, "column out of range\n");
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/mset.c

    r20839 r20857  
    44 
    55  int i, Nx, Ny, Npix, xdir, Nset;
    6   opihi_flt *in;
    76  float *out;
    87  Buffer *buf;
     
    4342    }
    4443    out = (float *) buf[0].matrix.buffer + Nx*Nset;
    45     in = vec[0].elements.Flt;
    46     for (i = 0; i < Npix; i++, in++, out++) {
    47       *out = *in;
     44
     45    if (vec[0].type == OPIHI_FLT) {
     46      opihi_flt *in = vec[0].elements.Flt;
     47      for (i = 0; i < Npix; i++, in++, out++) {
     48        *out = *in;
     49      }
     50    } else {
     51      opihi_int *in = vec[0].elements.Int;
     52      for (i = 0; i < Npix; i++, in++, out++) {
     53        *out = *in;
     54      }
    4855    }
    4956    return (TRUE);
     57
    5058  } else {
    5159    if (Ny != Npix) {
     
    5866    }
    5967    out = (float *) buf[0].matrix.buffer + Nset;
    60     in = vec[0].elements.Flt;
    61     for (i = 0; i < Npix; i++, in++, out+=Nx) {
    62       *out = *in;
     68
     69    if (vec[0].type == OPIHI_FLT) {
     70      opihi_flt *in = vec[0].elements.Flt;
     71      for (i = 0; i < Npix; i++, in++, out+=Nx) {
     72        *out = *in;
     73      }
     74    } else {
     75      opihi_int *in = vec[0].elements.Int;
     76      for (i = 0; i < Npix; i++, in++, out+=Nx) {
     77        *out = *in;
     78      }
    6379    }
    6480    return (TRUE);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/peak.c

    r20839 r20857  
    2626    end   = atof (argv[4]);
    2727  } else {
    28     start = vecx[0].elements.Flt[0];
    29     end   = vecx[0].elements.Flt[vecx[0].Nelements - 1];
     28    start = (vecx[0].type == OPIHI_FLT) ? vecx[0].elements.Flt[0] : vecx[0].elements.Int[0];
     29    end   = (vecx[0].type == OPIHI_FLT) ? vecx[0].elements.Flt[vecx[0].Nelements - 1] : vecx[0].elements.Int[vecx[0].Nelements - 1];
    3030  }
    3131
    32   X = vecx[0].elements.Flt;
    33   Y = vecy[0].elements.Flt;
     32  imax = -1;
    3433
    35   imax = -1;
    36   xmax = *X;
    37   ymax = *Y;
    38   for (i = 1; i < vecx[0].Nelements-1; i++, X++, Y++) {
    39     if ((*X >= start) && (*X <= end)) {
    40       if ((imax == -1) || (*Y > ymax)) {
    41         xmax = *X;
    42         ymax = *Y;
    43         imax = i;
     34  if (vecx[0].type == OPIHI_FLT) {
     35    opihi_flt *X = vecx[0].elements.Flt;
     36    xmax = X[start];
     37    ymax = (vecy[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[start] : vecy[0].elements.Int[start];
     38    for (i = 1; i < vecx[0].Nelements-1; i++, X++, Y++) {
     39      if ((*X >= start) && (*X <= end)) {
     40        if ((imax == -1) || (*Y > ymax)) {
     41          xmax = *X;
     42          ymax = (vecy[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[i] : vecy[0].elements.Int[i];
     43          imax = i;
     44        }
    4445      }
    45     }
    46   }     
     46    }     
     47  } else {
     48    opihi_int *X = vecx[0].elements.Int;
     49    xmax = X[start];
     50    ymax = (vecy[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[start] : vecy[0].elements.Int[start];
     51    for (i = 1; i < vecx[0].Nelements-1; i++, X++, Y++) {
     52      if ((*X >= start) && (*X <= end)) {
     53        if ((imax == -1) || (*Y > ymax)) {
     54          xmax = *X;
     55          ymax = (vecy[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[i] : vecy[0].elements.Int[i];
     56          imax = i;
     57        }
     58      }
     59    }     
     60  }
    4761
    4862  set_variable ("peakval", ymax);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/periodogram.c

    r20839 r20857  
    2828  if ((power = SelectVector (argv[6], ANYVECTOR, TRUE)) == NULL) return (FALSE);
    2929
     30  REQUIRE_VECTOR_FLT (time, FALSE);
     31  REQUIRE_VECTOR_FLT (flux, FALSE);
     32
    3033  /* find the max baseline, mean, and variance */
    3134  minT = maxT = time[0].elements.Flt[0];
     
    5659  Np = 0;
    5760  NP = 100;
    58   REALLOCATE (power[0].elements.Flt, opihi_flt, NP);
    59   REALLOCATE (period[0].elements.Flt, opihi_flt, NP);
     61  ResetVector (power,  OPIHI_FLT, NP);
     62  ResetVector (period, OPIHI_FLT, NP);
    6063
    6164  P = minP;
     
    106109  }
    107110
    108   power[0].Nelements = Np;
    109   period[0].Nelements = Np;
    110   REALLOCATE (power[0].elements.Flt, opihi_flt, Np);
    111   REALLOCATE (period[0].elements.Flt, opihi_flt, Np);
     111  ResetVector (power,  OPIHI_FLT, Np);
     112  ResetVector (period, OPIHI_FLT, Np);
    112113 
    113114  return (TRUE);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/plot.c

    r20839 r20857  
    5858  if (!KapaPrepPlot (kapa, Npts, &graphmode)) return (FALSE);
    5959 
    60   PlotVectorSingle (kapa, Npts, xvec[0].elements.Flt, "x");
    61   PlotVectorSingle (kapa, Npts, yvec[0].elements.Flt, "y");
     60  PlotVectorSingle (kapa, xvec, "x");
     61  PlotVectorSingle (kapa, yvec, "y");
    6262  if (graphmode.etype & 0x01) {
    63     PlotVectorSingle (kapa, Npts, dymvec[0].elements.Flt, "dym");
    64     PlotVectorSingle (kapa, Npts, dypvec[0].elements.Flt, "dyp");
     63    PlotVectorSingle (kapa, dymvec, "dym");
     64    PlotVectorSingle (kapa, dypvec, "dyp");
    6565  }
    6666  if (graphmode.etype & 0x02) {
    67     PlotVectorSingle (kapa, Npts, dxmvec[0].elements.Flt, "dxm");
    68     PlotVectorSingle (kapa, Npts, dxpvec[0].elements.Flt, "dxp");
     67    PlotVectorSingle (kapa, dxmvec, "dxm");
     68    PlotVectorSingle (kapa, dxpvec, "dxp");
    6969  }
    7070  return (TRUE);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/read_vectors.c

    r20839 r20857  
    7070      return (FALSE);   
    7171    }
     72    // XXX we could allow flags (eg, N.i) to specify INT vs FLT types vectors...
    7273    colstr = argv[2*i+2];
    7374    for (j = 0; j < strlen (colstr); j++) {
     
    8182    col[i] = atof (colstr);
    8283  }
    83  
     84
     85  // currently, all read vectors are forced to be type FLT
    8486  NELEM = 1000;
    8587  for (i = 0; i < Nvec; i++) {
    86     REALLOCATE (vec[i][0].elements.Flt, opihi_flt, NELEM);
     88    ResetVector (vec[i], OPIHI_FLT, NELEM);
    8789  }
    8890 
     
    122124          status = dparse (&value, col[i], c0);
    123125          vec[i][0].elements.Flt[N] = value;
    124           if (!status) vec[i][0].elements.Flt[N] = 0.0/0.0;
     126          if (!status) vec[i][0].elements.Flt[N] = NAN;
    125127        }
    126128        if (status) N++;
     
    260262    }
    261263    if (Nval == 0) ESCAPE ("no data for field in table");
    262 
     264   
     265    vecType = OPIHI_INT;
     266    if (!strcmp (type, "double") || !strcmp (type, "float")) {
     267      vecType = OPIHI_FLT;
     268    }
     269       
     270    // define the multifield vector names
    263271    ALLOCATE (vec, Vector *, Nval);
    264272    for (j = 0; j < Nval; j++) {
     
    268276        sprintf (name, "%s:%d", argv[i], j);
    269277      if ((vec[j] = SelectVector (name, ANYVECTOR, TRUE)) == NULL) ESCAPE ("bad vector name");
    270       REALLOCATE (vec[j][0].elements.Flt, opihi_flt, MAX (Ny,1));
    271       vec[j][0].Nelements = Ny;
     278      ResetVector (vec[j], vecType, MAX (Ny,1));
    272279    }
    273280
     
    292299      for (j = 0; j < Ny; j++) {
    293300        for (k = 0; k < Nval; k++, Pi++) {
    294           vec[k][0].elements.Flt[j] = *Pi;
     301          vec[k][0].elements.Int[j] = *Pi;
    295302        }
    296303      }
     
    300307      for (j = 0; j < Ny; j++) {
    301308        for (k = 0; k < Nval; k++, Ps++) {
    302           vec[k][0].elements.Flt[j] = *Ps;
     309          vec[k][0].elements.Int[j] = *Ps;
    303310        }
    304311      }
     
    308315      for (j = 0; j < Ny; j++) {
    309316        for (k = 0; k < Nval; k++, Pc++) {
    310           vec[k][0].elements.Flt[j] = *Pc;
     317          vec[k][0].elements.Int[j] = *Pc;
    311318        }
    312319      }
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/select.c

    r20839 r20857  
    2727  /* check size of in1, in2, tvec: must match */
    2828
    29   REALLOCATE (ovec[0].elements.Flt, opihi_flt, MAX (tvec[0].Nelements, 1));
    30   for (i = 0; i < tvec[0].Nelements; i++) {
    31     ovec[0].elements.Flt[i] = tvec[0].elements.Flt[i] ? in1[0].elements.Flt[i] : in2[0].elements.Flt[i];
     29  if ((in1->type == OPIHI_INT) && (in2->type == OPIHI_INT)) {
     30    ResetVector (ovec, OPIHI_INT, MAX (tvec[0].Nelements, 1));
     31  } else {
     32    ResetVector (ovec, OPIHI_FLT, MAX (tvec[0].Nelements, 1));
    3233  }
    33   ovec[0].Nelements = tvec[0].Nelements;
    34   REALLOCATE (ovec[0].elements.Flt, opihi_flt, MAX (ovec[0].Nelements, 1));
     34
     35  // (in1 and in2) == (flt or int) and tvec == (flt or int)
     36  if ((in1->type == OPIHI_FLT) && (in2->type == OPIHI_FLT) && (tvec->type == OPIHI_FLT)) {
     37    for (i = 0; i < tvec[0].Nelements; i++) {
     38      ovec[0].elements.Flt[i] = tvec[0].elements.Flt[i] ? in1[0].elements.Flt[i] : in2[0].elements.Flt[i];
     39    }
     40  }
     41  if ((in1->type == OPIHI_FLT) && (in2->type == OPIHI_FLT) && (tvec->type == OPIHI_INT)) {
     42    for (i = 0; i < tvec[0].Nelements; i++) {
     43      ovec[0].elements.Flt[i] = tvec[0].elements.Int[i] ? in1[0].elements.Flt[i] : in2[0].elements.Flt[i];
     44    }
     45  }
     46  if ((in1->type == OPIHI_INT) && (in2->type == OPIHI_FLT) && (tvec->type == OPIHI_FLT)) {
     47    for (i = 0; i < tvec[0].Nelements; i++) {
     48      ovec[0].elements.Flt[i] = tvec[0].elements.Flt[i] ? in1[0].elements.Int[i] : in2[0].elements.Flt[i];
     49    }
     50  }
     51  if ((in1->type == OPIHI_INT) && (in2->type == OPIHI_FLT) && (tvec->type == OPIHI_INT)) {
     52    for (i = 0; i < tvec[0].Nelements; i++) {
     53      ovec[0].elements.Flt[i] = tvec[0].elements.Int[i] ? in1[0].elements.Int[i] : in2[0].elements.Flt[i];
     54    }
     55  }
     56  if ((in1->type == OPIHI_FLT) && (in2->type == OPIHI_INT) && (tvec->type == OPIHI_FLT)) {
     57    for (i = 0; i < tvec[0].Nelements; i++) {
     58      ovec[0].elements.Flt[i] = tvec[0].elements.Flt[i] ? in1[0].elements.Flt[i] : in2[0].elements.Int[i];
     59    }
     60  }
     61  if ((in1->type == OPIHI_FLT) && (in2->type == OPIHI_INT) && (tvec->type == OPIHI_INT)) {
     62    for (i = 0; i < tvec[0].Nelements; i++) {
     63      ovec[0].elements.Flt[i] = tvec[0].elements.Int[i] ? in1[0].elements.Flt[i] : in2[0].elements.Int[i];
     64    }
     65  }
     66  if ((in1->type == OPIHI_INT) && (in2->type == OPIHI_INT) && (tvec->type == OPIHI_FLT)) {
     67    for (i = 0; i < tvec[0].Nelements; i++) {
     68      ovec[0].elements.Int[i] = tvec[0].elements.Flt[i] ? in1[0].elements.Int[i] : in2[0].elements.Int[i];
     69    }
     70  }
     71  if ((in1->type == OPIHI_INT) && (in2->type == OPIHI_INT) && (tvec->type == OPIHI_INT)) {
     72    for (i = 0; i < tvec[0].Nelements; i++) {
     73      ovec[0].elements.Int[i] = tvec[0].elements.Int[i] ? in1[0].elements.Int[i] : in2[0].elements.Int[i];
     74    }
     75  }
    3576 
    3677  DeleteVector (tvec);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/sort.c

    r20839 r20857  
    11# include "data.h"
    22
    3 void sortindex (double *X, int *IDX, int N) {
     3void fsortindex (opihi_flt *X, int *IDX, int N) {
    44
    5 # define SWAPFUNC(A,B){ double tmp; int itmp;   \
     5# define SWAPFUNC(A,B){ opihi_flt tmp; int itmp;        \
     6  tmp = X[A]; X[A] = X[B]; X[B] = tmp; \
     7  itmp = IDX[A]; IDX[A] = IDX[B]; IDX[B] = itmp; \
     8}
     9# define COMPARE(A,B)(X[A] < X[B])
     10
     11  OHANA_SORT (N, COMPARE, SWAPFUNC);
     12
     13# undef SWAPFUNC
     14# undef COMPARE
     15
     16}
     17
     18void isortindex (opihi_int *X, int *IDX, int N) {
     19
     20# define SWAPFUNC(A,B){ opihi_int tmp; int itmp;        \
    621  tmp = X[A]; X[A] = X[B]; X[B] = tmp; \
    722  itmp = IDX[A]; IDX[A] = IDX[B]; IDX[B] = itmp; \
     
    1934 
    2035  int i, j, Nvec, Nval;
    21   opihi_flt *temp, *T, *V;
     36  opihi_flt *ftemp;
     37  opihi_int *itemp;
    2238  int *index, *I;
    2339  Vector **vec;
     
    5167  }
    5268 
    53   /* create index (use float to use sortpair) */
     69  /* create index */
    5470  ALLOCATE (index, int, Nval);
    5571  for (i = 0; i < Nval; i++) index[i] = i;
    5672
    5773  /* sort key & index */
    58   sortindex (vec[0][0].elements.Flt, index, Nval);
     74  if (vec[0][0].type == OPIHI_FLT) {
     75    fsortindex (vec[0][0].elements.Flt, index, Nval);
     76  } else {
     77    isortindex (vec[0][0].elements.Int, index, Nval);
     78  }
    5979
    60   ALLOCATE (temp, opihi_flt, Nval);
     80  ALLOCATE (ftemp, opihi_flt, Nval);
     81  ALLOCATE (itemp, opihi_int, Nval);
     82
    6183  for (i = 1; i < Nvec; i++) {
    62     T = temp;
    63     V = vec[i][0].elements.Flt;
    64     I = index;
    65     for (j = 0; j < Nval; j++, T++, I++) {
    66       *T = V[*I];
     84    if (vec[i][0].type == OPIHI_FLT) {
     85      opihi_flt *T = ftemp;
     86      opihi_flt *V = vec[i][0].elements.Flt;
     87      I = index;
     88      for (j = 0; j < Nval; j++, T++, I++) {
     89        *T = V[*I];
     90      }
     91      /* swap .elements.Flt (== V) and ftemp */
     92      vec[i][0].elements.Flt = ftemp;
     93      ftemp = V;
     94    } else {
     95      opihi_int *T = itemp;
     96      opihi_int *V = vec[i][0].elements.Int;
     97      I = index;
     98      for (j = 0; j < Nval; j++, T++, I++) {
     99        *T = V[*I];
     100      }
     101      /* swap .elements.Flt (== V) and itemp */
     102      vec[i][0].elements.Flt = itemp;
     103      itemp = V;
    67104    }
    68     /* swap .elements.Flt (== V) and temp */
    69     vec[i][0].elements.Flt = temp;
    70     temp = V;
    71105  }
    72106  free (temp);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/subset.c

    r20839 r20857  
    66 
    77  char *out;
    8   int  i, j, size;
     8  int  i, Npts, size;
    99  Vector *ivec, *ovec, *tvec;
    1010
     
    2828  /* check size of ivec, tvec: must match */
    2929
    30   REALLOCATE (ovec[0].elements.Flt, opihi_flt, MAX (tvec[0].Nelements, 1));
    31   for (j = i = 0; i < tvec[0].Nelements; i++) {
    32     if (tvec[0].elements.Flt[i]) {
    33       ovec[0].elements.Flt[j] = ivec[0].elements.Flt[i];
    34       j++;
     30  // ovec matches ivec in type
     31  ResetVector (ovec, ivec->type, MAX (tvec[0].Nelements, 1));
     32
     33  // we have four cases: (ivec == flt or int) and (tvec == flt or int)
     34  if ((ivec->type == OPIHI_FLT) && (tvec->type == OPIHI_FLT)) {
     35    opihi_flt *vi = ivec[0].elements.Flt;
     36    opihi_flt *vt = tvec[0].elements.Flt;
     37    for (Npts = i = 0; i < tvec[0].Nelements; i++, vi++, vt++) {
     38      if (!*vt) continue;
     39      ovec[0].elements.Flt[Npts] = *vi;
     40      Npts++;
    3541    }
    3642  }
    37   ovec[0].Nelements = j;
    38   REALLOCATE (ovec[0].elements.Flt, opihi_flt, MAX (ovec[0].Nelements, 1));
     43  if ((ivec->type == OPIHI_FLT) && (tvec->type == OPIHI_INT)) {
     44    opihi_flt *vi = ivec[0].elements.Flt;
     45    opihi_int *vt = tvec[0].elements.Int;
     46    for (Npts = i = 0; i < tvec[0].Nelements; i++, vi++, vt++) {
     47      if (!*vt) continue;
     48      ovec[0].elements.Flt[Npts] = *vi;
     49      Npts++;
     50    }
     51  }
     52  if ((ivec->type == OPIHI_INT) && (tvec->type == OPIHI_FLT)) {
     53    opihi_int *vi = ivec[0].elements.Int;
     54    opihi_flt *vt = tvec[0].elements.Flt;
     55    for (Npts = i = 0; i < tvec[0].Nelements; i++, vi++, vt++) {
     56      if (!*vt) continue;
     57      ovec[0].elements.Int[Npts] = *vi;
     58      Npts++;
     59    }
     60  }
     61  if ((ivec->type == OPIHI_INT) && (tvec->type == OPIHI_INT)) {
     62    opihi_int *vi = ivec[0].elements.Int;
     63    opihi_int *vt = tvec[0].elements.Int;
     64    for (Npts = i = 0; i < tvec[0].Nelements; i++, vi++, vt++) {
     65      if (!*vt) continue;
     66      ovec[0].elements.Int[Npts] = *vi;
     67      Npts++;
     68    }
     69  }
     70
     71  // free up unused memory
     72  ResetVector (ovec, ivec->type, MAX (Npts, 1));
    3973
    4074  DeleteVector (tvec);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/svd.c

    r20839 r20857  
    4343
    4444  /* w is Nx */
    45   Vw[0].Nelements = Nx;
    46   REALLOCATE (Vw[0].elements.Flt, opihi_flt, Nx);
     45  ResetVector (Vw, OPIHI_FLT, Nx);
    4746
    4847  /* pointers to the various arrays */
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/ungridify.c

    r20839 r20857  
    11# include "data.h"
    22
     3// XXX adapt this to accept an optional region to limit the areas, otherwise use the whole image
    34int ungridify (int argc, char **argv) {
    45
     
    1314  if (argc != 9) {
    1415    gprint (GP_ERR, "USAGE: ungridify buffer Xmin Xmax Ymin Ymax x y z\n");
     16    gprint (GP_ERR, "  convert a portion of an image to a collection a triplet of vectors\n");
    1517    return (FALSE);
    1618  }
     
    3032  if ((vy = SelectVector (argv[7], ANYVECTOR, TRUE)) == NULL) return (FALSE);
    3133  if ((vz = SelectVector (argv[8], ANYVECTOR, TRUE)) == NULL) return (FALSE);
    32   REALLOCATE (vx[0].elements.Flt, opihi_flt, Nx*Ny);
    33   REALLOCATE (vy[0].elements.Flt, opihi_flt, Nx*Ny);
    34   REALLOCATE (vz[0].elements.Flt, opihi_flt, Nx*Ny);
     34
     35  ResetVector (vx, OPIHI_FLT, Nx*Ny);
     36  ResetVector (vy, OPIHI_FLT, Nx*Ny);
     37  ResetVector (vz, OPIHI_FLT, Nx*Ny);
    3538
    3639  x = vx[0].elements.Flt;
     
    5255  if (n != Nx*Ny) {
    5356    gprint (GP_ERR, "error in ungrid: %d vs %d (%d x %d)\n", n, Nx*Ny, Nx, Ny);
     57    gprint (GP_ERR, "(this is probably a programming error in ungridify)\n");
    5458  }
    5559  vx[0].Nelements = vy[0].Nelements = vz[0].Nelements = n;
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/uniq.c

    r20839 r20857  
    44 
    55  int Nnew, i, j, found;
    6   opihi_flt *v1, *v2;
    76  Vector *ivec, *ovec;
    87
     
    1615
    1716  /* allocate the maximum possible needed */
    18   ALLOCATE (ovec[0].elements.Flt, opihi_flt, ivec[0].Nelements);
     17  ResetVector (out, ivec->type, ivec->Nelements);
    1918
    2019  Nnew = 0;
    21   v1 = ivec[0].elements.Flt;
    22   for (i = 0; i < ivec[0].Nelements; i++, v1++) {
    23     v2 = ovec[0].elements.Flt;
    24     found = FALSE;
    25     for (j = 0; !found && (j < Nnew); j++, v2++) {
    26       if (*v1 == *v2) found = TRUE;
     20
     21  if (ivec->type == OPIHI_FLT) {
     22    opihi_flt *v1 = ivec[0].elements.Flt;
     23    for (i = 0; i < ivec[0].Nelements; i++, v1++) {
     24      opihi_flt *v2 = ovec[0].elements.Flt;
     25      found = FALSE;
     26      for (j = 0; !found && (j < Nnew); j++, v2++) {
     27        if (*v1 == *v2) found = TRUE;
     28      }
     29      if (!found) {
     30        ovec[0].elements.Flt[Nnew] = *v1;
     31        Nnew ++;
     32      }
    2733    }
    28     if (!found) {
    29       ovec[0].elements.Flt[Nnew] = *v1;
    30       Nnew ++;
     34  } else {
     35    opihi_int *v1 = ivec[0].elements.Int;
     36    for (i = 0; i < ivec[0].Nelements; i++, v1++) {
     37      opihi_int *v2 = ovec[0].elements.Int;
     38      found = FALSE;
     39      for (j = 0; !found && (j < Nnew); j++, v2++) {
     40        if (*v1 == *v2) found = TRUE;
     41      }
     42      if (!found) {
     43        ovec[0].elements.Int[Nnew] = *v1;
     44        Nnew ++;
     45      }
    3146    }
    3247  }
    3348
    34   ovec[0].Nelements = Nnew;
    35   REALLOCATE (ovec[0].elements.Flt, opihi_flt, ovec[0].Nelements);
     49  // free up extra memory
     50  ResetVector (out, ivec->type, Nnew);
    3651
    3752  return (TRUE);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vbin.c

    r20839 r20857  
    4242  Nout = Nin / scale;
    4343
    44   REALLOCATE (out[0].elements.Flt, opihi_flt, Nout);
    45   out[0].Nelements = Nout;
     44  // re-binning creates a float vector
     45  ResetVector (out, OPIHI_FLT, in[0].Nelements);
    4646
    47   Vin  = in[0].elements.Flt;
    4847  Vout = out[0].elements.Flt;
    49   for (n = j = 0; j < Nout; j++, Vout++) {
    50     *Vout = 0;
    51     for (N = i = 0; (i < scale) && (n < Nin); n++, i++, Vin++) {
    52       if (!finite (*Vin)) continue;
    53       if (Ignore && (*Vin == IgnoreValue)) continue;
    54       *Vout += *Vin;
    55       N ++;
    56     }
    57     if (Normalize) {
    58       if (N > 0) {
    59         *Vout /= (opihi_flt) N;
    60       } else {
    61         *Vout = 0;
     48
     49  if (in[0].type == OPIHI_FLT) {
     50    opihi_flt *Vin  = in[0].elements.Flt;
     51    for (n = j = 0; j < Nout; j++, Vout++) {
     52      *Vout = 0;
     53      for (N = i = 0; (i < scale) && (n < Nin); n++, i++, Vin++) {
     54        if (!finite (*Vin)) continue;
     55        if (Ignore && (*Vin == IgnoreValue)) continue;
     56        *Vout += *Vin;
     57        N ++;
     58      }
     59      if (Normalize) {
     60        if (N > 0) {
     61          *Vout /= (opihi_flt) N;
     62        } else {
     63          *Vout = 0;
     64        }
     65      }
     66    }
     67  } else {
     68    opihi_int *Vin  = in[0].elements.Int;
     69    for (n = j = 0; j < Nout; j++, Vout++) {
     70      *Vout = 0;
     71      for (N = i = 0; (i < scale) && (n < Nin); n++, i++, Vin++) {
     72        if (!finite (*Vin)) continue;
     73        if (Ignore && (*Vin == IgnoreValue)) continue;
     74        *Vout += *Vin;
     75        N ++;
     76      }
     77      if (Normalize) {
     78        if (N > 0) {
     79          *Vout /= (opihi_flt) N;
     80        } else {
     81          *Vout = 0;
     82        }
    6283      }
    6384    }
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vclip.c

    r20839 r20857  
    33int vclip (int argc, char **argv) {
    44
    5   int i, Npix, DO_NAN, DO_INF, N;
     5  int i, Npix, DO_NAN, DO_INF, DO_CLIP, N;
    66  double min, Vmin, max, Vmax, nan_val, inf_val;
    77  opihi_flt *in;
     
    3333  if ((vec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE);
    3434
     35  DO_CLIP = FALSE;
    3536  if (argc == 6) {
    3637    min = atof (argv[2]);
     
    3839    max = atof (argv[4]);
    3940    Vmax = atof (argv[5]);
     41    DO_CLIP = TRUE;
    4042  }
    4143
     44  if (DO_NAN && vec[0].type == OPIHI_INT) {
     45    gprint (GP_ERR, "  warning : clipping on NAN is invalid for INT vectors\n");
     46    return (FALSE);
     47  }
     48   
     49  if (DO_INF && vec[0].type == OPIHI_INT) {
     50    gprint (GP_ERR, "  warning : clipping on INF is invalid for INT vectors\n");
     51    return (FALSE);
     52  }
     53   
    4254  Npix = vec[0].Nelements;
    43   in =   vec[0].elements.Flt;
    4455
    45   if (argc == 6) {
     56  if (vec[0].type == OPIHI_FLT) {
     57    opihi_flt *in =  vec[0].elements.Flt;
    4658    for (i = 0; i < Npix; i++, in++) {
    47       if (*in < min)
     59      if (DO_CLIP && (*in < min)) {
    4860        *in = Vmin;
    49       if (*in > max)
     61      }
     62      if (DO_CLIP && (*in > max)) {
    5063        *in = Vmax;
    51     }
    52   }
    53   in = vec[0].elements.Flt;
    54   if (DO_NAN) {
    55     for (i = 0; i < Npix; i++, in++) {
    56       if (isnan (*in)) {
     64      }
     65      if (!finite (*in) && DO_INF) {
     66        *in = inf_val;
     67      }
     68      if (isnan (*in) && DO_NAN) {
    5769        *in = nan_val;
    5870      }
    5971    }
    60   }
    61   in = vec[0].elements.Flt;
    62   if (DO_INF) {
     72  } else {
     73    opihi_int *in =  vec[0].elements.Int;
    6374    for (i = 0; i < Npix; i++, in++) {
    64       if (!finite (*in)) {
    65         *in = inf_val;
     75      if (DO_CLIP && (*in < min)) {
     76        *in = Vmin;
     77      }
     78      if (DO_CLIP && (*in > max)) {
     79        *in = Vmax;
    6680      }
    6781    }
    6882  }
    6983  return (TRUE);
    70 
    7184}
    72 
    73 
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vgauss.c

    r20839 r20857  
    4242  if ((ovec = SelectVector (argv[4], ANYVECTOR, TRUE)) == NULL) return (FALSE);
    4343
     44  REQUIRE_VECTOR_FLT (xvec, FALSE);
     45  REQUIRE_VECTOR_FLT (yvec, FALSE);
     46  REQUIRE_VECTOR_FLT (svec, FALSE);
     47
    4448  Npts = xvec[0].Nelements;
     49  ResetVector (ovec, OPIHI_FLT, Npts);
     50
    4551  ALLOCATE (dy, opihi_flt, Npts);
    46   REALLOCATE (ovec[0].elements.Flt, opihi_flt, Npts);
    4752
    4853  GET_VAR (par[0], "C0");
     
    5257  Npar = 4;
    5358
     59  // mrqmin takes the inverse variance (do not generate NANs)
    5460  v1 = svec[0].elements.Flt;
    5561  v2 = dy;
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vgrid.c

    r20839 r20857  
    1313  if (argc != 11) {
    1414    gprint (GP_ERR, "USAGE: vgrid x y z buffer Xmin Xmax dX Ymin Ymax dY\n");
     15    gprint (GP_ERR, "  re-grid values from a triplet of vectors (x,y,z) into an image\n");
     16    gprint (GP_ERR, "  the vectors must be floating-point type\n");
    1517    return (FALSE);
    1618  }
     
    2325  if (vx[0].Nelements != vy[0].Nelements) return (FALSE);
    2426  if (vx[0].Nelements != vz[0].Nelements) return (FALSE);
     27
     28  REQUIRE_VECTOR_FLT (vx, FALSE);
     29  REQUIRE_VECTOR_FLT (vy, FALSE);
     30  REQUIRE_VECTOR_FLT (vz, FALSE);
    2531
    2632  Xmin = atof (argv[5]);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vload.c

    r20839 r20857  
    8282    overlay[i].type = type;
    8383    overlay[i].text = NULL;
    84     overlay[i].x = vecx[0].elements.Flt[i]+0.5;
    85     overlay[i].y = vecy[0].elements.Flt[i]+0.5;
     84    overlay[i].x = (vec[0].type == OPIHI_FLT) ? vecx[0].elements.Flt[i] : vecx[0].elements.Int[i];
     85    overlay[i].y = (vec[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[i] : vecy[0].elements.Int[i];
     86    overlay[i].x += 0.5;
     87    overlay[i].y += 0.5;
    8688    overlay[i].dx = dx;
    8789    overlay[i].dy = dy;
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vmaxwell.c

    r20839 r20857  
    4242  if ((ovec = SelectVector (argv[4], ANYVECTOR, TRUE)) == NULL) return (FALSE);
    4343
     44  REQUIRE_VECTOR_FLT (xvec, FALSE);
     45  REQUIRE_VECTOR_FLT (yvec, FALSE);
     46  REQUIRE_VECTOR_FLT (svec, FALSE);
     47
    4448  Npts = xvec[0].Nelements;
    4549  ALLOCATE (dy, opihi_flt, Npts);
    46   REALLOCATE (ovec[0].elements.Flt, opihi_flt, Npts);
     50  ResetVector (ovec, OPIHI_FLT, Npts);
    4751
    4852  GET_VAR (par[0], "C0");
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vpop.c

    r20839 r20857  
    1717
    1818  if (Npix > 1) {
    19     memmove (&vec[0].elements.Flt[0], &vec[0].elements.Flt[1], Npix*sizeof(opihi_flt));
     19    if (vec[0].type == OPIHI_FLT) {
     20      memmove (&vec[0].elements.Flt[0], &vec[0].elements.Flt[1], Npix*sizeof(opihi_flt));
     21    } else {
     22      memmove (&vec[0].elements.Int[0], &vec[0].elements.Int[1], Npix*sizeof(opihi_int));
     23    }
    2024  }
    2125  vec[0].Nelements = Npix - 1;
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vroll.c

    r20839 r20857  
    1717  if (Npix < 2) return (TRUE);
    1818
    19   first = vec[0].elements.Flt[0];
    20   memmove (&vec[0].elements.Flt[0], &vec[0].elements.Flt[1], Npix*sizeof(opihi_flt));
    21   vec[0].elements.Flt[Npix-1] = first;
     19  if (vec[0].type == OPIHI_FLT) {
     20    first = vec[0].elements.Flt[0];
     21    memmove (&vec[0].elements.Flt[0], &vec[0].elements.Flt[1], Npix*sizeof(opihi_flt));
     22    vec[0].elements.Flt[Npix-1] = first;
     23  } else {
     24    first = vec[0].elements.Int[0];
     25    memmove (&vec[0].elements.Int[0], &vec[0].elements.Int[1], Npix*sizeof(opihi_int));
     26    vec[0].elements.Int[Npix-1] = first;
     27  }
    2228  return (TRUE);
    2329}
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vsmooth.c

    r20839 r20857  
    33int vsmooth (int argc, char **argv) {
    44 
    5   int i, n, N, Nx, Ns, Ngauss;
    6   opihi_flt *vi, *vo, *gauss, *gaussnorm;
    7   float g, s, sigma, Nsigma;
     5  int i, n, N, Nx, Ns, Ngauss, isFloat;
     6  opihi_flt *vf, *vo, *gauss, *gaussnorm;
     7  opihi_int *vi;
     8  float g, s, sigma, Nsigma, value;
    89  Vector *in;
    910
     
    2324  sigma = atof (argv[2]);
    2425  Nx = in[0].Nelements;
    25   vi = in[0].elements.Flt;
    2626
    2727  /* build a 1D gaussian */
     
    3636  ALLOCATE (vo, opihi_flt, Nx);
    3737
     38  isFloat = (in[0].type == OPIHI_FLT);
     39  vf = in[0].elements.Flt;
     40  vi = in[0].elements.Int;
     41
    3842  for (i = 0; i < Nx; i++) {
    3943    g = s = 0;
     
    4145      if (i+n < 0) continue;
    4246      if (i+n >= Nx) continue;
    43       s += gauss[n]*vi[i+n];
     47      value = isFloat ? vf[i+n] : vi[i+n];
     48      s += gauss[n]*value;
    4449      g += gauss[n];
    4550    }
     
    4752  }
    4853
    49   free (in[0].elements.Flt);
    5054  free (gaussnorm);
    5155
     56  if (isFloat) {
     57    free (in[0].elements.Flt);
     58  } else {
     59    free (in[0].elements.Int);
     60  }
     61
     62  // smoothing an int vector results in a float vector
     63  in[0].type = OPIHI_FLT;
    5264  in[0].elements.Flt = vo;
    5365  return (TRUE);
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vstat.c

    r20839 r20857  
    55  int i, N;
    66  double max, min, sum, var, dvar, mean, stdev;
    7   opihi_flt *X, IgnoreValue;
     7  float IgnoreValue;
    88  int Ignore, Quiet;
    99
     
    4141
    4242  /* calculate max, min, mean, sum, npix */
    43   X = vec[0].elements.Flt;
    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.Flt;
    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
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vzload.c

    r20839 r20857  
    5858
    5959  for (i = N = 0; i < Noverlay; i++) {
    60     size = MIN (MAX_OUTPUT_SIZE, (vecz[0].elements.Flt[i] - min) / range);
     60    float z = (vecz[0].type == OPIHI_FLT) ? vecz[0].elements.Flt[i] : vecz[0].elements.Int[i];
     61    size = MIN (MAX_OUTPUT_SIZE, (z - min) / range);
    6162    if (size < 0.1) continue;
    6263
    6364    overlay[N].type = type;
    6465    overlay[N].text = NULL;
    65     overlay[N].x = vecx[0].elements.Flt[i]+0.5;
    66     overlay[N].y = vecy[0].elements.Flt[i]+0.5;
     66    overlay[N].x = (vecx[0].type == OPIHI_FLT) ? vecx[0].elements.Flt[i] : vecx[0].elements.Int[i];
     67    overlay[N].y = (vecy[0].type == OPIHI_FLT) ? vecy[0].elements.Flt[i] : vecy[0].elements.Int[i];
     68
     69    overlay[N].x += 0.5;
     70    overlay[N].y += 0.5;
     71
    6772    overlay[N].angle = 0.0;
    6873
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/write_vectors.c

    r20839 r20857  
    7878    for (i = 0; i < vec[0][0].Nelements; i++) {
    7979      for (j = 0; j < Nvec; j++) {
    80         fprintf (f, "%.10g ", vec[j][0].elements.Flt[i]);
     80        if (vec[j][0].type == OPIHI_FLT) {
     81          fprintf (f, "%.12g ", vec[j][0].elements.Flt[i]);
     82        } else {
     83          fprintf (f, "%d ", vec[j][0].elements.Int[i]);
     84        }
    8185      }
    8286      fprintf (f, "\n");
     
    135139    for (j = 0; j < Nvec; j++) {
    136140      if (fmttype[j] == 'd') {
    137         fprintf (f, fmtlist[j], (int)(vec[j][0].elements.Flt[i]));
     141        if (vec[j][0].type == OPIHI_FLT) {
     142          fprintf (f, fmtlist[j], (int)(vec[j][0].elements.Flt[i]));
     143        } else {
     144          fprintf (f, fmtlist[j], (int)(vec[j][0].elements.Int[i]));
     145        }
    138146      }
    139147      if (fmttype[j] == 'f') {
    140         fprintf (f, fmtlist[j], (float)(vec[j][0].elements.Flt[i]));
     148        if (vec[j][0].type == OPIHI_FLT) {
     149          fprintf (f, fmtlist[j], (float)(vec[j][0].elements.Flt[i]));
     150        } else {
     151          fprintf (f, fmtlist[j], (float)(vec[j][0].elements.Int[i]));
     152        }
    141153      }
    142154    }
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/zplot.c

    r20839 r20857  
    33int zplot (int argc, char **argv) {
    44 
    5   int i, kapa, Npts;
    6   opihi_flt *in, *out;
     5  int i, kapa;
     6  opihi_flt *out;
    77  double min, range;
    88  Graphdata graphmode;
     
    3333  Zvec.Nelements = zvec[0].Nelements;
    3434  ALLOCATE (Zvec.elements.Flt, opihi_flt, Zvec.Nelements);
     35  out = Zvec.elements.Flt;
    3536 
    36   in = zvec[0].elements.Flt;
    37   out = Zvec.elements.Flt;
    38   for (i = 0; i < Zvec.Nelements; i++, in++, out++) {
    39     *out = MIN (1.0, MAX (0.01, (*in - min) / range));
     37  if (zvec[0].type == OPIHI_FLT) {
     38    opihi_flt *in = zvec[0].elements.Flt;
     39    for (i = 0; i < Zvec.Nelements; i++, in++, out++) {
     40      *out = MIN (1.0, MAX (0.01, (*in - min) / range));
     41    }
     42  } else {
     43    opihi_int *in = zvec[0].elements.Flt;
     44    for (i = 0; i < Zvec.Nelements; i++, in++, out++) {
     45      *out = MIN (1.0, MAX (0.01, (*in - min) / range));
     46    }
    4047  }
    4148
     
    4451  graphmode.size = -1; /* point size determined by Zvec */
    4552  graphmode.etype = 0; /* no errorbars */
    46   Npts = xvec[0].Nelements;
    47   PlotVectorTriplet (kapa, Npts, xvec[0].elements.Flt, yvec[0].elements.Flt, Zvec.elements.Flt, &graphmode);
     53  PlotVectorTriplet (kapa, xvec, yvec, Zvec, &graphmode);
    4854
    4955  free (Zvec.elements.Flt);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/Makefile

    r20820 r20857  
    113113
    114114# deprecated functions: verify & delete
    115 #$(SRC)/catalog.$(ARCH).o               \
    116115#$(SRC)/abszero.$(ARCH).o \
    117116#$(SRC)/cals.$(ARCH).o \
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/avextract.c

    r20839 r20857  
    77  int Nsecfilt, mode, VERBOSE;
    88  char **cstack, name[1024];
    9   float *values;
     9  dbValue *values;
    1010  void *Signal;
    1111
     
    117117      if (!dbBooleanCond (stack, Nstack, values)) continue;
    118118      for (n = 0; n < Nreturn; n++) {
    119         vec[n][0].elements.Flt[Npts] = values[n];
     119        if (vec[n][0].type == OPIHI_FLT) {
     120          vec[n][0].elements.Flt[Npts] = values[n].Flt;
     121        } else {
     122          vec[n][0].elements.Int[Npts] = values[n].Int;
     123        }
    120124      }
    121125      Npts++;
     
    136140  }
    137141
     142  free (values);
    138143  dbFreeFields (fields, Nfields);
    139144  dbFreeStack (stack, Nstack);
     
    144149
    145150 escape:
     151  free (values);
    146152  dbFreeFields (fields, Nfields);
    147153  dbFreeStack (stack, Nstack);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbBooleanCond.c

    r15717 r20857  
    33// evaluate the expression in inStack as a boolean; necessary db field values are
    44// supplied by fields, in order 0 - Nfields (validate before calling)
     5// XXX fields needs to be typed (dbValue), stack math needs to deal with the type cases
    56int dbBooleanCond (dbStack *inStack, int NinStack, float *fields) {
    67 
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbExtractAverages.c

    r17201 r20857  
    4040
    4141/* return average.field based on the selection */
    42 double dbExtractAverages (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) {
     42dbValue dbExtractAverages (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) {
    4343
    4444  int i, Nsec;
    45   double value;
    46 
    47   value = NAN;
     45  dbValue value;
     46
     47  value.Flt = NAN;
     48  value.Int =   0;
    4849
    4950  /* assign vector values */
    5051  switch (field->ID) {
    5152    case AVE_RA:
    52       value = average[0].R;
     53      value.Flt = average[0].R;
    5354      break;
    5455    case AVE_DEC:
    55       value = average[0].D;
     56      value.Flt = average[0].D;
    5657      break;
    5758    case AVE_GLON:
     
    6061        haveGalactic = TRUE;
    6162      }
    62       value = GLON;
     63      value.Flt = GLON;
    6364      break;
    6465    case AVE_GLAT:
     
    6768        haveGalactic = TRUE;
    6869      }
    69       value = GLAT;
     70      value.Flt = GLAT;
    7071      break;
    7172    case AVE_ELON:
     
    7475        haveEcliptic = TRUE;
    7576      }
    76       value = ELON;
     77      value.Flt = ELON;
    7778      break;
    7879    case AVE_ELAT:
     
    8182        haveEcliptic = TRUE;
    8283      }
    83       value = ELAT;
     84      value.Flt = ELAT;
    8485      break;
    8586    case AVE_RA_ERR:
    86       value = average[0].dR;
     87      value.Flt = average[0].dR;
    8788      break;
    8889    case AVE_DEC_ERR:
    89       value = average[0].dD;
     90      value.Flt = average[0].dD;
    9091      break;
    9192
    9293    case AVE_U_RA:
    93       value = average[0].uR;
     94      value.Flt = average[0].uR;
    9495      break;
    9596    case AVE_U_DEC:
    96       value = average[0].uD;
     97      value.Flt = average[0].uD;
    9798      break;
    9899    case AVE_U_RA_ERR:
    99       value = average[0].duR;
     100      value.Flt = average[0].duR;
    100101      break;
    101102    case AVE_U_DEC_ERR:
    102       value = average[0].duD;
     103      value.Flt = average[0].duD;
    103104      break;
    104105
    105106    case AVE_PAR:
    106       value = average[0].P;
     107      value.Flt = average[0].P;
    107108      break;
    108109    case AVE_PAR_ERR:
    109       value = average[0].dP;
     110      value.Flt = average[0].dP;
    110111      break;
    111112
    112113    case AVE_NMEAS:
    113       value = average[0].Nmeasure;
     114      value.Int = average[0].Nmeasure;
    114115      break;
    115116    case AVE_NMISS:
    116       value = average[0].Nmissing;
     117      value.Int = average[0].Nmissing;
    117118      break;
    118119    case AVE_Xp:
    119       value = 0.01*average[0].Xp;
     120      value.Flt = 0.01*average[0].Xp;
    120121      break;
    121122    case AVE_FLAG:
    122       value = average[0].code;
     123      value.Int = average[0].code;
    123124      break;
    124125
     
    126127      switch (field->magMode) {
    127128        case MAG_AVE:
    128           value = PhotAve  (field->photcode, average, secfilt);
     129          value.Flt = PhotAve  (field->photcode, average, secfilt);
    129130          break;
    130131        case MAG_REF:
    131           value = PhotRef  (field->photcode, average, secfilt, measure);
     132          value.Flt = PhotRef  (field->photcode, average, secfilt, measure);
    132133          break;
    133134        case MAG_INST:
     
    137138        case MAG_CAL:
    138139          // XXX need to code this correctly: this returns just the first matching value
    139           value = NAN;
     140          value.Flt = NAN;
    140141          for (i = 0; i < average[0].Nmeasure; i++) {
    141142            if (field->photcode->code != measure[i].photcode) continue;
    142             value = measure[i].M;
     143            value.Flt = measure[i].M;
    143144            break;
    144145          }
     
    146147        case MAG_CHISQ:
    147148          // GetPhotcodeEquivCodebyCode (field->photcode)
    148           value = PhotXm (field->photcode, average, secfilt);
     149          value.Flt = PhotXm (field->photcode, average, secfilt);
    149150          break;
    150151        case MAG_ERR:
    151152          // GetPhotcodeEquivCodebyCode (field->photcode)
    152           if (field->photcode->type == PHOT_REF) {
     153          if ((field->photcode->type == PHOT_REF) || (field->photcode->type == PHOT_DEP)) {
    153154            for (i = 0; i < average[0].Nmeasure; i++) {
    154155              if (field->photcode->code != measure[i].photcode) continue;
    155               value = measure[i].dM;
     156              value.Flt = measure[i].dM;
    156157              break;
    157158            }
    158159          } else {
    159             value = PhotdM (field->photcode, average, secfilt);
     160            value.Flt = PhotdM (field->photcode, average, secfilt);
    160161          }
    161162          break;
     
    165166          Nsec = GetPhotcodeNsec (field->photcode->code);
    166167          if (Nsec == -1) break;
    167           value = secfilt[Nsec].Ncode;
     168          value.Int = secfilt[Nsec].Ncode;
    168169          break;
    169170        case MAG_NPHOT:
    170171          Nsec = GetPhotcodeNsec (field->photcode->code);
    171172          if (Nsec == -1) break;
    172           value = secfilt[Nsec].Nused;
     173          value.Int = secfilt[Nsec].Nused;
    173174          break;
    174175
     
    176177      break;
    177178    case AVE_dMAG:
    178       value = PhotdM (field->photcode, average, secfilt);
     179      value.Flt = PhotdM (field->photcode, average, secfilt);
    179180      break;
    180181    case AVE_Xm:
    181       value = PhotXm (field->photcode, average, secfilt);
     182      value.Flt = PhotXm (field->photcode, average, secfilt);
    182183      break;
    183184    case AVE_TYPE:
     
    187188      /*
    188189    case AVE_NCODE:
    189       value = 0;
     190      value.Int = 0;
    190191      for (i = 0; i < average[0].Nm; i++) {
    191192        if (field->photcode->code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue;
    192         value ++;
     193        value.Int ++;
    193194      }
    194195      break;
    195196    case AVE_NPHOT:
    196       value = 0;
     197      value.Int = 0;
    197198      for (i = 0; i < average[0].Nm; i++) {
    198199        if (field->photcode->code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue;
    199200        if (measure[i].flags & (ID_MEAS_POOR_PHOTOM | ID_MEAS_SKIP_PHOTOM)) continue;
    200         value ++;
     201        value.Int ++;
    201202      }
    202203      break;
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbExtractMeasures.c

    r18221 r20857  
    7070
    7171/* return measure.field based on the selection */
    72 double dbExtractMeasures (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) {
     72dbValue dbExtractMeasures (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) {
    7373
    7474  int Nsec;
    75   double value;
     75  dbValue value;
    7676  double ra, dec, x, y, dT;
    7777
     
    7979  PhotCode *equiv;
    8080
    81   value = NAN;
     81  value.Flt = NAN;
     82  value.Int =   0;
    8283
    8384  switch (field->ID) {
     
    9697      switch (field->magMode) {
    9798        case MAG_INST:
    98           value = PhotInst (measure); 
     99          value.Flt = PhotInst (measure); 
    99100          break;
    100101        case MAG_CAT:
    101           value = PhotCat  (measure);
     102          value.Flt = PhotCat  (measure);
    102103          break;
    103104        case MAG_SYS:
    104           value = PhotSys  (measure, average, secfilt);
     105          value.Flt = PhotSys  (measure, average, secfilt);
    105106          break;
    106107        case MAG_REL:
    107           value = PhotRel  (measure, average, secfilt);
     108          value.Flt = PhotRel  (measure, average, secfilt);
    108109          break;
    109110        case MAG_CAL:
    110           value = PhotCal  (measure, average, secfilt, measure, equiv);
     111          value.Flt = PhotCal  (measure, average, secfilt, measure, equiv);
    111112          break;
    112113        case MAG_AVE:
    113           value = PhotAve  (equiv, average, secfilt);
     114          value.Flt = PhotAve  (equiv, average, secfilt);
    114115          break;
    115116        case MAG_REF:
    116           value = PhotRef  (equiv, average, secfilt, measure);
     117          value.Flt = PhotRef  (equiv, average, secfilt, measure);
    117118          break;
    118119        case MAG_ERR:
    119120          if (field->photcode->type == PHOT_SEC) {
    120             value = PhotdM  (equiv, average, secfilt);
     121            value.Flt = PhotdM  (equiv, average, secfilt);
    121122          } else {
    122             value = measure[0].dM;
     123            value.Flt = measure[0].dM;
    123124          }
    124125          break;
    125126        case MAG_CHISQ:
    126           value = PhotXm  (equiv, average, secfilt);
     127          value.Flt = PhotXm  (equiv, average, secfilt);
    127128          break;
    128129        case MAG_NCODE:
    129130          if (equiv == NULL) {
    130             value = NAN;
     131            value.Int = 0;
    131132            break;
    132133          }
    133134          Nsec = GetPhotcodeNsec (equiv->code);
    134135          if (Nsec == -1) break;
    135           value = secfilt[Nsec].Ncode;
     136          value.Int = secfilt[Nsec].Ncode;
    136137          break;
    137138        case MAG_NPHOT:
    138139          if (equiv == NULL) {
    139             value = NAN;
     140            value.Int = NAN;
    140141            break;
    141142          }
    142143          Nsec = GetPhotcodeNsec (equiv->code);
    143144          if (Nsec == -1) break;
    144           value = secfilt[Nsec].Nused;
     145          value.Int = secfilt[Nsec].Nused;
    145146          break;
    146147      }
    147148      break;
    148149    case MEAS_RA: /* OK */
    149       value = average[0].R - measure[0].dR / 3600.0;
     150      value.Flt = average[0].R - measure[0].dR / 3600.0;
    150151      break;
    151152    case MEAS_DEC: /* OK */
    152       value = average[0].D - measure[0].dD / 3600.0;
     153      value.Flt = average[0].D - measure[0].dD / 3600.0;
    153154      break;
    154155    case MEAS_RA_AVE: /* OK */
    155       value = average[0].R;
     156      value.Flt = average[0].R;
    156157      break;
    157158    case MEAS_DEC_AVE: /* OK */
    158       value = average[0].D;
     159      value.Flt = average[0].D;
    159160      break;
    160161
     
    164165        haveGalacticMeas = TRUE;
    165166      }
    166       value = GLON_MEAS;
     167      value.Flt = GLON_MEAS;
    167168      break;
    168169    case MEAS_GLAT:
     
    171172        haveGalacticMeas = TRUE;
    172173      }
    173       value = GLAT_MEAS;
     174      value.Flt = GLAT_MEAS;
    174175      break;
    175176    case MEAS_ELON:
     
    178179        haveEclipticMeas = TRUE;
    179180      }
    180       value = ELON_MEAS;
     181      value.Flt = ELON_MEAS;
    181182      break;
    182183    case MEAS_ELAT:
     
    185186        haveEclipticMeas = TRUE;
    186187      }
    187       value = ELAT_MEAS;
     188      value.Flt = ELAT_MEAS;
    188189      break;
    189190
     
    193194        haveGalacticAve = TRUE;
    194195      }
    195       value = GLON_AVE;
     196      value.Flt = GLON_AVE;
    196197      break;
    197198    case MEAS_GLAT_AVE:
     
    200201        haveGalacticAve = TRUE;
    201202      }
    202       value = GLAT_AVE;
     203      value.Flt = GLAT_AVE;
    203204      break;
    204205    case MEAS_ELON_AVE:
     
    207208        haveEclipticAve = TRUE;
    208209      }
    209       value = ELON_AVE;
     210      value.Flt = ELON_AVE;
    210211      break;
    211212    case MEAS_ELAT_AVE:
     
    214215        haveEclipticAve = TRUE;
    215216      }
    216       value = ELAT_AVE;
     217      value.Flt = ELAT_AVE;
    217218      break;
    218219
    219220    case MEAS_RA_AVE_ERR: /* OK */
    220       value = average[0].dR;
     221      value.Flt = average[0].dR;
    221222      break;
    222223    case MEAS_DEC_AVE_ERR: /* OK */
    223       value = average[0].dD;
     224      value.Flt = average[0].dD;
    224225      break;
    225226    case MEAS_U_RA: /* OK */
    226       value = average[0].uR;
     227      value.Flt = average[0].uR;
    227228      break;
    228229    case MEAS_U_DEC: /* OK */
    229       value = average[0].uD;
     230      value.Flt = average[0].uD;
    230231      break;
    231232    case MEAS_U_RA_ERR: /* OK */
    232       value = average[0].duR;
     233      value.Flt = average[0].duR;
    233234      break;
    234235    case MEAS_U_DEC_ERR: /* OK */
    235       value = average[0].duD;
     236      value.Flt = average[0].duD;
    236237      break;
    237238    case MEAS_PAR: /* OK */
    238       value = average[0].R;
     239      value.Flt = average[0].R;
    239240      break;
    240241    case MEAS_PAR_ERR: /* OK */
    241       value = average[0].D;
     242      value.Flt = average[0].D;
    242243      break;
    243244    case MEAS_XP: /* OK */
    244       value = average[0].Xp;
     245      value.Flt = average[0].Xp;
    245246      break;
    246247    case MEAS_NMEAS: /* OK */
    247       value = average[0].Nmeasure;
     248      value.Int = average[0].Nmeasure;
    248249      break;
    249250    case MEAS_NMISS: /* OK */
    250       value = average[0].Nmissing;
     251      value.Int = average[0].Nmissing;
    251252      break;
    252253    case MEAS_OBJFLAGS: /* OK */
    253       value = average[0].code;
     254      value.Int = average[0].code;
    254255      break;
    255256    // note that these represent the ra displacement relative to the average, not
    256257    // the error.
    257258    case MEAS_RA_OFFSET: /* OK */
    258       value = measure[0].dR;
     259      value.Flt = measure[0].dR;
    259260      break;
    260261    case MEAS_DEC_OFFSET: /* OK */
    261       value = measure[0].dD;
     262      value.Flt = measure[0].dD;
    262263      break;
    263264    case MEAS_RA_FIT_OFFSET: /* OK */
    264265      dT = (measure[0].t - TimeRefPM) / (86400*365.25);
    265       value = average[0].uR * dT + measure[0].dR;
     266      value.Flt = average[0].uR * dT + measure[0].dR;
    266267      break;
    267268    case MEAS_DEC_FIT_OFFSET: /* OK */
    268269      dT = (measure[0].t - TimeRefPM) / (86400*365.25);
    269       value = average[0].uD * dT + measure[0].dD;
     270      value.Flt = average[0].uD * dT + measure[0].dD;
    270271      break;
    271272    case MEAS_RA_OFFSET_ERR: /* OK */
    272       value = NAN;
     273      value.Flt = NAN;
    273274      break;
    274275    case MEAS_DEC_OFFSET_ERR: /* OK */
    275       value = NAN;
     276      value.Flt = NAN;
    276277      break;
    277278    case MEAS_AIRMASS: /* OK */
    278       value = measure[0].airmass;
     279      value.Flt = measure[0].airmass;
    279280      break;
    280281    case MEAS_AZ: /* OK */
    281       value = measure[0].az;
     282      value.Flt = measure[0].az;
    282283      break;
    283284    case MEAS_EXPTIME: /* OK */
    284       value = pow (10.0, measure[0].dt * 0.4);
     285      value.Flt = pow (10.0, measure[0].dt * 0.4);
    285286      break;
    286287    case MEAS_PHOTCODE: /* OK */
    287       value = measure[0].photcode;
     288      value.Int = measure[0].photcode;
    288289      break;
    289290    case MEAS_TIME: /* OK */
    290       value = TimeValue (measure[0].t, TimeReference, TimeFormat);
     291      value.Flt = TimeValue (measure[0].t, TimeReference, TimeFormat);
    291292      break;
    292293    case MEAS_FWHM: /* OK */
    293       value = 0.01*(measure[0].FWx + measure[0].FWy) / 2.0;
     294      value.Flt = 0.01*(measure[0].FWx + measure[0].FWy) / 2.0;
    294295      break;
    295296    case MEAS_FWHM_MAJ: /* OK */
    296       value = 0.01*measure[0].FWx;
     297      value.Flt = 0.01*measure[0].FWx;
    297298      break;
    298299    case MEAS_FWHM_MIN: /* OK */
    299       value = 0.01*measure[0].FWy;
     300      value.Flt = 0.01*measure[0].FWy;
    300301      break;
    301302    case MEAS_THETA: /* OK */
    302       value = measure[0].theta;
     303      value.Flt = measure[0].theta;
    303304      break;
    304305    case MEAS_DOPHOT: /* OK */
    305       value = measure[0].dophot;
     306      value.Flt = measure[0].dophot;
    306307      break;
    307308    case MEAS_DB_FLAGS: /* ? */
    308       value = measure[0].dbFlags;
     309      value.Int = measure[0].dbFlags;
    309310      break;
    310311    case MEAS_PHOT_FLAGS: /* ? */
    311       value = measure[0].photFlags;
     312      value.Int = measure[0].photFlags;
    312313      break;
    313314    case MEAS_XCCD: /* OK */
    314315/* I need to perform this conversion for ELIXIR and LONEOS formats on load */     
    315316# if 1
    316       value = measure[0].Xccd;
     317      value.Flt = measure[0].Xccd;
    317318# else
    318319      {
     
    323324        if (image == NULL) break;
    324325        RD_to_XY (&x, &y, ra, dec, &image[0].coords);
    325         value = x;
     326        value.Flt = x;
    326327      }
    327328# endif
     
    330331/* I need to perform this conversion for ELIXIR and LONEOS formats on load */     
    331332# if 1
    332       value = measure[0].Yccd;
     333      value.Flt = measure[0].Yccd;
    333334# else
    334335      {
     
    339340        if (image == NULL) break;
    340341        RD_to_XY (&x, &y, ra, dec, &image[0].coords);
    341         value = y;
     342        value.Flt = y;
    342343      }
    343344# endif
     
    349350      if (mosaic == NULL) break;
    350351      RD_to_XY (&x, &y, ra, dec, mosaic);
    351       value = x;
     352      value.Flt = x;
    352353      break;
    353354    case MEAS_YMOSAIC: /* OK */
     
    357358      if (mosaic == NULL) break;
    358359      RD_to_XY (&x, &y, ra, dec, mosaic);
    359       value = y;
     360      value.Flt = y;
    360361      break;
    361362
    362363    case MEAS_SKY: /* OK */
    363       value = measure[0].Sky;
     364      value.Flt = measure[0].Sky;
    364365      break;
    365366    case MEAS_dSKY: /* OK */
    366       value = measure[0].dSky;
     367      value.Flt = measure[0].dSky;
    367368      break;
    368369    case MEAS_DET_ID: /* OK */
    369       value = measure[0].detID;
     370      value.Int = measure[0].detID;
    370371      break;
    371372    case MEAS_OBJ_ID: /* OK */
    372       value = measure[0].averef;
     373      value.Int = measure[0].averef;
    373374      break;
    374375    case MEAS_IMAGE_ID: /* OK */
    375       value = measure[0].imageID;
     376      value.Int = measure[0].imageID;
    376377      break;
    377378    case MEAS_PSF_QF: /* OK */
    378       value = measure[0].qPSF;
     379      value.Flt = measure[0].qPSF;
    379380      break;
    380381    case MEAS_PSF_CHISQ: /* OK */
    381       value = measure[0].psfChisq;
     382      value.Flt = measure[0].psfChisq;
    382383      break;
    383384    case MEAS_CR_NSIGMA: /* OK */
    384       value = measure[0].crNsigma;
     385      value.Flt = measure[0].crNsigma;
    385386      break;
    386387    case MEAS_EXT_NSIGMA: /* OK */
    387       value = measure[0].extNsigma;
     388      value.Flt = measure[0].extNsigma;
    388389      break;
    389390    case MEAS_STARGAL: /* OK */
    390       value = measure[0].stargal;
    391       break;
     391      value.Flt = measure[0].stargal;
     392      break;
     393
     394      // add the star/galaxy sep --
    392395  }
    393396  return (value);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbFields.c

    r17199 r20857  
    2323  field->table = 0;
    2424  field->ID = 0;
     25  field->type = OPIHI_FLT;
    2526  field->magMode = 0;
    2627  field->photcode = NULL;
     
    8990}
    9091
    91 # define ESCAPE(F,M) { \
     92# define ESCAPE(F,M,T) { \
    9293  field->ID = (F); \
    9394  field->magMode = (M); \
     95  field->type = (T); \
    9496  field->photcode = NULL; \
    9597  return (TRUE); }
     
    137139  }
    138140
    139   if (!strcasecmp (fieldName, "RA"))         ESCAPE (MEAS_RA,           MAG_NONE);
    140   if (!strcasecmp (fieldName, "DEC"))        ESCAPE (MEAS_DEC,          MAG_NONE);
    141   if (!strcasecmp (fieldName, "RA:AVE"))     ESCAPE (MEAS_RA_AVE,       MAG_NONE);
    142   if (!strcasecmp (fieldName, "DEC:AVE"))    ESCAPE (MEAS_DEC_AVE,      MAG_NONE);
    143   if (!strcasecmp (fieldName, "RA:ERR"))     ESCAPE (MEAS_RA_AVE_ERR,   MAG_NONE);
    144   if (!strcasecmp (fieldName, "DEC:ERR"))    ESCAPE (MEAS_DEC_AVE_ERR,  MAG_NONE);
    145 
    146   if (!strcasecmp (fieldName, "uRA"))        ESCAPE (MEAS_U_RA,         MAG_NONE);
    147   if (!strcasecmp (fieldName, "uDEC"))       ESCAPE (MEAS_U_DEC,        MAG_NONE);
    148   if (!strcasecmp (fieldName, "duRA"))       ESCAPE (MEAS_U_RA_ERR,     MAG_NONE);
    149   if (!strcasecmp (fieldName, "duDEC"))      ESCAPE (MEAS_U_DEC_ERR,    MAG_NONE);
    150   if (!strcasecmp (fieldName, "PAR"))        ESCAPE (MEAS_PAR,          MAG_NONE);
    151   if (!strcasecmp (fieldName, "dPAR"))       ESCAPE (MEAS_PAR_ERR,      MAG_NONE);
    152   if (!strcasecmp (fieldName, "dR"))         ESCAPE (MEAS_RA_OFFSET,    MAG_NONE);
    153   if (!strcasecmp (fieldName, "dD"))         ESCAPE (MEAS_DEC_OFFSET,   MAG_NONE);
    154   if (!strcasecmp (fieldName, "dR:FIT"))     ESCAPE (MEAS_RA_FIT_OFFSET,  MAG_NONE);
    155   if (!strcasecmp (fieldName, "dD:FIT"))     ESCAPE (MEAS_DEC_FIT_OFFSET, MAG_NONE);
    156   if (!strcasecmp (fieldName, "dR:ERR"))     ESCAPE (MEAS_RA_OFFSET_ERR,  MAG_NONE);
    157   if (!strcasecmp (fieldName, "dD:ERR"))     ESCAPE (MEAS_DEC_OFFSET_ERR, MAG_NONE);
    158   if (!strcasecmp (fieldName, "xp"))         ESCAPE (MEAS_XP,           MAG_NONE);
    159   if (!strcasecmp (fieldName, "nmeas"))      ESCAPE (MEAS_NMEAS,        MAG_NONE);
    160   if (!strcasecmp (fieldName, "nmiss"))      ESCAPE (MEAS_NMISS,        MAG_NONE);
    161   if (!strcasecmp (fieldName, "objflags"))   ESCAPE (MEAS_OBJFLAGS,     MAG_NONE);
    162   if (!strcasecmp (fieldName, "AIRMASS"))    ESCAPE (MEAS_AIRMASS,      MAG_NONE);
    163   if (!strcasecmp (fieldName, "ALT"))        ESCAPE (MEAS_ALT,          MAG_NONE);
    164   if (!strcasecmp (fieldName, "AZ"))         ESCAPE (MEAS_AZ,           MAG_NONE);
    165   if (!strcasecmp (fieldName, "EXPTIME"))    ESCAPE (MEAS_EXPTIME,      MAG_NONE);
    166   if (!strcasecmp (fieldName, "PHOTCODE"))   ESCAPE (MEAS_PHOTCODE,     MAG_NONE);
    167   if (!strcasecmp (fieldName, "TIME"))       ESCAPE (MEAS_TIME,         MAG_NONE);
    168   if (!strcasecmp (fieldName, "FWHM"))       ESCAPE (MEAS_FWHM,         MAG_NONE);
    169   if (!strcasecmp (fieldName, "FWHM_MAJ"))   ESCAPE (MEAS_FWHM_MAJ,     MAG_NONE);
    170   if (!strcasecmp (fieldName, "FWHM_MIN"))   ESCAPE (MEAS_FWHM_MIN,     MAG_NONE);
    171   if (!strcasecmp (fieldName, "THETA"))      ESCAPE (MEAS_THETA,        MAG_NONE);
    172   if (!strcasecmp (fieldName, "DOPHOT"))     ESCAPE (MEAS_DOPHOT,       MAG_NONE);
    173   if (!strcasecmp (fieldName, "DB_FLAGS"))   ESCAPE (MEAS_DB_FLAGS,     MAG_NONE);
    174   if (!strcasecmp (fieldName, "PHOT_FLAGS")) ESCAPE (MEAS_PHOT_FLAGS,   MAG_NONE);
    175   if (!strcasecmp (fieldName, "XCCD"))       ESCAPE (MEAS_XCCD,         MAG_NONE);
    176   if (!strcasecmp (fieldName, "YCCD"))       ESCAPE (MEAS_YCCD,         MAG_NONE);
    177   if (!strcasecmp (fieldName, "XMOSAIC"))    ESCAPE (MEAS_XMOSAIC,      MAG_NONE);
    178   if (!strcasecmp (fieldName, "YMOSAIC"))    ESCAPE (MEAS_YMOSAIC,      MAG_NONE);
    179   if (!strcasecmp (fieldName, "XCHIP"))      ESCAPE (MEAS_XCCD,         MAG_NONE);
    180   if (!strcasecmp (fieldName, "YCHIP"))      ESCAPE (MEAS_YCCD,         MAG_NONE);
    181   if (!strcasecmp (fieldName, "XFPA"))       ESCAPE (MEAS_XMOSAIC,      MAG_NONE);
    182   if (!strcasecmp (fieldName, "YFPA"))       ESCAPE (MEAS_YMOSAIC,      MAG_NONE);
    183   if (!strcasecmp (fieldName, "DETID"))      ESCAPE (MEAS_DET_ID,       MAG_NONE);
    184   if (!strcasecmp (fieldName, "OBJID"))      ESCAPE (MEAS_OBJ_ID,       MAG_NONE);
    185   if (!strcasecmp (fieldName, "IMAGEID"))    ESCAPE (MEAS_IMAGE_ID,     MAG_NONE);
    186   if (!strcasecmp (fieldName, "PSF_QF"))     ESCAPE (MEAS_PSF_QF,       MAG_NONE);
    187   if (!strcasecmp (fieldName, "PSF_CHISQ"))  ESCAPE (MEAS_PSF_CHISQ,    MAG_NONE);
    188   if (!strcasecmp (fieldName, "CR_NSIGMA"))  ESCAPE (MEAS_CR_NSIGMA,    MAG_NONE);
    189   if (!strcasecmp (fieldName, "EXT_NSIGMA")) ESCAPE (MEAS_EXT_NSIGMA,   MAG_NONE);
    190   if (!strcasecmp (fieldName, "SKY"))        ESCAPE (MEAS_SKY,          MAG_NONE);
    191   if (!strcasecmp (fieldName, "SKY_ERR"))    ESCAPE (MEAS_dSKY,         MAG_NONE);
    192   if (!strcasecmp (fieldName, "STARGAL"))    ESCAPE (MEAS_STARGAL,      MAG_NONE);
     141  if (!strcasecmp (fieldName, "RA"))         ESCAPE (MEAS_RA,             MAG_NONE, OPIHI_FLT);
     142  if (!strcasecmp (fieldName, "DEC"))        ESCAPE (MEAS_DEC,            MAG_NONE, OPIHI_FLT);
     143  if (!strcasecmp (fieldName, "RA:AVE"))     ESCAPE (MEAS_RA_AVE,         MAG_NONE, OPIHI_FLT);
     144  if (!strcasecmp (fieldName, "DEC:AVE"))    ESCAPE (MEAS_DEC_AVE,        MAG_NONE, OPIHI_FLT);
     145  if (!strcasecmp (fieldName, "RA:ERR"))     ESCAPE (MEAS_RA_AVE_ERR,     MAG_NONE, OPIHI_FLT);
     146  if (!strcasecmp (fieldName, "DEC:ERR"))    ESCAPE (MEAS_DEC_AVE_ERR,    MAG_NONE, OPIHI_FLT);
     147  if (!strcasecmp (fieldName, "uRA"))        ESCAPE (MEAS_U_RA,           MAG_NONE, OPIHI_FLT);
     148  if (!strcasecmp (fieldName, "uDEC"))       ESCAPE (MEAS_U_DEC,          MAG_NONE, OPIHI_FLT);
     149  if (!strcasecmp (fieldName, "duRA"))       ESCAPE (MEAS_U_RA_ERR,       MAG_NONE, OPIHI_FLT);
     150  if (!strcasecmp (fieldName, "duDEC"))      ESCAPE (MEAS_U_DEC_ERR,      MAG_NONE, OPIHI_FLT);
     151  if (!strcasecmp (fieldName, "PAR"))        ESCAPE (MEAS_PAR,            MAG_NONE, OPIHI_FLT);
     152  if (!strcasecmp (fieldName, "dPAR"))       ESCAPE (MEAS_PAR_ERR,        MAG_NONE, OPIHI_FLT);
     153  if (!strcasecmp (fieldName, "dR"))         ESCAPE (MEAS_RA_OFFSET,      MAG_NONE, OPIHI_FLT);
     154  if (!strcasecmp (fieldName, "dD"))         ESCAPE (MEAS_DEC_OFFSET,     MAG_NONE, OPIHI_FLT);
     155  if (!strcasecmp (fieldName, "dR:FIT"))     ESCAPE (MEAS_RA_FIT_OFFSET,  MAG_NONE, OPIHI_FLT);
     156  if (!strcasecmp (fieldName, "dD:FIT"))     ESCAPE (MEAS_DEC_FIT_OFFSET, MAG_NONE, OPIHI_FLT);
     157  if (!strcasecmp (fieldName, "dR:ERR"))     ESCAPE (MEAS_RA_OFFSET_ERR,  MAG_NONE, OPIHI_FLT);
     158  if (!strcasecmp (fieldName, "dD:ERR"))     ESCAPE (MEAS_DEC_OFFSET_ERR, MAG_NONE, OPIHI_FLT);
     159  if (!strcasecmp (fieldName, "xp"))         ESCAPE (MEAS_XP,             MAG_NONE, OPIHI_FLT);
     160  if (!strcasecmp (fieldName, "nmeas"))      ESCAPE (MEAS_NMEAS,          MAG_NONE, OPIHI_INT);
     161  if (!strcasecmp (fieldName, "nmiss"))      ESCAPE (MEAS_NMISS,          MAG_NONE, OPIHI_INT);
     162  if (!strcasecmp (fieldName, "objflags"))   ESCAPE (MEAS_OBJFLAGS,       MAG_NONE, OPIHI_INT);
     163  if (!strcasecmp (fieldName, "AIRMASS"))    ESCAPE (MEAS_AIRMASS,        MAG_NONE, OPIHI_FLT);
     164  if (!strcasecmp (fieldName, "ALT"))        ESCAPE (MEAS_ALT,            MAG_NONE, OPIHI_FLT);
     165  if (!strcasecmp (fieldName, "AZ"))         ESCAPE (MEAS_AZ,             MAG_NONE, OPIHI_FLT);
     166  if (!strcasecmp (fieldName, "EXPTIME"))    ESCAPE (MEAS_EXPTIME,        MAG_NONE, OPIHI_FLT);
     167  if (!strcasecmp (fieldName, "PHOTCODE"))   ESCAPE (MEAS_PHOTCODE,       MAG_NONE, OPIHI_INT);
     168  if (!strcasecmp (fieldName, "TIME"))       ESCAPE (MEAS_TIME,           MAG_NONE, OPIHI_FLT);
     169  if (!strcasecmp (fieldName, "FWHM"))       ESCAPE (MEAS_FWHM,           MAG_NONE, OPIHI_FLT);
     170  if (!strcasecmp (fieldName, "FWHM_MAJ"))   ESCAPE (MEAS_FWHM_MAJ,       MAG_NONE, OPIHI_FLT);
     171  if (!strcasecmp (fieldName, "FWHM_MIN"))   ESCAPE (MEAS_FWHM_MIN,       MAG_NONE, OPIHI_FLT);
     172  if (!strcasecmp (fieldName, "THETA"))      ESCAPE (MEAS_THETA,          MAG_NONE, OPIHI_FLT);
     173  if (!strcasecmp (fieldName, "DOPHOT"))     ESCAPE (MEAS_DOPHOT,         MAG_NONE, OPIHI_FLT);
     174  if (!strcasecmp (fieldName, "DB_FLAGS"))   ESCAPE (MEAS_DB_FLAGS,       MAG_NONE, OPIHI_INT);
     175  if (!strcasecmp (fieldName, "PHOT_FLAGS")) ESCAPE (MEAS_PHOT_FLAGS,     MAG_NONE, OPIHI_INT);
     176  if (!strcasecmp (fieldName, "XCCD"))       ESCAPE (MEAS_XCCD,           MAG_NONE, OPIHI_FLT);
     177  if (!strcasecmp (fieldName, "YCCD"))       ESCAPE (MEAS_YCCD,           MAG_NONE, OPIHI_FLT);
     178  if (!strcasecmp (fieldName, "XMOSAIC"))    ESCAPE (MEAS_XMOSAIC,        MAG_NONE, OPIHI_FLT);
     179  if (!strcasecmp (fieldName, "YMOSAIC"))    ESCAPE (MEAS_YMOSAIC,        MAG_NONE, OPIHI_FLT);
     180  if (!strcasecmp (fieldName, "XCHIP"))      ESCAPE (MEAS_XCCD,           MAG_NONE, OPIHI_FLT);
     181  if (!strcasecmp (fieldName, "YCHIP"))      ESCAPE (MEAS_YCCD,           MAG_NONE, OPIHI_FLT);
     182  if (!strcasecmp (fieldName, "XFPA"))       ESCAPE (MEAS_XMOSAIC,        MAG_NONE, OPIHI_FLT);
     183  if (!strcasecmp (fieldName, "YFPA"))       ESCAPE (MEAS_YMOSAIC,        MAG_NONE, OPIHI_FLT);
     184  if (!strcasecmp (fieldName, "DETID"))      ESCAPE (MEAS_DET_ID,         MAG_NONE, OPIHI_INT);
     185  if (!strcasecmp (fieldName, "OBJID"))      ESCAPE (MEAS_OBJ_ID,         MAG_NONE, OPIHI_INT);
     186  if (!strcasecmp (fieldName, "IMAGEID"))    ESCAPE (MEAS_IMAGE_ID,       MAG_NONE, OPIHI_INT);
     187  if (!strcasecmp (fieldName, "PSF_QF"))     ESCAPE (MEAS_PSF_QF,         MAG_NONE, OPIHI_FLT);
     188  if (!strcasecmp (fieldName, "PSF_CHISQ"))  ESCAPE (MEAS_PSF_CHISQ,      MAG_NONE, OPIHI_FLT);
     189  if (!strcasecmp (fieldName, "CR_NSIGMA"))  ESCAPE (MEAS_CR_NSIGMA,      MAG_NONE, OPIHI_FLT);
     190  if (!strcasecmp (fieldName, "EXT_NSIGMA")) ESCAPE (MEAS_EXT_NSIGMA,     MAG_NONE, OPIHI_FLT);
     191  if (!strcasecmp (fieldName, "SKY"))        ESCAPE (MEAS_SKY,            MAG_NONE, OPIHI_FLT);
     192  if (!strcasecmp (fieldName, "SKY_ERR"))    ESCAPE (MEAS_dSKY,           MAG_NONE, OPIHI_FLT);
     193  if (!strcasecmp (fieldName, "STARGAL"))    ESCAPE (MEAS_STARGAL,        MAG_NONE, OPIHI_FLT);
    193194
    194195  // for words that don't parse, try a photcode
     
    200201  field->ID = MEAS_MAG;
    201202  field->magMode = mode;
     203  field->type = OPIHI_FLT;
    202204  field->photcode = code;
    203205  return (TRUE);
     
    234236  }
    235237
    236   if (!strcasecmp (fieldName, "RA"))    ESCAPE (AVE_RA,        MAG_NONE);
    237   if (!strcasecmp (fieldName, "DEC"))   ESCAPE (AVE_DEC,       MAG_NONE);
    238   if (!strcasecmp (fieldName, "dRA"))   ESCAPE (AVE_RA_ERR,    MAG_NONE);
    239   if (!strcasecmp (fieldName, "dDEC"))  ESCAPE (AVE_DEC_ERR,   MAG_NONE);
    240   if (!strcasecmp (fieldName, "uRA"))   ESCAPE (AVE_U_RA,      MAG_NONE);
    241   if (!strcasecmp (fieldName, "uDEC"))  ESCAPE (AVE_U_DEC,     MAG_NONE);
    242   if (!strcasecmp (fieldName, "duRA"))  ESCAPE (AVE_U_RA_ERR,  MAG_NONE);
    243   if (!strcasecmp (fieldName, "duDEC")) ESCAPE (AVE_U_DEC_ERR, MAG_NONE);
    244   if (!strcasecmp (fieldName, "PAR"))   ESCAPE (AVE_PAR,       MAG_NONE);
    245   if (!strcasecmp (fieldName, "dPAR"))  ESCAPE (AVE_PAR_ERR,   MAG_NONE);
    246   if (!strcasecmp (fieldName, "Xp"))    ESCAPE (AVE_Xp,        MAG_NONE);
    247   if (!strcasecmp (fieldName, "NMEAS")) ESCAPE (AVE_NMEAS,     MAG_NONE);
    248   if (!strcasecmp (fieldName, "NMISS")) ESCAPE (AVE_NMISS,     MAG_NONE);
    249   if (!strcasecmp (fieldName, "FLAG"))  ESCAPE (AVE_FLAG,      MAG_NONE);
    250   if (!strcasecmp (fieldName, "TYPE"))  ESCAPE (AVE_TYPE,      MAG_NONE);
    251   if (!strcasecmp (fieldName, "OBJID")) ESCAPE (AVE_OBJID,     MAG_NONE);
     238  if (!strcasecmp (fieldName, "RA"))    ESCAPE (AVE_RA,        MAG_NONE, OPIHI_FLT);
     239  if (!strcasecmp (fieldName, "DEC"))   ESCAPE (AVE_DEC,       MAG_NONE, OPIHI_FLT);
     240  if (!strcasecmp (fieldName, "dRA"))   ESCAPE (AVE_RA_ERR,    MAG_NONE, OPIHI_FLT);
     241  if (!strcasecmp (fieldName, "dDEC"))  ESCAPE (AVE_DEC_ERR,   MAG_NONE, OPIHI_FLT);
     242  if (!strcasecmp (fieldName, "uRA"))   ESCAPE (AVE_U_RA,      MAG_NONE, OPIHI_FLT);
     243  if (!strcasecmp (fieldName, "uDEC"))  ESCAPE (AVE_U_DEC,     MAG_NONE, OPIHI_FLT);
     244  if (!strcasecmp (fieldName, "duRA"))  ESCAPE (AVE_U_RA_ERR,  MAG_NONE, OPIHI_FLT);
     245  if (!strcasecmp (fieldName, "duDEC")) ESCAPE (AVE_U_DEC_ERR, MAG_NONE, OPIHI_FLT);
     246  if (!strcasecmp (fieldName, "PAR"))   ESCAPE (AVE_PAR,       MAG_NONE, OPIHI_FLT);
     247  if (!strcasecmp (fieldName, "dPAR"))  ESCAPE (AVE_PAR_ERR,   MAG_NONE, OPIHI_FLT);
     248  if (!strcasecmp (fieldName, "Xp"))    ESCAPE (AVE_Xp,        MAG_NONE, OPIHI_FLT);
     249  if (!strcasecmp (fieldName, "NMEAS")) ESCAPE (AVE_NMEAS,     MAG_NONE, OPIHI_INT);
     250  if (!strcasecmp (fieldName, "NMISS")) ESCAPE (AVE_NMISS,     MAG_NONE, OPIHI_INT);
     251  if (!strcasecmp (fieldName, "FLAG"))  ESCAPE (AVE_FLAG,      MAG_NONE, OPIHI_INT);
     252  if (!strcasecmp (fieldName, "TYPE"))  ESCAPE (AVE_TYPE,      MAG_NONE, OPIHI_INT);
     253  if (!strcasecmp (fieldName, "OBJID")) ESCAPE (AVE_OBJID,     MAG_NONE, OPIHI_INT);
    252254
    253255  // for words that don't parse, try a photcode
     
    264266  field->ID = AVE_MAG;
    265267  field->magMode = mode;
     268  field->type = OPIHI_FLT;
    266269  field->photcode = code;
    267270  return (TRUE);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/fitcolors.c

    r20839 r20857  
    1818  double *M1, *M2;
    1919  float *out;
    20   opihi_flt *colorFit, *deltaFit, dColor, C0, C1;
     20  float *colorFit, *deltaFit, dColor, C0, C1;
    2121  opihi_flt minDelta, maxDelta, minColor, maxColor;
    2222  int kapa, Npx, Npy, NPX, NPY, Nplot, PLOT;
     
    100100    KapaSetFont (kapa, "helvetica", 14);
    101101
    102     ALLOCATE (colorFit, opihi_flt, 11);
    103     ALLOCATE (deltaFit, opihi_flt, 11);
     102    ALLOCATE (colorFit, float, 11);
     103    ALLOCATE (deltaFit, float, 11);
    104104    dColor = (maxColor - minColor) / 10.0;
    105105    for (i = 0; i < 11; i++) {
     
    177177  /* vectors to save data */
    178178  Npts = 0;
    179   NPTS = 1;
     179  NPTS = 64;
    180180  if ((xvec = SelectVector ("tmp_x", ANYVECTOR, TRUE)) == NULL) goto escape;
    181181  if ((yvec = SelectVector ("tmp_y", ANYVECTOR, TRUE)) == NULL) goto escape;
     182
     183  ResetVector (xvec, OPIHI_FLT, NPTS);
     184  ResetVector (yvec, OPIHI_FLT, NPTS);
    182185
    183186  // set up basic windows
     
    307310        KapaBox (kapa, &graphdata);
    308311
    309         PlotVectorPair (kapa, Npts, xvec[0].elements.Flt, yvec[0].elements.Flt, &graphdata);
     312        PlotVectorPair (kapa, xvec, yvec, &graphdata);
    310313
    311314        for (i = 0; i < 11; i++) {
     
    315318        graphdata.color = KapaColorByName ("red");
    316319
    317         PlotVectorPair (kapa, 11, colorFit, deltaFit, &graphdata);
     320        KapaPrepPlot (kapa, 11, graphmode);
     321        KapaPlotVector (kapa, 11, colorFit, "x");
     322        KapaPlotVector (kapa, 11, deltaFit, "y");
    318323
    319324        KapaSetFont (kapa, "helvetica", 8);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/images.c

    r20839 r20857  
    280280    graphmode.ptype = 100; /* connect pairs of points */
    281281    graphmode.etype = 0;
    282     PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     282    PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    283283  }
    284284
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/imbox.c

    r20839 r20857  
    104104      graphmode.ptype = 100; /* connect pairs of points */
    105105      graphmode.etype = 0;
    106       PlotVectorPair (kapa, 8, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     106      PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    107107    }
    108108  skip:
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/imdense.c

    r20839 r20857  
    6363    graphmode.style = 2; /* points */
    6464    graphmode.etype = 0;
    65     PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     65    PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    6666  }
    6767
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/imstats.c

    r20839 r20857  
    5454  graphmode.style = 2;
    5555  graphmode.etype = 0;
    56   PlotVectorPair (kapa, Nimage, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     56  PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    5757 
    5858  free (Xvec.elements.Flt);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/lcurve.c

    r20839 r20857  
    155155
    156156  if (ErrorBars) {
    157     PlotVectorPairErrors (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, dYvec.elements.Flt, &graphmode);
     157    PlotVectorPairErrors (kapa, Xvec, Yvec, dYvec, &graphmode);
    158158  } else {
    159     PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     159    PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    160160  }
    161161
     
    173173
    174174  if (SaveVectors) {
     175    xvec->type = OPIHI_FLT;
     176    yvec->type = OPIHI_FLT;
    175177    free (xvec[0].elements.Flt);
    176178    free (yvec[0].elements.Flt);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/mextract.c

    r20856 r20857  
    66  int Nsecfilt, VERBOSE, loadImages, mosaicMode;
    77  char **cstack, name[1024];
    8   float *values;
     8  dbValue *values;
    99  void *Signal;
    1010
     
    8888
    8989  /* create storage vector */
    90   ALLOCATE (values, float, Nfields);
     90  ALLOCATE (values, dbValue, Nfields);
    9191  ALLOCATE (vec, Vector *, Nreturn);
    9292  for (i = 0; i < Nreturn; i++) {
     
    140140        if (!dbBooleanCond (stack, Nstack, values)) continue;
    141141        for (n = 0; n < Nreturn; n++) {
    142           vec[n][0].elements.Flt[Npts] = values[n];
     142          if (vec[n][0].type == OPIHI_FLT) {
     143            vec[n][0].elements.Flt[Npts] = values[n].Flt;
     144          } else {
     145            vec[n][0].elements.Int[Npts] = values[n].Int;
     146          }
    143147          // fprintf (stderr, "keep : field: %s, value: %f\n", fields[n].name, values[n]);
    144148        }
     
    166170  }
    167171
     172  free (values);
    168173  dbFreeFields (fields, Nfields);
    169174  dbFreeStack (stack, Nstack);
     
    175180
    176181escape:
     182  free (values);
    177183  dbFreeFields (fields, Nfields);
    178184  dbFreeStack (stack, Nstack);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/mmextract.c

    r20856 r20857  
    88  int Nsecfilt, VERBOSE, loadImages, mosaicMode;
    99  char **cstack1, **cstack2, name1[1024], name2[1024];
    10   float *values, **table1, **table2;
     10  dbValue *values, **table1, **table2;
    1111  void *Signal;
    1212
     
    139139
    140140  /* create storage vector */
    141   ALLOCATE (values, float, Nfields);
     141  ALLOCATE (values, dbValue, Nfields);
    142142  ALLOCATE (vec, Vector *, Nreturn);
    143143
     
    152152    if ((vec[2*i+0] = SelectVector (name1, ANYVECTOR, TRUE)) == NULL) goto escape;
    153153    if ((vec[2*i+1] = SelectVector (name2, ANYVECTOR, TRUE)) == NULL) goto escape;
    154     ResetVector (vec[2*i+0], fields[i].type, NNN);
    155     ResetVector (vec[2*i+1], fields[i].type, NNN);
     154    ResetVector (vec[2*i+0], fields[i].type, fields[i].type);
     155    ResetVector (vec[2*i+1], fields[i].type, fields[i].type);
    156156  }
    157157
     
    160160
    161161  // we save the selected measures for each average to temporary tables 1 and 2
     162  // XXX need to deal with the INT / DBL difference here...
    162163  NTABLE = 100;
    163   ALLOCATE (table1, float *, Nreturn_base);
    164   ALLOCATE (table2, float *, Nreturn_base);
     164  ALLOCATE (table1, dbValue *, Nreturn_base);
     165  ALLOCATE (table2, dbValue *, Nreturn_base);
    165166  for (i = 0; i < Nreturn_base; i++) {
    166     ALLOCATE (table1[i], float, NTABLE);
    167     ALLOCATE (table2[i], float, NTABLE);
     167    ALLOCATE (table1[i], dbValue, NTABLE);
     168    ALLOCATE (table2[i], dbValue, NTABLE);
    168169  }
    169170
     
    196197        NTABLE = catalog.average[j].Nmeasure;
    197198        for (n = 0; n < Nreturn_base; n++) {
    198           REALLOCATE (table1[n], float, NTABLE);
    199           REALLOCATE (table2[n], float, NTABLE);
     199          REALLOCATE (table1[n], dbValue, NTABLE);
     200          REALLOCATE (table2[n], dbValue, NTABLE);
    200201        }
    201202      }
     
    208209        dbExtractMeasuresInitMeas (); // reset counters for saved fields
    209210        for (n = 0; n < Nfields; n++) {
     211          // values needs to be a pointer to a type with FLT and INT (with a union, we would save a bit of memory...)
    210212          values[n] = dbExtractMeasures (&catalog.average[j], &catalog.secfilt[j*Nsecfilt], &catalog.measure[m], &fields[n]);
    211213        }
     
    234236        for (n2 = 0; n2 < Nt2; n2++) {
    235237          for (n = 0; n < Nreturn_base; n++) {
    236             vec[2*n+0][0].elements.Flt[Npts] = table1[n][n1];
    237             vec[2*n+1][0].elements.Flt[Npts] = table2[n][n2];
     238            if (vec[2*n+0][0].type == OPIHI_FLT) {
     239              vec[2*n+0][0].elements.Flt[Npts] = table1[n][n1].Flt;
     240              vec[2*n+1][0].elements.Flt[Npts] = table2[n][n2].Flt;
     241            } else {
     242              vec[2*n+0][0].elements.Int[Npts] = table1[n][n1].Int;
     243              vec[2*n+1][0].elements.Int[Npts] = table2[n][n2].Int;
     244            }
    238245          }
    239246          Npts++;
     
    241248            NPTS += 2000;
    242249            for (n = 0; n < Nreturn; n++) {
    243               REALLOCATE (vec[n][0].elements.Flt, opihi_flt, NPTS);
     250              if (vec[n][0].type == OPIHI_FLT) {
     251                REALLOCATE (vec[n][0].elements.Flt, opihi_flt, NPTS);
     252              } else {
     253                REALLOCATE (vec[n][0].elements.Int, opihi_int, NPTS);
     254              }
    244255            }
    245256          }
     
    257268  interrupt = FALSE;
    258269
     270  // free excess memory
    259271  for (n = 0; n < Nreturn; n++) {
    260272    vec[n][0].Nelements = Npts;
    261     REALLOCATE (vec[n][0].elements.Flt, opihi_flt, MAX(1,Npts));
     273    if (vec[n][0].type == OPIHI_FLT) {
     274      REALLOCATE (vec[n][0].elements.Flt, opihi_flt, MAX(1,Npts));
     275    } else {
     276      REALLOCATE (vec[n][0].elements.Int, opihi_int, MAX(1,Npts));
     277    }
    262278  }
    263279
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/paverage.c

    r20839 r20857  
    1010  double Radius, Rmin, Rmax, R, D;
    1111  unsigned IDclip, IDchoice, LimExclude;
    12   opihi_flt *Xvec, *Yvec, *Zvec;
     12  float *Xvec, *Yvec, *Zvec;
    1313  void *Signal;
    1414
     
    3838    photcode = GetPhotcodebyName (argv[Narg]);
    3939    if (!photcode) {
    40         fprintf (stderr, "unknown photcode %s\n", argv[Narg]);
    41         return (FALSE);
     40      fprintf (stderr, "unknown photcode %s\n", argv[Narg]);
     41      return (FALSE);
    4242    }
    4343    remove_argument (Narg, &argc, argv);
    4444    Nsec = GetPhotcodeNsec (photcode[0].code);
    4545    if (Nsec == -1) {
    46         fprintf (stderr, "photcode %s is not an AVERAGE photcode\n", argv[Narg]);
    47         return (FALSE);
     46      fprintf (stderr, "photcode %s is not an AVERAGE photcode\n", argv[Narg]);
     47      return (FALSE);
    4848    }
    4949  }
     
    9696  Npts = 0;
    9797  NPTS = 1000;
    98   ALLOCATE (Xvec, opihi_flt, NPTS);
    99   ALLOCATE (Yvec, opihi_flt, NPTS);
    100   ALLOCATE (Zvec, opihi_flt, NPTS);
     98  ALLOCATE (Xvec, float, NPTS);
     99  ALLOCATE (Yvec, float, NPTS);
     100  ALLOCATE (Zvec, float, NPTS);
    101101
    102102  // prepare to handle interrupt signals
     
    133133      R = average[i].R;
    134134      D = average[i].D;
    135       status = RD_to_XY (&Xvec[Npts], &Yvec[Npts], R, D, &graphmode.coords);
     135      status = fRD_to_XY (&Xvec[Npts], &Yvec[Npts], R, D, &graphmode.coords);
    136136      if (!status) continue;
    137137      Npts ++;
    138138
    139139      if (Npts == NPTS - 1) {
    140           NPTS += 1000;
    141           REALLOCATE (Xvec, opihi_flt, NPTS);
    142           REALLOCATE (Yvec, opihi_flt, NPTS);
    143           REALLOCATE (Zvec, opihi_flt, NPTS);
     140        NPTS += 1000;
     141        REALLOCATE (Xvec, float, NPTS);
     142        REALLOCATE (Yvec, float, NPTS);
     143        REALLOCATE (Zvec, float, NPTS);
    144144      }
    145145      if ((Npts > NCHUNK) || (Nloaded >= 25)) {
    146           PlotVectorTriplet (kapa, Npts, Xvec, Yvec, Zvec, &graphmode);
    147           Npts = 0;
    148           Nloaded = 0;
     146        KapaPrepPlot (kapa, Npts, graphmode);
     147        KapaPlotVector (kapa, Npts, Xvec, "x");
     148        KapaPlotVector (kapa, Npts, Yvec, "y");
     149        KapaPlotVector (kapa, Npts, Zvec, "z");
     150        Npts = 0;
     151        Nloaded = 0;
    149152      }
    150153    }
     
    152155    dvo_catalog_free (&catalog);
    153156  }
    154   if (Npts > 0) PlotVectorTriplet (kapa, Npts, Xvec, Yvec, Zvec, &graphmode);
     157  if (Npts > 0) {
     158    KapaPrepPlot (kapa, Npts, graphmode);
     159    KapaPlotVector (kapa, Npts, Xvec, "x");
     160    KapaPlotVector (kapa, Npts, Yvec, "y");
     161    KapaPlotVector (kapa, Npts, Zvec, "z");
     162  }
    155163
    156164  free (Xvec);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/pmeasure.c

    r20839 r20857  
    1414  unsigned photFlagChoice, photFlagClip;
    1515  int PhotcodeClip;
    16   opihi_flt *Xvec, *Yvec, *Zvec;
     16  float *Xvec, *Yvec, *Zvec;
    1717  time_t tzero, tend;
    1818  void *Signal;
     
    169169  Npts = 0;
    170170  NPTS = 1000;
    171   ALLOCATE (Xvec, opihi_flt, NPTS);
    172   ALLOCATE (Yvec, opihi_flt, NPTS);
    173   ALLOCATE (Zvec, opihi_flt, NPTS);
     171  ALLOCATE (Xvec, float, NPTS);
     172  ALLOCATE (Yvec, float, NPTS);
     173  ALLOCATE (Zvec, float, NPTS);
    174174
    175175  // prepare to handle interrupt signals
     
    218218          free (date);
    219219        }
    220         status = RD_to_XY (&Xvec[Npts], &Yvec[Npts], R, D, &graphmode.coords);
     220        status = fRD_to_XY (&Xvec[Npts], &Yvec[Npts], R, D, &graphmode.coords);
    221221        if (!status) continue;
    222222        Npts ++;
    223223
    224224        if (Npts == NPTS - 1) {
    225             NPTS += 1000;
    226             REALLOCATE (Xvec, opihi_flt, NPTS);
    227             REALLOCATE (Yvec, opihi_flt, NPTS);
    228             REALLOCATE (Zvec, opihi_flt, NPTS);
     225          NPTS += 1000;
     226          REALLOCATE (Xvec, float, NPTS);
     227          REALLOCATE (Yvec, float, NPTS);
     228          REALLOCATE (Zvec, float, NPTS);
    229229        }
    230230        if ((Npts > NCHUNK) || (Nloaded >= 25)) {
    231             PlotVectorTriplet (kapa, Npts, Xvec, Yvec, Zvec, &graphmode);
    232             Npts = 0;
    233             Nloaded = 0;
     231          KapaPrepPlot (kapa, Npts, graphmode);
     232          KapaPlotVector (kapa, Npts, Xvec, "x");
     233          KapaPlotVector (kapa, Npts, Yvec, "y");
     234          KapaPlotVector (kapa, Npts, Zvec, "z");
     235          Npts = 0;
     236          Nloaded = 0;
    234237        }
    235238      }
     
    238241    dvo_catalog_free (&catalog);
    239242  }
    240   if (Npts > 0) PlotVectorTriplet (kapa, Npts, Xvec, Yvec, Zvec, &graphmode);
    241 
     243  if (Npts > 0) {
     244    KapaPrepPlot (kapa, Npts, graphmode);
     245    KapaPlotVector (kapa, Npts, Xvec, "x");
     246    KapaPlotVector (kapa, Npts, Yvec, "y");
     247    KapaPlotVector (kapa, Npts, Zvec, "z");
     248  }
    242249  free (Xvec);
    243250  free (Yvec);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/procks.c

    r20839 r20857  
    114114  graphmode.style = 2; /* set style to points */
    115115  graphmode.etype = 0; /* no errorbars */
    116   PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     116  PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    117117
    118118  /* now plot vectors between two extrema */
     
    147147  graphmode.etype = 0; /* no errorbars */
    148148
    149   PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     149  PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    150150
    151151  free (Xvec.elements.Flt);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/showtile.c

    r20839 r20857  
    8686    graphmode.ptype = 100; /* connect pairs of points */
    8787    graphmode.etype = 0;
    88     PlotVectorPair (kapa, N, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     88    PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    8989  }
    9090
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/simage.c

    r20839 r20857  
    155155  Npts = Xvec.Nelements;
    156156
    157   PlotVectorTriplet (kapa, Npts, Xvec.elements.Flt, Yvec.elements.Flt, Zvec.elements.Flt, &graphmode);
     157  PlotVectorTriplet (kapa, Xvec, Yvec, Zvec, &graphmode);
    158158
    159159  free (Xvec.elements.Flt);
  • branches/eam_branch_20081124/Ohana/src/opihi/dvo/skycat.c

    r20839 r20857  
    101101    graphmode.ptype = 100; /* connect pairs of points */
    102102    graphmode.etype = 0;
    103     PlotVectorPair (kapa, Npts, Xvec.elements.Flt, Yvec.elements.Flt, &graphmode);
     103    PlotVectorPair (kapa, Xvec, Yvec, &graphmode);
    104104  }
    105105
  • branches/eam_branch_20081124/Ohana/src/opihi/include/display.h

    r20839 r20857  
    77
    88/*** kapa graph functions ***/
    9 int           PlotVectorSingle      PROTO((int kapa, int Npts, opihi_flt *values, char *mode));
    10 int           PlotVectorPair        PROTO((int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, Graphdata *graphmode));
    11 int           PlotVectorPairErrors  PROTO((int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, opihi_flt *dyValues, Graphdata *graphmode));
    12 int           PlotVectorTriplet     PROTO((int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, opihi_flt *zValues, Graphdata *graphmode));
     9int           PlotVectorSingle      PROTO((int kapa, Vector *vec, char *mode));
     10int           PlotVectorPair        PROTO((int kapa, Vector *xVec, Vector *yVec, Graphdata *graphmode));
     11int           PlotVectorPairErrors  PROTO((int kapa, Vector *xVec, Vector *yVec, Vector *dyValues, Graphdata *graphmode));
     12int           PlotVectorTriplet     PROTO((int kapa, Vector *xVec, Vector *yVec, Vector *zValues, Graphdata *graphmode));
    1313int           GetGraphData          PROTO((Graphdata *data, int *kapa, char *name));
    1414int           GetGraph              PROTO((Graphdata *data, int *kapa, char *name));
  • branches/eam_branch_20081124/Ohana/src/opihi/include/dvomath.h

    r20856 r20857  
    99# define opihi_flt double
    1010# define opihi_int unsigned int
     11
     12# define REQUIRE_VECTOR_FLT(VECT,RVAL) { \
     13  if (VECT->type != OPIHI_FLT) { \
     14    gprint (GP_ERR, "function requires vector of type FLT\n"); \
     15    return (RVAL); \
     16  }
     17
     18# define REQUIRE_VECTOR_INT(VECT,RVAL) { \
     19  if (VECT->type != OPIHI_INT) { \
     20    gprint (GP_ERR, "function requires vector of type INT\n"); \
     21    return (RVAL); \
     22  }
    1123
    1224enum {ANYVECTOR, NEWVECTOR, OLDVECTOR};
  • branches/eam_branch_20081124/Ohana/src/opihi/include/dvoshell.h

    r20839 r20857  
    136136  int ID;
    137137  int magMode;
     138  char type;
    138139  PhotCode *photcode;
    139140} dbField;
     
    146147  float   Float;
    147148} dbStack;
     149
     150typedef struct {
     151  opihi_flt Flt;
     152  opihi_int Int;
     153} dbValue;
    148154
    149155typedef struct {
  • branches/eam_branch_20081124/Ohana/src/opihi/lib.data/PlotVectors.c

    r20839 r20857  
    11# include "display.h"
    22
    3 int PlotVectorSingle (int kapa, int Npts, opihi_flt *values, char *mode) {
     3int PlotVectorSingle (int kapa, Vector *vec, char *mode) {
    44
    5   int i;
     5  int i, Npts;
    66  float *temp;
     7
     8  Npts = vec->Nelements;
    79  ALLOCATE (temp, float, Npts);
    810
    9   for (i = 0; i < Npts; i++) {
    10     temp[i] = values[i];
     11  if (vec->type == OPIHI_FLT) {
     12    opihi_flt *value = vec->elements.Flt;
     13    for (i = 0; i < Npts; i++) {
     14      temp[i] = value[i];
     15    }
     16  } else {
     17    opihi_int *value = vec->elements.Int;
     18    for (i = 0; i < Npts; i++) {
     19      temp[i] = value[i];
     20    }
    1121  }
    1222  KapaPlotVector (kapa, Npts, temp, mode);
     
    1727}
    1828
    19 int PlotVectorPair (int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, Graphdata *graphmode) {
     29int PlotVectorPair (int kapa, Vector *xVec, Vector *yVec, Graphdata *graphmode) {
    2030
    21   int i;
     31  int i, Npts;
    2232  float *temp;
     33
     34  if (xVec->Nelements != yVec->Nelements) return (FALSE);
     35  Npts = xVec->Nelements;
     36
    2337  ALLOCATE (temp, float, Npts);
    2438
    2539  KapaPrepPlot (kapa, Npts, graphmode);
    2640
    27   for (i = 0; i < Npts; i++) {
    28     temp[i] = xValues[i];
     41  if (xVec->type == OPIHI_FLT) {
     42    opihi_flt *value = xVec->elements.Flt;
     43    for (i = 0; i < Npts; i++) {
     44      temp[i] = value[i];
     45    }
     46  } else {
     47    opihi_int *value = xVec->elements.Int;
     48    for (i = 0; i < Npts; i++) {
     49      temp[i] = value[i];
     50    }
    2951  }
    3052  KapaPlotVector (kapa, Npts, temp, "x");
    3153
    32   for (i = 0; i < Npts; i++) {
    33     temp[i] = yValues[i];
     54  if (yVec->type == OPIHI_FLT) {
     55    opihi_flt *value = yVec->elements.Flt;
     56    for (i = 0; i < Npts; i++) {
     57      temp[i] = value[i];
     58    }
     59  } else {
     60    opihi_int *value = yVec->elements.Int;
     61    for (i = 0; i < Npts; i++) {
     62      temp[i] = value[i];
     63    }
    3464  }
    3565  KapaPlotVector (kapa, Npts, temp, "y");
     
    4070}
    4171
    42 int PlotVectorTriplet (int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, opihi_flt *zValues, Graphdata *graphmode) {
     72int PlotVectorTriplet (int kapa, Vector *xVec, Vector *yVec, Vector *zVec, Graphdata *graphmode) {
    4373
    44   int i;
     74  int i, Npts;
    4575  float *temp;
     76
     77  if (xVec->Nelements != yVec->Nelements) return (FALSE);
     78  if (xVec->Nelements != zVec->Nelements) return (FALSE);
     79  Npts = xVec->Nelements;
     80
    4681  ALLOCATE (temp, float, Npts);
    4782
    48   KapaPrepPlot   (kapa, Npts, graphmode);
     83  KapaPrepPlot (kapa, Npts, graphmode);
    4984
    50   for (i = 0; i < Npts; i++) {
    51     temp[i] = xValues[i];
     85  if (xVec->type == OPIHI_FLT) {
     86    opihi_flt *value = xVec->elements.Flt;
     87    for (i = 0; i < Npts; i++) {
     88      temp[i] = value[i];
     89    }
     90  } else {
     91    opihi_int *value = xVec->elements.Int;
     92    for (i = 0; i < Npts; i++) {
     93      temp[i] = value[i];
     94    }
    5295  }
    5396  KapaPlotVector (kapa, Npts, temp, "x");
    5497
    55   for (i = 0; i < Npts; i++) {
    56     temp[i] = yValues[i];
     98  if (yVec->type == OPIHI_FLT) {
     99    opihi_flt *value = yVec->elements.Flt;
     100    for (i = 0; i < Npts; i++) {
     101      temp[i] = value[i];
     102    }
     103  } else {
     104    opihi_int *value = yVec->elements.Int;
     105    for (i = 0; i < Npts; i++) {
     106      temp[i] = value[i];
     107    }
    57108  }
    58109  KapaPlotVector (kapa, Npts, temp, "y");
    59110
    60   for (i = 0; i < Npts; i++) {
    61     temp[i] = zValues[i];
     111  if (zVec->type == OPIHI_FLT) {
     112    opihi_flt *value = zVec->elements.Flt;
     113    for (i = 0; i < Npts; i++) {
     114      temp[i] = value[i];
     115    }
     116  } else {
     117    opihi_int *value = zVec->elements.Int;
     118    for (i = 0; i < Npts; i++) {
     119      temp[i] = value[i];
     120    }
    62121  }
    63122  KapaPlotVector (kapa, Npts, temp, "z");
     
    68127}
    69128
    70 int PlotVectorPairErrors (int kapa, int Npts, opihi_flt *xValues, opihi_flt *yValues, opihi_flt *dyValues, Graphdata *graphmode) {
     129int PlotVectorPairErrors (int kapa, Vector *xVec, Vector *yVec, Vector *dyVec, Graphdata *graphmode) {
    71130
    72   int i;
     131  int i, Npts;
    73132  float *temp;
     133
     134  if (xVec->Nelements != yVec->Nelements) return (FALSE);
     135  if (xVec->Nelements != dyVec->Nelements) return (FALSE);
     136  Npts = xVec->Nelements;
     137
    74138  ALLOCATE (temp, float, Npts);
    75139
    76140  KapaPrepPlot (kapa, Npts, graphmode);
    77141
    78   for (i = 0; i < Npts; i++) {
    79     temp[i] = xValues[i];
     142  if (xVec->type == OPIHI_FLT) {
     143    opihi_flt *value = xVec->elements.Flt;
     144    for (i = 0; i < Npts; i++) {
     145      temp[i] = value[i];
     146    }
     147  } else {
     148    opihi_int *value = xVec->elements.Int;
     149    for (i = 0; i < Npts; i++) {
     150      temp[i] = value[i];
     151    }
    80152  }
    81153  KapaPlotVector (kapa, Npts, temp, "x");
    82154
    83   for (i = 0; i < Npts; i++) {
    84     temp[i] = yValues[i];
     155  if (yVec->type == OPIHI_FLT) {
     156    opihi_flt *value = yVec->elements.Flt;
     157    for (i = 0; i < Npts; i++) {
     158      temp[i] = value[i];
     159    }
     160  } else {
     161    opihi_int *value = yVec->elements.Int;
     162    for (i = 0; i < Npts; i++) {
     163      temp[i] = value[i];
     164    }
    85165  }
    86166  KapaPlotVector (kapa, Npts, temp, "y");
    87167
    88   for (i = 0; i < Npts; i++) {
    89     temp[i] = dyValues[i];
     168  if (dyVec->type == OPIHI_FLT) {
     169    opihi_flt *value = dyVec->elements.Flt;
     170    for (i = 0; i < Npts; i++) {
     171      temp[i] = value[i];
     172    }
     173  } else {
     174    opihi_int *value = dyVec->elements.Int;
     175    for (i = 0; i < Npts; i++) {
     176      temp[i] = value[i];
     177    }
    90178  }
    91179  KapaPlotVector (kapa, Npts, temp, "dym");
  • branches/eam_branch_20081124/Ohana/src/opihi/lib.shell/expand_vectors.c

    r20856 r20857  
    126126        }
    127127        if (I < 0) I += vec[0].Nelements;
    128         if (vec[0].type == OPIHI_FLT) {
    129             f1 = vec[0].elements.Flt[I];
    130         } else {
    131             f1 = vec[0].elements.Int[I];
    132         }
     128        f1 = (vec[0].type == OPIHI_FLT) ? vec[0].elements.Flt[I] : vec[0].elements.Int[I];
    133129      }
    134130    }
     
    136132    free (tmpline);
    137133    if ((int)f1 == f1)
    138       snprintf (strValue, 128, "%.0f", f1);
     134      snprintf (strValue, 128, "%.0f", f1); 
    139135    else
    140       snprintf (strValue, 128, "%.9g", f1);
     136      snprintf (strValue, 128, "%.12g", f1);
    141137
    142138    /* interpolate vector element into newline (being accumulated) */
  • branches/eam_branch_20081124/Ohana/src/opihi/lib.shell/parse.c

    r20856 r20857  
    191191      if (Nx < 0) Nx += vec[0].Nelements;
    192192      if (vec[0].type == OPIHI_FLT) {
    193           vec[0].elements.Flt[Nx] = atof (val);
     193        vec[0].elements.Flt[Nx] = atof (val);
    194194      } else {
    195           vec[0].elements.Int[Nx] = atol (val);
     195        vec[0].elements.Int[Nx] = atol (val);
    196196      }
    197197    }
Note: See TracChangeset for help on using the changeset viewer.