IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 7, 2007, 6:28:03 PM (19 years ago)
Author:
eugene
Message:

converted internal NO_MAG and NO_ERR to NAN, NAN_S_SHORT, etc as appropriate

Location:
trunk/Ohana/src/libdvo
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/libdvo/include/dvo.h

    r15035 r15509  
    55# ifndef DVO_H
    66# define DVO_H
    7 
    8 /*
    9   # define ELIXIR 1
    10   # define PANSTARRS 0
    11   # define LONEOS 0
    12 */
    13 
    14 /*** named data values (convert all to enums?) ***/
    157
    168/* DVO table modes */
     
    5547} OhanaProjectionMode;
    5648
     49// these are used as NAN for types of int values
     50typedef enum {
     51    NAN_S_CHAR  = 0x7f,
     52    NAN_U_CHAR  = 0xff,   // was NO_ERR
     53    NAN_S_SHORT = 0x7fff, // was NO_MAG
     54    NAN_U_SHORT = 0xffff,
     55    NAN_S_INT   = 0x7fffffff,
     56    NAN_U_INT   = 0xffffffff,
     57} DVO_INT_NAN;
     58
     59# ifndef (NAN)
     60# ifndef (BYTE_SWAP)
     61#  define __nan_bytes           { 0x7f, 0xc0, 0, 0 }
     62# else
     63#  define __nan_bytes           { 0, 0, 0xc0, 0x7f }
     64# endif
     65static union { unsigned char __c[4]; float __d; } __nan_union
     66    __attribute_used__ = { __nan_bytes };
     67# define NAN    (__nan_union.__d)
     68# endif
     69
    5770/* RegImage.flag values */
    5871# define IMREG_DIST  0x01 /* image distributed, only imregister-3.0 */
     
    6477# define LOAD_SECF      0x08
    6578# define LOAD_MEAS_META 0x10
    66 
    67 /* invalid mag value */
    68 # define NO_MAG    0x7fff
    69 # define NO_ERR    0xff
    7079
    7180/* photometry code types */
  • trunk/Ohana/src/libdvo/src/dvo_catalog.c

    r15035 r15509  
    352352      }
    353353      for (j = 0; j < Nextra; j++, out++) {
    354         outsec[out].M  = NO_MAG;
    355         outsec[out].dM = NO_MAG;
    356         outsec[out].Xm    = NO_MAG;
     354        outsec[out].M  = NAN;
     355        outsec[out].dM = NAN;
     356        outsec[out].Xm = NAN_S_SHORT;
    357357      }
    358358    }
  • trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c

    r15035 r15509  
    221221
    222222  Np = photcodes[0].hashcode[measure[0].photcode];
    223   if (Np == -1) return (NO_MAG);
     223  if (Np == -1) return (NAN);
    224224
    225225  if (photcodes[0].code[Np].type == PHOT_REF) {
     
    241241
    242242  Np = photcodes[0].hashcode[measure[0].photcode];
    243   if (Np == -1) return (NO_MAG);
     243  if (Np == -1) return (NAN);
    244244
    245245  if (photcodes[0].code[Np].type == PHOT_REF) {
     
    260260
    261261  Np = photcodes[0].hashcode[measure[0].photcode];
    262   if (Np == -1) return (NO_MAG);
     262  if (Np == -1) return (NAN);
    263263
    264264  if (photcodes[0].code[Np].type == PHOT_REF) {
     
    271271  /* for DEP, color must be made of PRI/SEC */
    272272  mc = PhotColorForCode (average, secfilt, NULL, code);
    273   if (mc == NO_MAG) return (Mcat);
     273  if (isnan(mc)) return (Mcat);
    274274  mc = mc - SCALE*code[0].dX;
    275275
     
    291291
    292292  Np = photcodes[0].hashcode[measure[0].photcode];
    293   if (Np == -1) return (NO_MAG);
     293  if (Np == -1) return (NAN);
    294294
    295295  if (photcodes[0].code[Np].type == PHOT_REF) {
     
    302302  /* for DEP, color must be made of PRI/SEC */
    303303  mc = PhotColorForCode (average, secfilt, NULL, code);
    304   if (mc == NO_MAG) return (Mrel);
     304  if (isnan(mc)) return (Mrel);
    305305  mc = mc - SCALE*code[0].dX;
    306306
     
    323323  /* code must be the matching PRI/SEC code for this measurement or an equivalent ALT */
    324324  Np = photcodes[0].hashcode[thisone[0].photcode];
    325   if (Np == -1) {
    326     return (NO_MAG);
    327   }
     325  if (Np == -1) return (NAN);
    328326
    329327  if (photcodes[0].code[Np].type == PHOT_REF) {
     
    331329    return (Mrel);
    332330  }
    333   if (code[0].code != photcodes[0].code[Np].equiv) {
    334     return (NO_MAG);
    335   }
     331  if (code[0].code != photcodes[0].code[Np].equiv) return (NAN);
    336332
    337333  Mcal = PhotRel (thisone, average, secfilt) + SCALE*code[0].C;
    338334
    339335  mc = PhotColorForCode (average, secfilt, measure, code);
    340   if (mc == NO_MAG) return (Mcal);
     336  if (isnan(mc)) return (Mcal);
    341337  mc = mc - SCALE*code[0].dX;
    342338
     
    358354  PhotCode *color;
    359355
    360   m1 = m2 = NO_MAG;
     356  m1 = m2 = NAN;
    361357
    362358  if (measure == NULL) {
     
    364360    Ns2 = photcodes[0].hashNsec[code[0].c2];
    365361 
    366     m1 = (Ns1 == -1) ? NO_MAG : secfilt[Ns1].M;
    367     m2 = (Ns2 == -1) ? NO_MAG : secfilt[Ns2].M;
    368     mc = ((m1 == NO_MAG) || (m2 == NO_MAG)) ? NO_MAG : (m1 - m2);
     362    m1 = (Ns1 == -1) ? NAN : secfilt[Ns1].M;
     363    m2 = (Ns2 == -1) ? NAN : secfilt[Ns2].M;
     364    mc = (isnan(m1) || isnan(m2)) ? NAN : (m1 - m2);
    369365    return (mc);
    370366  }
     
    372368  /* find magnitude matching first color term */
    373369  color = GetPhotcodebyCode (code[0].c1);
    374   if (color == NULL) return (NO_MAG);
     370  if (color == NULL) return (NAN);
    375371  if (color[0].type == PHOT_REF) {
    376     for (i = 0; (i < average[0].Nm) && (m1 == NO_MAG); i++) {
     372    for (i = 0; (i < average[0].Nm) && (isnan(m1)); i++) {
    377373      if (measure[i].photcode == color[0].code) {
    378374        m1 = measure[i].M;
     
    381377  } else {
    382378    Ns = photcodes[0].hashNsec[color[0].code];
    383     m1 = (Ns == -1) ? NO_MAG : secfilt[Ns].M;
     379    m1 = (Ns == -1) ? NAN : secfilt[Ns].M;
    384380  }     
    385381
    386382  /* find magnitude matching second color term */
    387383  color = GetPhotcodebyCode (code[0].c2);
    388   if (color == NULL) return (NO_MAG);
     384  if (color == NULL) return (NAN);
    389385  if (color[0].type == PHOT_REF) {
    390     for (i = 0; (i < average[0].Nm) && (m2 == NO_MAG); i++) {
     386    for (i = 0; (i < average[0].Nm) && (isnan(m2)); i++) {
    391387      if (measure[i].photcode == color[0].code) {
    392388        m2 = measure[i].M;
     
    395391  } else {
    396392    Ns = photcodes[0].hashNsec[color[0].code];
    397     m2 = (Ns == -1) ? NO_MAG : secfilt[Ns].M;
     393    m2 = (Ns == -1) ? NAN : secfilt[Ns].M;
    398394  }     
    399   mc = ((m1 == NO_MAG) || (m2 == NO_MAG)) ? NO_MAG : (m1 - m2);
     395  mc = (isnan(m1)) || isnan(m2))) ? NAN : (m1 - m2);
    400396  return (mc);
    401397}
     
    409405
    410406  Ns = photcodes[0].hashNsec[code[0].code];
    411   Mave = (Ns == -1) ? NO_MAG : secfilt[Ns].M;
     407  Mave = (Ns == -1) ? NAN : secfilt[Ns].M;
    412408  Mref = Mave + SCALE*code[0].C;
    413409
    414410  mc = PhotColorForCode (average, secfilt, measure, code);
    415   if (mc == NO_MAG) return (Mref);
     411  if (isnan(mc)) return (Mref);
    416412  mc = mc - SCALE*code[0].dX;
    417413
     
    433429
    434430  Ns = photcodes[0].hashNsec[code[0].code];
    435   Mave = (Ns == -1) ? NO_MAG : secfilt[Ns].M;
     431  Mave = (Ns == -1) ? NAN : secfilt[Ns].M;
    436432  return (Mave);
    437433}
     
    443439
    444440  Ns = photcodes[0].hashNsec[code[0].code];
    445   dM  = (Ns == -1) ? NO_MAG : secfilt[Ns].dM;
     441  dM  = (Ns == -1) ? NAN : secfilt[Ns].dM;
    446442  return (dM);
    447443}
    448444
     445// XXX return NAN or NAN_S_SHORT? (secfilt->Xm is short)
    449446float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt) {
    450447
     
    454451
    455452  Ns = photcodes[0].hashNsec[code[0].code];
    456   Mi = (Ns == -1) ? NO_MAG : secfilt[Ns].Xm;
    457   Xm = (Mi == NO_MAG) ? -1.0 : pow (10.0, 0.01*Mi);
     453  Mi = (Ns == -1) ? NAN : secfilt[Ns].Xm;
     454  Xm = (isnan(Mi)) ? -1.0 : pow (10.0, 0.01*Mi);
    458455  return (Xm);
    459456}
     
    478475  } else {
    479476    Ns = photcodes[0].hashNsec[code[0].code];
    480     M1 = (Ns == -1) ? NO_MAG : secfilt[Ns].M;
     477    M1 = (Ns == -1) ? NAN : secfilt[Ns].M;
    481478  }     
    482479
     
    494491  } else {
    495492    Ns = photcodes[0].hashNsec[code[0].code];
    496     M2 = (Ns == -1) ? NO_MAG : secfilt[Ns].M;
     493    M2 = (Ns == -1) ? NAN : secfilt[Ns].M;
    497494  }     
    498495 
  • trunk/Ohana/src/libdvo/src/photfits.c

    r12332 r15509  
    3131    return (0);
    3232  }
    33   return (NO_MAG);
     33  return (NAN_S_SHORT);
    3434}
    3535
Note: See TracChangeset for help on using the changeset viewer.