IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 8, 2008, 12:50:52 PM (19 years ago)
Author:
eugene
Message:

replaced sort functions drived from press with sort macros derived from gsl

Location:
trunk/Ohana/src/opihi
Files:
1 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/dvo/dvomisc.c

    r7680 r16040  
    3333
    3434}
    35 
    36 /* values are ave[i].R, ave[i].D, ave[i].M */
    37 void sortave (Average *ave, int N) {
    38 
    39   int l,j,ir,i;
    40   Average tmp;
    41 
    42   if (N < 2) return;
    43   l = N >> 1;
    44   ir = N - 1;
    45   for (;;) {
    46     if (l > 0) {
    47       l--;
    48       tmp = ave[l];
    49     }
    50     else {
    51       tmp = ave[ir];
    52       ave[ir] = ave[0];
    53       if (--ir == 0) {
    54         ave[0] = tmp;
    55         return;
    56       }
    57     }
    58     i = l;
    59     j = (l << 1) + 1;
    60     while (j <= ir) {
    61       if (j < ir && ave[j].R < ave[j+1].R) j++;
    62       if (tmp.R < ave[j].R) {
    63         ave[i] = ave[j];
    64         j += (i=j) + 1;
    65       }
    66       else j = ir + 1;
    67     }
    68     ave[i] = tmp;
    69   }
    70 }
    71 
    72 /** this does not seem to be used at the moment */
    73 /* values are ave[i].R, ave[i].D, ave[i].M */
    74 void sort_images (Image *image, int N) {
    75 
    76   int l,j,ir,i;
    77   Image tmp;
    78 
    79   if (N < 2) return;
    80   l = N >> 1;
    81   ir = N - 1;
    82   for (;;) {
    83     if (l > 0) {
    84       l--;
    85       tmp = image[l];
    86     }
    87     else {
    88       tmp = image[ir];
    89       image[ir] = image[0];
    90       if (--ir == 0) {
    91         image[0] = tmp;
    92         return;
    93       }
    94     }
    95     i = l;
    96     j = (l << 1) + 1;
    97     while (j <= ir) {
    98       if (j < ir && image[j].tzero < image[j+1].tzero) j++;
    99       if (tmp.tzero < image[j].tzero) {
    100         image[i] = image[j];
    101         j += (i=j) + 1;
    102       }
    103       else j = ir + 1;
    104     }
    105     image[i] = tmp;
    106   }
    107 }
    108 
    109 /* sort subset by image[subset[i]].tzero */
    110 void sort_image_subset (Image *image, int *subset, int N) {
    111 
    112   int l, j, ir, i, tmp;
    113 
    114   if (N < 2) return;
    115   l = N >> 1;
    116   ir = N - 1;
    117   for (;;) {
    118     if (l > 0) {
    119       l--;
    120       tmp = subset[l];
    121     }
    122     else {
    123       tmp = subset[ir];
    124       subset[ir] = subset[0];
    125       if (--ir == 0) {
    126         subset[0] = tmp;
    127         return;
    128       }
    129     }
    130     i = l;
    131     j = (l << 1) + 1;
    132     while (j <= ir) {
    133       if (j < ir && image[subset[j]].tzero < image[subset[j+1]].tzero) j++;
    134       if (image[tmp].tzero < image[subset[j]].tzero) {
    135         subset[i] = subset[j];
    136         j += (i=j) + 1;
    137       }
    138       else j = ir + 1;
    139     }
    140     subset[i] = tmp;
    141   }
    142 }
  • trunk/Ohana/src/opihi/dvo/fitsed.c

    r14401 r16040  
    436436SEDtableRow **sort_SEDtable (SEDtableRow *raw, int N) {
    437437
    438   int l,j,ir,i;
    439   SEDtableRow **value, *temp;
     438  int i;
     439  SEDtableRow **value;
    440440 
    441441  if (N <= 0) return (NULL);
     
    445445    value[i] = &raw[i];
    446446  }
    447   if (N < 2) return (value);
    448 
    449   l = N >> 1;
    450   ir = N - 1;
    451   for (;;) {
    452     if (l > 0) {
    453       l--;
    454       temp = value[l];
    455     }
    456     else {
    457       temp = value[ir];
    458       value[ir] = value[0];
    459       if (--ir == 0) {
    460         value[0] = temp;
    461         return (value);
    462       }
    463     }
    464     i = l;
    465     j = (l << 1) + 1;
    466     while (j <= ir) {
    467       if (j < ir && value[j][0].color < value[j+1][0].color) ++j;
    468       if (temp[0].color < value[j][0].color) {
    469         value[i] = value[j];
    470         j += (i=j) + 1;
    471       }
    472       else j = ir + 1;
    473     }
    474     value[i] = temp;
    475   }
     447
     448# define SWAPFUNC(A,B){ SEDtableRow *temp = value[A]; value[A] = value[B]; value[B] = temp; }
     449# define COMPARE(A,B)(value[A][0].color < value[B][0].color)
     450
     451  OHANA_SORT (N, COMPARE, SWAPFUNC);
     452
     453# undef SWAPFUNC
     454# undef COMPARE
    476455
    477456  return (value);
  • trunk/Ohana/src/opihi/dvo/gstar.c

    r15509 r16040  
    1010  double Ra, Dec, Radius, Radius2, r, dec0, dec1;
    1111  double Mcat, Mrel;
    12   float *RA, *DEC;
     12  double *RA, *DEC;
    1313  int i, j, k, m, N, *N1, Nsecfilt, NPTS, QUIET, FULL_OUTPUT;
    1414  int Nstars, found, GetMeasures, Nlo, Nhi;
     
    9393
    9494  Nstars = catalog.Naverage;
    95   ALLOCATE (RA, float, Nstars);
    96   ALLOCATE (DEC, float, Nstars);
     95  ALLOCATE (RA, double, Nstars);
     96  ALLOCATE (DEC, double, Nstars);
    9797  ALLOCATE (N1, int, Nstars);
    9898
     
    105105  }
    106106  /* sort list by DEC */
    107   if (Nstars > 1) sort_lists (DEC, RA, N1, Nstars);
     107  if (Nstars > 1) sort_coords_index (DEC, RA, N1, Nstars);
    108108  /* at this point, RA, DEC, and N1 are sorted by DEC. 
    109109     catalog.average[N1[i]].R = RA[i] */
     
    308308  }
    309309
    310   isort_pair (codeNumber, sequence, Nsecfilt);
     310  isortpair (codeNumber, sequence, Nsecfilt);
    311311  free (codeNumber);
    312312}
  • trunk/Ohana/src/opihi/dvo/lcurve.c

    r14401 r16040  
    55  char string[128], *p;
    66  double Ra, Dec, Radius, Radius2, r;
    7   float *RA, *DEC;
     7  double *RA, *DEC;
    88  int kapa, TimeFormat;
    99  int Nstars, found, AutoLimits, ErrorBars, GalMag, AbsPhot, SaveVectors;
     
    8686
    8787  Nstars = catalog.Naverage;
    88   ALLOCATE (RA, float, Nstars);
    89   ALLOCATE (DEC, float, Nstars);
     88  ALLOCATE (RA, double, Nstars);
     89  ALLOCATE (DEC, double, Nstars);
    9090  ALLOCATE (N1, int, Nstars);
    9191
     
    9898  }
    9999  /* sort list by DEC */
    100   if (Nstars > 1) sort_lists (DEC, RA, N1, Nstars);
     100  if (Nstars > 1) sort_coords_index (DEC, RA, N1, Nstars);
    101101  /* at this point, RA, DEC, and N1 are sorted by DEC. 
    102102     catalog.average[N1[i]].R = RA[i] */
     
    142142 
    143143  if (ErrorBars)
    144     sortthree (Xvec.elements, Yvec.elements, dYvec.elements, N);
     144    fsortthree (Xvec.elements, Yvec.elements, dYvec.elements, N);
    145145  else
    146146    fsortpair (Xvec.elements, Yvec.elements, N);
  • trunk/Ohana/src/opihi/dvo/lightcurve.c

    r14401 r16040  
    44 
    55  double Ra, Dec, Radius, Radius2, r;
    6   float *RA, *DEC;
     6  double *RA, *DEC;
    77  int Nstars, found, PhotCodeSelect;
    88  int i, j, k, m, N, NPTS, Nsecfilt, RELPHOT, *N1, TimeFormat;
     
    6969
    7070  Nstars = catalog.Naverage;
    71   ALLOCATE (RA, float, Nstars);
    72   ALLOCATE (DEC, float, Nstars);
     71  ALLOCATE (RA, double, Nstars);
     72  ALLOCATE (DEC, double, Nstars);
    7373  ALLOCATE (N1, int, Nstars);
    7474
     
    8181  }
    8282  /* sort list by DEC */
    83   if (Nstars > 1) sort_lists (DEC, RA, N1, Nstars);
     83  if (Nstars > 1) sort_coords_index (DEC, RA, N1, Nstars);
    8484  /* at this point, RA, DEC, and N1 are sorted by DEC. 
    8585     catalog.average[N1[i]].R = RA[i] */
     
    134134    }
    135135  }
    136   sortthree (tvec[0].elements, mvec[0].elements, dmvec[0].elements, N);
     136  fsortthree (tvec[0].elements, mvec[0].elements, dmvec[0].elements, N);
    137137  tvec[0].Nelements = mvec[0].Nelements = dmvec[0].Nelements = N;
    138138
  • trunk/Ohana/src/opihi/dvo/subpix.c

    r15274 r16040  
    6060    index[i] = i;
    6161  }
    62   if (Nstars > 1) dsort_lists (DEC, RA, index, Nstars);
     62  if (Nstars > 1) sort_coords_index (DEC, RA, index, Nstars);
    6363
    6464  /* bracket the DEC range of interest */
  • trunk/Ohana/src/opihi/lib.data/Makefile

    r15274 r16040  
    1818$(SDIR)/book.$(ARCH).o                  \
    1919$(SDIR)/page.$(ARCH).o                  \
    20 $(SDIR)/sort.$(ARCH).o                  \
    2120$(SDIR)/fft.$(ARCH).o                   \
    2221$(SDIR)/svdcmp.$(ARCH).o                \
  • trunk/Ohana/src/opihi/lib.data/starfuncs.c

    r7917 r16040  
    3636    }
    3737  }
    38   sort (ring, Nring);
     38  dsort (ring, Nring);
    3939  for (Npts = sky = dsky2 = 0, i = 0.25*Nring; i < 0.75*Nring; i++, Npts += 1.0) {
    4040    sky += ring[i];
     
    150150    }
    151151  }
    152   sort (sky, Nsky);
     152  dsort (sky, Nsky);
    153153  for (Npts = fsky = 0, i = 0.25*Nsky; i < 0.75*Nsky; i++, Npts += 1.0) {
    154154    fsky += sky[i];
     
    199199    }
    200200  }
    201   sort (sky, Nsky);
     201  dsort (sky, Nsky);
    202202  for (Npts = fsky = 0, i = 0.25*Nsky; i < 0.75*Nsky; i++, Npts += 1.0) {
    203203    fsky += sky[i];
  • trunk/Ohana/src/opihi/lib.shell/CommandOps.c

    r14449 r16040  
    130130}
    131131
     132void sort_commands (int *seq) {
     133
     134  int i;
     135
     136  for (i = 0; i < Ncommands; i++) seq[i] = i;
     137
     138# define SWAPFUNC(A,B){ int tmp = seq[A]; seq[A] = seq[B]; seq[B] = tmp; }
     139# define COMPARE(A,B)(strcmp (commands[seq[A]].name, commands[seq[B]].name) < 0)
     140
     141  OHANA_SORT (Ncommands, COMPARE, SWAPFUNC);
     142
     143# undef SWAPFUNC
     144# undef COMPARE
     145 
     146}
     147
    132148void print_commands (FILE *f) {
    133149
     
    143159  return;
    144160}
    145 
    146 void sort_commands (int *seq) {
    147 
    148   int l,j,ir,i, N;
    149   int temp;
    150  
    151   N = Ncommands;
    152   for (i = 0; i < N; i++)
    153     seq[i] = i;
    154  
    155   l = N >> 1;
    156   ir = N - 1;
    157   for (;;) {
    158     if (l > 0) {
    159       temp = seq[--l];
    160     }
    161     else {
    162       temp = seq[ir];
    163       seq[ir] = seq[0];
    164       if (--ir == 0) {
    165         seq[0] = temp;
    166         return;
    167       }
    168     }
    169     i = l;
    170     j = (l << 1) + 1;
    171     while (j <= ir) {
    172       if (j < ir && (strcmp (commands[seq[j]].name, commands[seq[j+1]].name) < 0)) ++j;
    173       if (strcmp (commands[temp].name, commands[seq[j]].name) < 0) {
    174         seq[i]=seq[j];
    175         j += (i=j) + 1;
    176       }
    177       else j = ir + 1;
    178     }
    179     seq[i] = temp;
    180   }
    181 }
Note: See TracChangeset for help on using the changeset viewer.