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/libdvo
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/libdvo/Makefile

    r15694 r16040  
    3636$(SRC)/version.$(ARCH).o         \
    3737$(SRC)/coordops.$(ARCH).o        \
     38$(SRC)/dvosorts.$(ARCH).o        \
    3839$(SRC)/dvo_photcode_ops.$(ARCH).o \
    3940$(SRC)/dvo_photcode_convert_elixir.$(ARCH).o \
  • trunk/Ohana/src/libdvo/include/dvo.h

    r15743 r16040  
    412412int        SkyTableSetFilenames    PROTO((SkyTable *sky, char *path, char *ext));
    413413
     414/* dvo-specific sorting functions */
     415void sortave (Average *ave, int N);
     416void sort_image_subset (Image *image, int *subset, int N);
     417void sort_coords_index (double *X, double *Y, int *S, int N);
     418void sort_stars_ra (Stars *stars, int N);
     419void sort_regions (SkyRegion *region, int N);
     420
    414421# endif
  • trunk/Ohana/src/libdvo/src/skyregion_gsc.c

    r12392 r16040  
    206206void SkyTableSort (SkyTable *table) {
    207207
    208   int i, j, l, ir, N;
    209208  SkyRegion *regions;
    210   SkyRegion tempregion;
    211   char *tempfile = NULL;
    212209  char **filename = NULL;
    213  
    214   N = table[0].Nregions;
     210
    215211  regions = table[0].regions;
    216212  filename = table[0].filename;
    217213
    218   if (N < 2) return;
    219   l = N >> 1;
    220   ir = N - 1;
    221   for (;;) {
    222     if (l > 0) {
    223       l--;
    224       tempregion = regions[l];
    225       if (filename) tempfile   = filename[l];
    226     } else {
    227       tempregion   = regions[ir];
    228       if (filename) tempfile     = filename[ir];
    229       regions[ir]   = regions[0];
    230       if (filename) filename[ir] = filename[0];
    231       if (--ir == 0) {
    232         regions[0]   = tempregion;
    233         if (filename) filename[0] = tempfile;
    234         return;
    235       }
    236     }
    237     i = l;
    238     j = (l << 1) + 1;
    239     while (j <= ir) {
    240       if (j < ir && regions[j].Rmin < regions[j+1].Rmin) ++j;
    241       if (tempregion.Rmin < regions[j].Rmin) {
    242         regions[i]   = regions[j];
    243         if (filename) filename[i] = filename[j];
    244         j += (i=j) + 1;
    245       }
    246       else j = ir + 1;
    247     }
    248     regions[i]   = tempregion;
    249     if (filename) filename[i] = tempfile;
    250   }
     214# define SWAPFUNC(A,B){ int tmp; \
     215  char     *tempfile = filename[A]; filename[A] = filename[B]; filename[B] = tempfile; \
     216  SkyRegion tempregion = regions[A]; regions[A] = regions[B]; regions[B] = tempregion; \
     217}
     218# define COMPARE(A,B)(regions[A].Rmin < regions[B].Rmin)
     219
     220  OHANA_SORT (table[0].Nregions, COMPARE, SWAPFUNC);
     221
     222# undef SWAPFUNC
     223# undef COMPARE
    251224}
    252225
Note: See TracChangeset for help on using the changeset viewer.