Changeset 16040
- Timestamp:
- Jan 8, 2008, 12:50:52 PM (18 years ago)
- Location:
- trunk/Ohana/src
- Files:
-
- 3 added
- 7 deleted
- 75 edited
-
addstar/Makefile (modified) (4 diffs)
-
addstar/src/SEDops.c (modified) (2 diffs)
-
addstar/src/SkyListForStars.c (modified) (1 diff)
-
addstar/src/calibrate.c (modified) (1 diff)
-
addstar/src/find_matches.c (modified) (4 diffs)
-
addstar/src/find_matches_closest.c (modified) (4 diffs)
-
addstar/src/find_matches_refstars.c (modified) (4 diffs)
-
addstar/src/sort_lists.c (deleted)
-
delstar/Makefile (modified) (1 diff)
-
delstar/src/sort_lists.c (deleted)
-
fixcat/include/markstar.h (modified) (1 diff)
-
fixcat/src/find_bright_stars.c (modified) (3 diffs)
-
fixcat/src/find_matches.c (modified) (3 diffs)
-
fixcat/src/gcatstats.c (modified) (3 diffs)
-
fixcat/src/mark_trail.c (modified) (1 diff)
-
fixcat/src/sorts.c (modified) (1 diff)
-
gastro/Makefile (modified) (1 diff)
-
gastro/src/gfit.c (modified) (2 diffs)
-
gastro/src/gfitpoly.c (modified) (3 diffs)
-
gastro/src/gstars.c (modified) (3 diffs)
-
gastro/src/sort.c (deleted)
-
gastro2/src/grid.c (modified) (2 diffs)
-
gastro2/src/lumfunc.c (modified) (1 diff)
-
gastro2/src/sort.c (modified) (1 diff)
-
gcompare/include/gcompare.h (modified) (1 diff)
-
gcompare/src/gcompare.c (modified) (1 diff)
-
gcompare/src/neighbors.c (modified) (1 diff)
-
gcompare/src/sort.c (modified) (1 diff)
-
gophot/Makefile (modified) (1 diff)
-
gophot/src/fillerup.c (modified) (1 diff)
-
gophot/src/impaper2.c (modified) (1 diff)
-
gophot/src/mediansky.c (modified) (3 diffs)
-
gophot/src/paravg.c (modified) (1 diff)
-
gophot/src/sort.c (deleted)
-
imclean/src/sort_stars.c (modified) (1 diff)
-
imregister/Makefile (modified) (1 diff)
-
imregister/base/sort.c (modified) (1 diff)
-
imregister/imreg/cadc.c (modified) (1 diff)
-
imregister/imreg/unique.c (modified) (1 diff)
-
libdvo/Makefile (modified) (1 diff)
-
libdvo/include/dvo.h (modified) (1 diff)
-
libdvo/src/dvosorts.c (added)
-
libdvo/src/skyregion_gsc.c (modified) (1 diff)
-
libohana/Makefile (modified) (1 diff)
-
libohana/include/ohana.h (modified) (1 diff)
-
libohana/include/ohana_sort.h (added)
-
libohana/src/sorts.c (added)
-
lightcurve/Makefile (modified) (1 diff)
-
lightcurve/src/sort_seq.c (deleted)
-
lightcurve/src/sort_stars.c (modified) (1 diff)
-
markrock/include/markrock.h (modified) (1 diff)
-
markrock/src/find_bright_stars.c (modified) (4 diffs)
-
markrock/src/find_rocks.c (modified) (4 diffs)
-
markrock/src/gcatstats.c (modified) (3 diffs)
-
markrock/src/sorts.c (modified) (1 diff)
-
markstar/include/markstar.h (modified) (1 diff)
-
markstar/src/find_bright_stars.c (modified) (4 diffs)
-
markstar/src/find_matches.c (modified) (3 diffs)
-
markstar/src/gcatstats.c (modified) (3 diffs)
-
markstar/src/sorts.c (modified) (1 diff)
-
misc/src/cubefilter.c (modified) (1 diff)
-
mosastro/Makefile (modified) (1 diff)
-
mosastro/src/match.c (modified) (2 diffs)
-
mosastro/src/sort.c (deleted)
-
opihi/dvo/dvomisc.c (modified) (1 diff)
-
opihi/dvo/fitsed.c (modified) (2 diffs)
-
opihi/dvo/gstar.c (modified) (4 diffs)
-
opihi/dvo/lcurve.c (modified) (4 diffs)
-
opihi/dvo/lightcurve.c (modified) (4 diffs)
-
opihi/dvo/subpix.c (modified) (1 diff)
-
opihi/lib.data/Makefile (modified) (1 diff)
-
opihi/lib.data/sort.c (deleted)
-
opihi/lib.data/starfuncs.c (modified) (3 diffs)
-
opihi/lib.shell/CommandOps.c (modified) (2 diffs)
-
photdbc/src/join_stars.c (modified) (3 diffs)
-
photdbc/src/liststats.c (modified) (2 diffs)
-
photdbc/src/misc.c (modified) (1 diff)
-
relastro/Makefile (modified) (1 diff)
-
relastro/src/liststats.c (modified) (2 diffs)
-
relphot/Makefile (modified) (1 diff)
-
relphot/src/liststats.c (modified) (2 diffs)
-
tools/src/medianfilter.c (modified) (2 diffs)
-
uniphot/src/find_image_tgroups.c (modified) (1 diff)
-
uniphot/src/liststats.c (modified) (2 diffs)
-
uniphot/src/sort.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/addstar/Makefile
r15036 r16040 68 68 $(SRC)/ReadStarsTEXT.$(ARCH).o \ 69 69 $(SRC)/FilterStars.$(ARCH).o \ 70 $(SRC)/sort_lists.$(ARCH).o \71 70 $(SRC)/ImageOptions.$(ARCH).o \ 72 71 $(SRC)/GetFileMode.$(ARCH).o \ … … 114 113 $(SRC)/opening_angle.$(ARCH).o \ 115 114 $(SRC)/replace_match.$(ARCH).o \ 116 $(SRC)/sort_lists.$(ARCH).o \117 115 $(SRC)/update_coords.$(ARCH).o 118 116 … … 151 149 $(SRC)/SkyRegionUtils.$(ARCH).o \ 152 150 $(SRC)/SkyListForStars.$(ARCH).o \ 153 $(SRC)/sort_lists.$(ARCH).o \154 151 $(SRC)/update_coords.$(ARCH).o \ 155 152 $(SRC)/Shutdown.$(ARCH).o \ … … 194 191 $(SRC)/find_matches_refstars.$(ARCH).o \ 195 192 $(SRC)/args_load2mass.$(ARCH).o \ 196 $(SRC)/sort_lists.$(ARCH).o \197 193 $(SRC)/replace_match.$(ARCH).o \ 198 194 $(SRC)/update_coords.$(ARCH).o \ -
trunk/Ohana/src/addstar/src/SEDops.c
r13479 r16040 57 57 SEDtableRow **sort_SEDtable (SEDtableRow *raw, int N) { 58 58 59 int l,j,ir,i; 60 SEDtableRow **value, *temp; 59 int i; 60 61 SEDtableRow **value; 61 62 62 63 if (N <= 0) return (NULL); … … 66 67 value[i] = &raw[i]; 67 68 } 68 if (N < 2) return (value); 69 70 l = N >> 1; 71 ir = N - 1; 72 for (;;) { 73 if (l > 0) { 74 l--; 75 temp = value[l]; 76 } 77 else { 78 temp = value[ir]; 79 value[ir] = value[0]; 80 if (--ir == 0) { 81 value[0] = temp; 82 return (value); 83 } 84 } 85 i = l; 86 j = (l << 1) + 1; 87 while (j <= ir) { 88 if (j < ir && value[j][0].color < value[j+1][0].color) ++j; 89 if (temp[0].color < value[j][0].color) { 90 value[i] = value[j]; 91 j += (i=j) + 1; 92 } 93 else j = ir + 1; 94 } 95 value[i] = temp; 96 } 69 70 # define SWAPFUNC(A,B){ SEDtableRow *temp = value[A]; value[A] = value[B]; value[B] = temp; } 71 # define COMPARE(A,B)(value[A][0].color < value[B][0].color) 72 73 OHANA_SORT (N, COMPARE, SWAPFUNC); 74 75 # undef SWAPFUNC 76 # undef COMPARE 97 77 98 78 return (value); -
trunk/Ohana/src/addstar/src/SkyListForStars.c
r14401 r16040 15 15 list[0].ownElements = FALSE; // free these elements when freeing the list 16 16 17 sort_stars (stars, Nstars); /* sort by RA */17 sort_stars_ra (stars, Nstars); /* sort by RA */ 18 18 for (i = 0; i < Nstars; i++) { 19 19 if (stars[i].found) continue; -
trunk/Ohana/src/addstar/src/calibrate.c
r15509 r16040 188 188 return; 189 189 } 190 fsort 2(Dmag, dDmag, Nkeep);190 fsortpair (Dmag, dDmag, Nkeep); 191 191 192 192 /* take sort list of Dmag, find median */ -
trunk/Ohana/src/addstar/src/find_matches.c
r15743 r16040 5 5 int i, j, n, N, J, status, Nstars; 6 6 double RADIUS, RADIUS2; 7 float*X1, *Y1, *X2, *Y2;8 floatdX, dY, dR;7 double *X1, *Y1, *X2, *Y2; 8 double dX, dY, dR; 9 9 int *N1, *N2, *next_meas; 10 10 int Nave, NAVE, Nmeas, NMEAS, Nmatch; … … 21 21 22 22 /** allocate local arrays (stars) **/ 23 ALLOCATE (X1, float, NstarsIn);24 ALLOCATE (Y1, float, NstarsIn);23 ALLOCATE (X1, double, NstarsIn); 24 ALLOCATE (Y1, double, NstarsIn); 25 25 ALLOCATE (N1, int, NstarsIn); 26 26 27 27 /** allocate local arrays (catalog) **/ 28 28 NAVE = Nave = catalog[0].Naverage; 29 ALLOCATE (X2, float, NAVE);30 ALLOCATE (Y2, float, NAVE);29 ALLOCATE (X2, double, NAVE); 30 ALLOCATE (Y2, double, NAVE); 31 31 ALLOCATE (N2, int, NAVE); 32 32 ALLOCATE (catalog[0].found, int, NAVE); … … 60 60 Nstars = 0; 61 61 for (i = 0; i < NstarsIn; i++) { 62 status = fRD_to_XY (&X1[Nstars], &Y1[Nstars], stars[i].R, stars[i].D, &tcoords);62 status = RD_to_XY (&X1[Nstars], &Y1[Nstars], stars[i].R, stars[i].D, &tcoords); 63 63 if (!status) continue; 64 64 N1[Nstars] = i; … … 76 76 return (0); 77 77 } 78 if (Nstars > 1) sort_ lists(X1, Y1, N1, Nstars);78 if (Nstars > 1) sort_coords_index (X1, Y1, N1, Nstars); 79 79 80 80 /* build spatial index (RA sort) */ 81 81 for (i = 0; i < Nave; i++) { 82 fRD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R, catalog[0].average[i].D, &tcoords);82 RD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R, catalog[0].average[i].D, &tcoords); 83 83 N2[i] = i; 84 84 catalog[0].found[N2[i]] = -1; 85 85 } 86 if (Nave > 1) sort_ lists(X2, Y2, N2, Nave);86 if (Nave > 1) sort_coords_index (X2, Y2, N2, Nave); 87 87 88 88 /* set up pointers for linked list of measure */ -
trunk/Ohana/src/addstar/src/find_matches_closest.c
r15743 r16040 5 5 int i, j, n, N, J, Jmin, status, Nstars; 6 6 double RADIUS, RADIUS2, Rmin; 7 float*X1, *Y1, *X2, *Y2;8 floatdX, dY, dR;7 double *X1, *Y1, *X2, *Y2; 8 double dX, dY, dR; 9 9 int *N1, *N2, *next_meas, *next_miss; 10 10 int Nave, NAVE, Nmeas, NMEAS, Nmiss, NMISS, Nmatch; … … 21 21 22 22 /** allocate local arrays (stars) **/ 23 ALLOCATE (X1, float, NstarsIn);24 ALLOCATE (Y1, float, NstarsIn);23 ALLOCATE (X1, double, NstarsIn); 24 ALLOCATE (Y1, double, NstarsIn); 25 25 ALLOCATE (N1, int, NstarsIn); 26 26 27 27 /** allocate local arrays (catalog) **/ 28 28 NAVE = Nave = catalog[0].Naverage; 29 ALLOCATE (X2, float, NAVE);30 ALLOCATE (Y2, float, NAVE);29 ALLOCATE (X2, double, NAVE); 30 ALLOCATE (Y2, double, NAVE); 31 31 ALLOCATE (N2, int, NAVE); 32 32 ALLOCATE (catalog[0].found, int, NAVE); … … 61 61 Nstars = 0; 62 62 for (i = 0; i < NstarsIn; i++) { 63 status = fRD_to_XY (&X1[Nstars], &Y1[Nstars], stars[i].R, stars[i].D, &tcoords);63 status = RD_to_XY (&X1[Nstars], &Y1[Nstars], stars[i].R, stars[i].D, &tcoords); 64 64 if (!status) continue; 65 65 N1[Nstars] = i; … … 77 77 return (0); 78 78 } 79 if (Nstars > 1) sort_ lists(X1, Y1, N1, Nstars);79 if (Nstars > 1) sort_coords_index (X1, Y1, N1, Nstars); 80 80 81 81 /* build spatial index (RA sort) */ 82 82 for (i = 0; i < Nave; i++) { 83 fRD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R, catalog[0].average[i].D, &tcoords);83 RD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R, catalog[0].average[i].D, &tcoords); 84 84 N2[i] = i; 85 85 catalog[0].found[N2[i]] = -1; 86 86 } 87 if (Nave > 1) sort_ lists(X2, Y2, N2, Nave);87 if (Nave > 1) sort_coords_index (X2, Y2, N2, Nave); 88 88 89 89 /* set up pointers for linked list of measure, missing */ -
trunk/Ohana/src/addstar/src/find_matches_refstars.c
r15743 r16040 5 5 int i, j, k, n, m, N, J; 6 6 double RADIUS, RADIUS2; 7 float*X1, *Y1, *X2, *Y2;8 floatdX, dY, dR;7 double *X1, *Y1, *X2, *Y2; 8 double dX, dY, dR; 9 9 int *N1, *N2, *next, *next_miss, last, last_miss; 10 10 int Nave, NAVE, Nmeas, NMEAS, Nmiss, NMISS, Nmatch; … … 18 18 19 19 /** allocate local arrays (stars) **/ 20 ALLOCATE (X1, float, Nstars);21 ALLOCATE (Y1, float, Nstars);20 ALLOCATE (X1, double, Nstars); 21 ALLOCATE (Y1, double, Nstars); 22 22 ALLOCATE (N1, int, Nstars); 23 23 … … 25 25 Nave = catalog[0].Naverage; 26 26 NAVE = Nave + 1000; 27 ALLOCATE (X2, float, NAVE);28 ALLOCATE (Y2, float, NAVE);27 ALLOCATE (X2, double, NAVE); 28 ALLOCATE (Y2, double, NAVE); 29 29 ALLOCATE (N2, int, NAVE); 30 30 ALLOCATE (catalog[0].found, int, NAVE); … … 59 59 60 60 for (i = 0; i < Nstars; i++) { 61 fRD_to_XY (&X1[i], &Y1[i], stars[i][0].R, stars[i][0].D, &tcoords);61 RD_to_XY (&X1[i], &Y1[i], stars[i][0].R, stars[i][0].D, &tcoords); 62 62 N1[i] = i; 63 63 } 64 if (Nstars > 1) sort_ lists(X1, Y1, N1, Nstars);64 if (Nstars > 1) sort_coords_index (X1, Y1, N1, Nstars); 65 65 66 66 for (i = 0; i < Nave; i++) { 67 fRD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R, catalog[0].average[i].D, &tcoords);67 RD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R, catalog[0].average[i].D, &tcoords); 68 68 N2[i] = i; 69 69 catalog[0].found[N2[i]] = -1; 70 70 } 71 if (Nave > 1) sort_ lists(X2, Y2, N2, Nave);71 if (Nave > 1) sort_coords_index (X2, Y2, N2, Nave); 72 72 73 73 /* set up pointers for linked list of measurements */ -
trunk/Ohana/src/delstar/Makefile
r12842 r16040 32 32 $(SRC)/find_matches.$(ARCH).o \ 33 33 $(SRC)/parse_time.$(ARCH).o \ 34 $(SRC)/sort_lists.$(ARCH).o \35 34 $(SRC)/check_permissions.$(ARCH).o \ 36 35 $(SRC)/Shutdown.$(ARCH).o -
trunk/Ohana/src/fixcat/include/markstar.h
r3466 r16040 35 35 typedef struct { 36 36 Coords coords; 37 float*X, *Y;37 double *X, *Y; 38 38 int *N; 39 39 double RA[2], DEC[2]; -
trunk/Ohana/src/fixcat/src/find_bright_stars.c
r2490 r16040 10 10 double MinRA, MinDEC, MaxRA, MaxDEC, RaCenter, DecCenter; 11 11 Coords *tcoords; 12 float*X1, *Y1, *X2, *Y2;12 double *X1, *Y1, *X2, *Y2; 13 13 int *N1, *N2; 14 14 char *mark; … … 25 25 Y2 = catstats[0].Y; 26 26 N2 = catstats[0].N; 27 ALLOCATE (X1, float, Ngsc);28 ALLOCATE (Y1, float, Ngsc);27 ALLOCATE (X1, double, Ngsc); 28 ALLOCATE (Y1, double, Ngsc); 29 29 ALLOCATE (N1, int, Ngsc); 30 30 ALLOCATE (mark, char, Nave); … … 33 33 tcoords = &catstats[0].coords; 34 34 for (i = 0; i < Ngsc; i++) { 35 fRD_to_XY (&X1[i], &Y1[i], GSCdata.average[i].R, GSCdata.average[i].D, tcoords);35 RD_to_XY (&X1[i], &Y1[i], GSCdata.average[i].R, GSCdata.average[i].D, tcoords); 36 36 N1[i] = i; 37 37 } 38 if (Ngsc > 1) sort_ lists(X1, Y1, N1, Ngsc);38 if (Ngsc > 1) sort_coords_index (X1, Y1, N1, Ngsc); 39 39 40 40 /* first find stellar halos */ -
trunk/Ohana/src/fixcat/src/find_matches.c
r2490 r16040 9 9 int i, j, k, n, m, N, M, first_j; 10 10 double X, Y, RADIUS, RADIUS2; 11 float*X1, *Y1, *X2, *Y2;12 floatdX, dY, dR;11 double *X1, *Y1, *X2, *Y2; 12 double dX, dY, dR; 13 13 int *N1, *N2; 14 14 int Nstar, Nghost, Ng; … … 27 27 N2 = catstats[0].N; 28 28 29 ALLOCATE (X1, float, Nghost);30 ALLOCATE (Y1, float, Nghost);29 ALLOCATE (X1, double, Nghost); 30 ALLOCATE (Y1, double, Nghost); 31 31 ALLOCATE (N1, int, Nghost); 32 32 … … 34 34 tcoords = &catstats[0].coords; 35 35 for (i = 0; i < Nghost; i++) { 36 fRD_to_XY (&X1[i], &Y1[i], Ghostdata[0].average[i].R, Ghostdata[0].average[i].D, tcoords);36 RD_to_XY (&X1[i], &Y1[i], Ghostdata[0].average[i].R, Ghostdata[0].average[i].D, tcoords); 37 37 N1[i] = i; 38 38 } 39 if (Nghost > 1) sort_ lists(X1, Y1, N1, Nghost);39 if (Nghost > 1) sort_coords_index (X1, Y1, N1, Nghost); 40 40 41 41 /* choose a radius for matches */ -
trunk/Ohana/src/fixcat/src/gcatstats.c
r7080 r16040 9 9 double RaCenter, DecCenter; 10 10 double MinRA, MaxRA, MinDEC, MaxDEC; 11 float*X1, *Y1;11 double *X1, *Y1; 12 12 int *N1; 13 13 Coords tcoords; … … 41 41 42 42 /** allocate local arrays **/ 43 ALLOCATE (catstats[0].X, float, catalog[0].Naverage);44 ALLOCATE (catstats[0].Y, float, catalog[0].Naverage);43 ALLOCATE (catstats[0].X, double, catalog[0].Naverage); 44 ALLOCATE (catstats[0].Y, double, catalog[0].Naverage); 45 45 ALLOCATE (catstats[0].N, int, catalog[0].Naverage); 46 46 … … 58 58 Y1 = catstats[0].Y; 59 59 for (i = 0; i < catalog[0].Naverage; i++, X1++, Y1++) { 60 fRD_to_XY (X1, Y1, catalog[0].average[i].R, catalog[0].average[i].D, &catstats[0].coords);60 RD_to_XY (X1, Y1, catalog[0].average[i].R, catalog[0].average[i].D, &catstats[0].coords); 61 61 catstats[0].N[i] = i; 62 62 } 63 if (catalog[0].Naverage > 1) sort_ lists(catstats[0].X, catstats[0].Y, catstats[0].N, catalog[0].Naverage);63 if (catalog[0].Naverage > 1) sort_coords_index (catstats[0].X, catstats[0].Y, catstats[0].N, catalog[0].Naverage); 64 64 65 65 } -
trunk/Ohana/src/fixcat/src/mark_trail.c
r2490 r16040 11 11 { 12 12 13 float*R, *D;13 double *R, *D; 14 14 int j, k, jj, kk, N, NPTS, marked, start, end, Nm; 15 15 int *good, *seq, *N1; -
trunk/Ohana/src/fixcat/src/sorts.c
r2490 r16040 1 # include "markstar.h" 1 2 3 void sort_seq (double *X, int *S, int N) { 2 4 3 sort_lists (X, Y, S, N) 4 float *X, *Y; 5 int *S, N; 6 { 7 int l,j,ir,i; 8 double tX, tY, tS; 9 10 l = N >> 1; 11 ir = N - 1; 12 for (;;) { 13 if (l > 0) { 14 l--; 15 tX = X[l]; 16 tY = Y[l]; 17 tS = S[l]; 18 } 19 else { 20 tX = X[ir]; 21 X[ir] = X[0]; 22 tY = Y[ir]; 23 Y[ir] = Y[0]; 24 tS = S[ir]; 25 S[ir] = S[0]; 26 if (--ir == 0) { 27 X[0] = tX; 28 Y[0] = tY; 29 S[0] = tS; 30 return; 31 } 32 } 33 i = l; 34 j = (l << 1) + 1; 35 while (j <= ir) { 36 if (j < ir && X[j] < X[j+1]) j++; 37 if (tX < X[j]) { 38 X[i] = X[j]; 39 Y[i] = Y[j]; 40 S[i] = S[j]; 41 j += (i=j) + 1; 42 } 43 else j = ir + 1; 44 } 45 X[i] = tX; 46 Y[i] = tY; 47 S[i] = tS; 48 } 5 # define SWAPFUNC(A,B){ \ 6 double dtmp = X[A]; X[A] = X[B]; X[B] = dtmp; \ 7 int itmp = Y[A]; Y[A] = Y[B]; Y[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 49 16 } 50 17 51 sort_entries (X, Y, N)52 double *X, *Y;53 int N;54 {55 int l,j,ir,i;56 double tX, tY;57 58 l = N >> 1;59 ir = N - 1;60 for (;;) {61 if (l > 0) {62 l--;63 tX = X[l];64 tY = Y[l];65 }66 else {67 tX = X[ir];68 X[ir] = X[0];69 tY = Y[ir];70 Y[ir] = Y[0];71 if (--ir == 0) {72 X[0] = tX;73 Y[0] = tY;74 return;75 }76 }77 i = l;78 j = (l << 1) + 1;79 while (j <= ir) {80 if (j < ir && X[j] < X[j+1]) j++;81 if (tX < X[j]) {82 X[i] = X[j];83 Y[i] = Y[j];84 j += (i=j) + 1;85 }86 else j = ir + 1;87 }88 X[i] = tX;89 Y[i] = tY;90 }91 }92 93 94 95 sort (X, N)96 double *X;97 int N;98 {99 int l,j,ir,i;100 double tX;101 102 l = N >> 1;103 ir = N - 1;104 for (;;) {105 if (l > 0) {106 l--;107 tX = X[l];108 }109 else {110 tX = X[ir];111 X[ir] = X[0];112 if (--ir == 0) {113 X[0] = tX;114 return;115 }116 }117 i = l;118 j = (l << 1) + 1;119 while (j <= ir) {120 if (j < ir && X[j] < X[j+1]) j++;121 if (tX < X[j]) {122 X[i] = X[j];123 j += (i=j) + 1;124 }125 else j = ir + 1;126 }127 X[i] = tX;128 }129 }130 131 132 sort_seq (X, S, N)133 double *X;134 int *S;135 int N;136 {137 int l,j,ir,i;138 int tS;139 double tX;140 141 l = N >> 1;142 ir = N - 1;143 for (;;) {144 if (l > 0) {145 l--;146 tX = X[l];147 tS = S[l];148 }149 else {150 tX = X[ir];151 X[ir] = X[0];152 tS = S[ir];153 S[ir] = S[0];154 if (--ir == 0) {155 X[0] = tX;156 S[0] = tS;157 return;158 }159 }160 i = l;161 j = (l << 1) + 1;162 while (j <= ir) {163 if (j < ir && X[j] < X[j+1]) j++;164 if (tX < X[j]) {165 X[i] = X[j];166 S[i] = S[j];167 j += (i=j) + 1;168 }169 else j = ir + 1;170 }171 X[i] = tX;172 S[i] = tS;173 }174 }175 -
trunk/Ohana/src/gastro/Makefile
r13479 r16040 31 31 $(SRC)/gheader.$(ARCH).o \ 32 32 $(SRC)/ConfigInit.$(ARCH).o \ 33 $(SRC)/sort.$(ARCH).o \34 33 $(SRC)/gfitpoly.$(ARCH).o \ 35 34 $(SRC)/get_region_coords.$(ARCH).o \ -
trunk/Ohana/src/gastro/src/gfit.c
r8299 r16040 58 58 tmpN1[i] = i; 59 59 } 60 if (N1 > 1) sort_ lists(tmpX1, tmpY1, tmpN1, N1);60 if (N1 > 1) sort_coords_index (tmpX1, tmpY1, tmpN1, N1); 61 61 62 62 … … 128 128 } 129 129 130 if (N2 > 1) sort_ lists(tmpX2, tmpY2, tmpN2, N2);130 if (N2 > 1) sort_coords_index (tmpX2, tmpY2, tmpN2, N2); 131 131 132 132 /* find matched stars */ -
trunk/Ohana/src/gastro/src/gfitpoly.c
r8299 r16040 64 64 tmpN1[i] = i; 65 65 } 66 if (N1 > 1) sort_ lists(tmpX1, tmpY1, tmpN1, N1);66 if (N1 > 1) sort_coords_index (tmpX1, tmpY1, tmpN1, N1); 67 67 for (i = 0; i < N2; i++) { 68 68 tmpX2[i] = stars2[i].X; … … 70 70 tmpN2[i] = i; 71 71 } 72 if (N2 > 1) sort_ lists(tmpX2, tmpY2, tmpN2, N2);72 if (N2 > 1) sort_coords_index (tmpX2, tmpY2, tmpN2, N2); 73 73 74 74 /* choose iteration ranges */ … … 119 119 tmpN1[i] = i; 120 120 } 121 if (N1 > 1) sort_ lists(tmpX1, tmpY1, tmpN1, N1);121 if (N1 > 1) sort_coords_index (tmpX1, tmpY1, tmpN1, N1); 122 122 dX = dY = d2X = d2Y = N = 0; 123 123 } -
trunk/Ohana/src/gastro/src/gstars.c
r14590 r16040 9 9 # include <sys/time.h> 10 10 # include <time.h> 11 12 void sort_stars_mag (SStars *stars, int N) { 13 14 # define SWAPFUNC(A,B){ SStars tmp; tmp = stars[A]; stars[A] = stars[B]; stars[B] = tmp; } 15 # define COMPARE(A,B)(stars[A].mag < stars[B].mag) 16 17 OHANA_SORT (N, COMPARE, SWAPFUNC); 18 19 # undef SWAPFUNC 20 # undef COMPARE 21 22 } 11 23 12 24 SStars *gstars (char *file, int *NSTARS, Coords *coords, int *NX, int *NY, double *dNdM) { … … 182 194 } 183 195 184 sort_stars (stars, N); /* sorting by magnitude */196 sort_stars_mag (stars, N); /* sorting by magnitude */ 185 197 Nstars = N; 186 198 … … 200 212 } 201 213 202 void sort_stars (SStars *stars, int N) {203 204 int l,j,ir,i;205 SStars tempstar;206 207 l = N >> 1;208 ir = N - 1;209 for (;;) {210 if (l > 0) {211 tempstar = stars[--l];212 }213 else {214 tempstar = stars[ir];215 stars[ir] = stars[0];216 if (--ir == 0) {217 stars[0] = tempstar;218 return;219 }220 }221 i = l;222 j = (l << 1) + 1;223 while (j <= ir) {224 if (j < ir && stars[j].mag < stars[j+1].mag) ++j;225 if (tempstar.mag < stars[j].mag) {226 stars[i] = stars[j];227 j += (i=j) + 1;228 }229 else j = ir + 1;230 }231 stars[i] = tempstar;232 }233 }234 235 236 214 # if (0) 237 215 -
trunk/Ohana/src/gastro2/src/grid.c
r8241 r16040 55 55 ALLOCATE (ntmp, double, Nbin); 56 56 bcopy (N, ntmp, Nbin*sizeof(double)); 57 sort (ntmp, Nbin);57 dsort (ntmp, Nbin); 58 58 for (i = 0; (ntmp[i] == 0) && (i < Nbin); i++); 59 59 Nval = MIN (Nbin - 1, (int)(0.75*(Nbin - i)) + i); … … 168 168 ALLOCATE (ntmp, double, Nbin); 169 169 bcopy (N, ntmp, Nbin*sizeof(double)); 170 sort (ntmp, Nbin);170 dsort (ntmp, Nbin); 171 171 for (i = 0; (ntmp[i] == 0) && (i < Nbin); i++); 172 172 Nval = MIN (Nbin - 1, (int)(0.75*(Nbin - i)) + i); -
trunk/Ohana/src/gastro2/src/lumfunc.c
r9728 r16040 60 60 61 61 /* keep inner 80% */ 62 sort_lum(rbin, bin, lbin, Nb);62 dsortthree (rbin, bin, lbin, Nb); 63 63 for (j = 0, i = 0.1*Nb; i < 0.9*Nb; i++, j++) { 64 64 bin[j] = bin[i]; -
trunk/Ohana/src/gastro2/src/sort.c
r11081 r16040 1 1 # include "gastro2.h" 2 3 void sort_lum (double *R, double *X, double *Y, int N) {4 5 int l,j,ir,i;6 double tX, tY, tR;7 8 if (N < 2) return;9 10 l = N >> 1;11 ir = N - 1;12 for (;;) {13 if (l > 0) {14 l--;15 tX = X[l];16 tY = Y[l];17 tR = R[l];18 }19 else {20 tX = X[ir];21 X[ir] = X[0];22 tY = Y[ir];23 Y[ir] = Y[0];24 tR = R[ir];25 R[ir] = R[0];26 if (--ir == 0) {27 X[0] = tX;28 Y[0] = tY;29 R[0] = tR;30 return;31 }32 }33 i = l;34 j = (l << 1) + 1;35 while (j <= ir) {36 if (j < ir && R[j] < R[j+1]) j++;37 if (tR < R[j]) {38 X[i] = X[j];39 Y[i] = Y[j];40 R[i] = R[j];41 j += (i=j) + 1;42 }43 else j = ir + 1;44 }45 X[i] = tX;46 Y[i] = tY;47 R[i] = tR;48 }49 }50 51 void sort_lists (double *X, double *Y, int *S, int N) {52 53 int l,j,ir,i;54 double tX, tY, tS;55 56 if (N < 2) return;57 58 l = N >> 1;59 ir = N - 1;60 for (;;) {61 if (l > 0) {62 l--;63 tX = X[l];64 tY = Y[l];65 tS = S[l];66 }67 else {68 tX = X[ir];69 X[ir] = X[0];70 tY = Y[ir];71 Y[ir] = Y[0];72 tS = S[ir];73 S[ir] = S[0];74 if (--ir == 0) {75 X[0] = tX;76 Y[0] = tY;77 S[0] = tS;78 return;79 }80 }81 i = l;82 j = (l << 1) + 1;83 while (j <= ir) {84 if (j < ir && X[j] < X[j+1]) j++;85 if (tX < X[j]) {86 X[i] = X[j];87 Y[i] = Y[j];88 S[i] = S[j];89 j += (i=j) + 1;90 }91 else j = ir + 1;92 }93 X[i] = tX;94 Y[i] = tY;95 S[i] = tS;96 }97 }98 99 void sort (double *X, int N) {100 101 int l,j,ir,i;102 double tmp;103 104 if (N < 2) return;105 106 l = N >> 1;107 ir = N - 1;108 for (;;) {109 if (l > 0) {110 l--;111 tmp = X[l];112 }113 else {114 tmp = X[ir];115 X[ir] = X[0];116 if (--ir == 0) {117 X[0] = tmp;118 return;119 }120 }121 i = l;122 j = (l << 1) + 1;123 while (j <= ir) {124 if (j < ir && X[j] < X[j+1]) j++;125 if (tmp < X[j]) {126 X[i] = X[j];127 j += (i=j) + 1;128 }129 else j = ir + 1;130 }131 X[i] = tmp;132 }133 }134 2 135 3 void sort_stars_mag (StarData *stars, int N) { 136 4 137 int l,j,ir,i; 138 StarData tempstar; 139 140 if (N < 2) return; 5 # define SWAPFUNC(A,B){ StarData tmp; tmp = stars[A]; stars[A] = stars[B]; stars[B] = tmp; } 6 # define COMPARE(A,B)(stars[A].M < stars[B].M) 141 7 142 l = N >> 1; 143 ir = N - 1; 144 for (;;) { 145 if (l > 0) { 146 tempstar = stars[--l]; 147 } 148 else { 149 tempstar = stars[ir]; 150 stars[ir] = stars[0]; 151 if (--ir == 0) { 152 stars[0] = tempstar; 153 return; 154 } 155 } 156 i = l; 157 j = (l << 1) + 1; 158 while (j <= ir) { 159 if (j < ir && stars[j].M < stars[j+1].M) ++j; 160 if (tempstar.M < stars[j].M) { 161 stars[i] = stars[j]; 162 j += (i=j) + 1; 163 } 164 else j = ir + 1; 165 } 166 stars[i] = tempstar; 167 } 8 OHANA_SORT (N, COMPARE, SWAPFUNC); 9 10 # undef SWAPFUNC 11 # undef COMPARE 12 168 13 } 169 14 170 15 void sort_stars_X (StarData *stars, int N) { 171 16 172 int l,j,ir,i; 173 StarData tempstar; 174 175 if (N < 2) return; 17 # define SWAPFUNC(A,B){ StarData tmp; tmp = stars[A]; stars[A] = stars[B]; stars[B] = tmp; } 18 # define COMPARE(A,B)(stars[A].X < stars[B].X) 176 19 177 l = N >> 1; 178 ir = N - 1; 179 for (;;) { 180 if (l > 0) { 181 tempstar = stars[--l]; 182 } 183 else { 184 tempstar = stars[ir]; 185 stars[ir] = stars[0]; 186 if (--ir == 0) { 187 stars[0] = tempstar; 188 return; 189 } 190 } 191 i = l; 192 j = (l << 1) + 1; 193 while (j <= ir) { 194 if (j < ir && stars[j].X < stars[j+1].X) ++j; 195 if (tempstar.X < stars[j].X) { 196 stars[i] = stars[j]; 197 j += (i=j) + 1; 198 } 199 else j = ir + 1; 200 } 201 stars[i] = tempstar; 202 } 20 OHANA_SORT (N, COMPARE, SWAPFUNC); 21 22 # undef SWAPFUNC 23 # undef COMPARE 24 203 25 } 204 205 -
trunk/Ohana/src/gcompare/include/gcompare.h
r2421 r16040 28 28 int get_argument PROTO((int, char **, char *)); 29 29 int remove_argument PROTO((int, int *, char **)); 30 void sortPROTO((data_type));30 void data_sort PROTO((data_type)); 31 31 void output PROTO((data_type, data_type, match_type *, int, int, int, int, int)); 32 32 char *nextword PROTO((char *)); -
trunk/Ohana/src/gcompare/src/gcompare.c
r2421 r16040 71 71 fprintf (stderr, "list 2: %d values %d %d\n", data2.Nvalues, X2, Y2); 72 72 73 sort (data1); fprintf (stderr, "sorted 1\n");74 sort (data2); fprintf (stderr, "sorted 2\n");73 data_sort (data1); fprintf (stderr, "sorted 1\n"); 74 data_sort (data2); fprintf (stderr, "sorted 2\n"); 75 75 76 76 fprintf (stderr, "noauto: %e\n", noauto); -
trunk/Ohana/src/gcompare/src/neighbors.c
r2421 r16040 46 46 fprintf (stderr, "list 1: %d values %d %d\n", data1.Nvalues, X1, Y1); 47 47 48 sort (data1); fprintf (stderr, "sorted 1\n");48 data_sort (data1); fprintf (stderr, "sorted 1\n"); 49 49 50 50 count_neighbors (data1, radius, DX, DY); -
trunk/Ohana/src/gcompare/src/sort.c
r2421 r16040 1 1 # include "gcompare.h" 2 2 3 void sort (data) 4 data_type data; 5 { 6 int l,j,ir,i, N; 7 value_type temp; 3 void data_sort (data_type data) { 8 4 9 N = data.Nvalues; 10 if (N == 1) 11 return; 5 # define SWAPFUNC(A,B){ value_type tmp; tmp = data.values[A]; data.values[A] = data.values[B]; data.values[B] = tmp; } 6 # define COMPARE(A,B)(data.values[A].X < data.values[B].X) 12 7 13 l = N >> 1; 14 ir = N - 1; 15 for (;;) { 16 if (l > 0) { 17 temp = data.values[--l]; 18 } 19 else { 20 temp = data.values[ir]; 21 data.values[ir] = data.values[0]; 22 if (--ir == 0) { 23 data.values[0] = temp; 24 return; 25 } 26 } 27 i = l; 28 j = (l << 1) + 1; 29 while (j <= ir) { 30 if (j < ir && data.values[j].X < data.values[j+1].X) ++j; 31 if (temp.X < data.values[j].X) { 32 data.values[i]=data.values[j]; 33 j += (i=j) + 1; 34 } 35 else j = ir + 1; 36 } 37 data.values[i] = temp; 38 } 8 OHANA_SORT (data.Nvalues, COMPARE, SWAPFUNC); 9 10 # undef SWAPFUNC 11 # undef COMPARE 12 39 13 } 40 -
trunk/Ohana/src/gophot/Makefile
r12842 r16040 33 33 $(SRC)/shape.$(ARCH).o $(SRC)/galaxy.$(ARCH).o \ 34 34 $(SRC)/transmask.$(ARCH).o $(SRC)/cosmic.$(ARCH).o \ 35 $(SRC)/impaper2.$(ARCH).o $(SRC)/sort.$(ARCH).o\35 $(SRC)/impaper2.$(ARCH).o \ 36 36 $(SRC)/oblit.$(ARCH).o $(SRC)/toobright.$(ARCH).o \ 37 37 $(SRC)/Chisq.$(ARCH).o $(SRC)/oblims.$(ARCH).o \ -
trunk/Ohana/src/gophot/src/fillerup.c
r2473 r16040 50 50 if (nsky == 0) return (FALSE); 51 51 52 sort (ts, nsky);52 fsort (ts, nsky); 53 53 sky = ts[(int)(0.5*nsky)]; 54 54 sum2 = sky; -
trunk/Ohana/src/gophot/src/impaper2.c
r2473 r16040 20 20 if (nsort < 1) return (0); 21 21 22 sort (zsort, nsort);22 fsort (zsort, nsort); 23 23 24 24 sky = 0; -
trunk/Ohana/src/gophot/src/mediansky.c
r2473 r16040 4 4 static int Nx, Ny; 5 5 static float fx, fy; 6 sort (float *, int);7 6 8 7 int make_mediansky () { … … 59 58 } 60 59 61 sort (temp, n);60 fsort (temp, n); 62 61 value = temp[(int)(0.5*n)]; 63 62 … … 86 85 memcpy (temp, mediansky, Npix*sizeof(float)); 87 86 88 sort (temp, Npix);87 fsort (temp, Npix); 89 88 90 89 *sky = temp[(int)(0.5*Npix)]; -
trunk/Ohana/src/gophot/src/paravg.c
r2473 r16040 1 1 # include "gophot.h" 2 3 sortkey (int *index, float *key, int N) { 4 5 # define SWAPFUNC(A,B){ \ 6 int itmp; itmp = index[A]; index[A] = index[B]; index[B] = itmp; \ 7 float ftmp; ftmp = key[A]; key[A] = key[B]; key[B] = ftmp; \ 8 } 9 # define COMPARE(A,B)(key[A] < key[B]) 10 11 OHANA_SORT (N, COMPARE, SWAPFUNC); 12 13 # undef SWAPFUNC 14 # undef COMPARE 15 16 } 2 17 3 18 paravg () { -
trunk/Ohana/src/imclean/src/sort_stars.c
r3519 r16040 1 1 # include "imclean.h" 2 2 3 void sort_stars (SMPData * X, int N) {3 void sort_stars (SMPData *stars, int N) { 4 4 5 int l,j,ir,i; 6 SMPData tX; 7 8 if (N < 1) return; 9 l = N >> 1; 10 ir = N - 1; 11 for (;;) { 12 if (l > 0) { 13 l--; 14 tX = X[l]; 15 } 16 else { 17 tX = X[ir]; 18 X[ir] = X[0]; 19 if (--ir == 0) { 20 X[0] = tX; 21 return; 22 } 23 } 24 i = l; 25 j = (l << 1) + 1; 26 while (j <= ir) { 27 if (j < ir && X[j].X < X[j+1].X) j++; 28 if (tX.X < X[j].X) { 29 X[i] = X[j]; 30 j += (i=j) + 1; 31 } 32 else j = ir + 1; 33 } 34 X[i] = tX; 35 } 5 # define SWAPFUNC(A,B){ SMPData tmp; tmp = stars[A]; stars[A] = stars[B]; stars[B] = tmp; } 6 # define COMPARE(A,B)(stars[A].X < stars[B].X) 7 8 OHANA_SORT (N, COMPARE, SWAPFUNC); 9 10 # undef SWAPFUNC 11 # undef COMPARE 12 36 13 } -
trunk/Ohana/src/imregister/Makefile
r12842 r16040 142 142 $(BASEDIR)/version.$(ARCH).o \ 143 143 $(BASEDIR)/parse_time.$(ARCH).o \ 144 $(BASEDIR)/fits_scan_nchar.$(ARCH).o \ 145 $(BASEDIR)/sort.$(ARCH).o 144 $(BASEDIR)/fits_scan_nchar.$(ARCH).o 146 145 147 146 $(SRC)/photcode-table.$(ARCH).o \ -
trunk/Ohana/src/imregister/base/sort.c
r2803 r16040 1 1 # include <string.h> 2 3 void sort (float *value, int N) {4 5 int l,j,ir,i;6 float temp;7 8 if (N < 2) return;9 l = N >> 1;10 ir = N - 1;11 for (;;) {12 if (l > 0) {13 temp = value[--l];14 }15 else {16 temp = value[ir];17 value[ir] = value[0];18 if (--ir == 0) {19 value[0] = temp;20 return;21 }22 }23 i = l;24 j = (l << 1) + 1;25 while (j <= ir) {26 if (j < ir && value[j] < value[j+1]) ++j;27 if (temp < value[j]) {28 value[i]=value[j];29 j += (i=j) + 1;30 }31 else j = ir + 1;32 }33 value[i] = temp;34 }35 }36 37 void dsort (double *value, int N) {38 39 int l,j,ir,i;40 double temp;41 42 if (N < 2) return;43 l = N >> 1;44 ir = N - 1;45 for (;;) {46 if (l > 0) {47 temp = value[--l];48 }49 else {50 temp = value[ir];51 value[ir] = value[0];52 if (--ir == 0) {53 value[0] = temp;54 return;55 }56 }57 i = l;58 j = (l << 1) + 1;59 while (j <= ir) {60 if (j < ir && value[j] < value[j+1]) ++j;61 if (temp < value[j]) {62 value[i]=value[j];63 j += (i=j) + 1;64 }65 else j = ir + 1;66 }67 value[i] = temp;68 }69 }70 2 71 3 void sortstr (char **S, int *X, int N) { -
trunk/Ohana/src/imregister/imreg/cadc.c
r14590 r16040 212 212 entry[i] = match[i]; 213 213 } 214 sortpair (index, entry, Nmatch);214 isortpair (index, entry, Nmatch); 215 215 *Index = index; 216 216 *Entry = entry; -
trunk/Ohana/src/imregister/imreg/unique.c
r3606 r16040 63 63 return (match); 64 64 } 65 66 void sortstr (char **S, int *X, int N) { 67 68 # define SWAPFUNC(A,B){ \ 69 char *tmp = S[A]; S[A] = S[B]; S[B] = tmp; \ 70 int itmp = X[A]; X[A] = X[B]; X[B] = itmp; \ 71 } 72 # define COMPARE(A,B)(strcmp(S[A], S[B]) < 0) 73 74 OHANA_SORT (N, COMPARE, SWAPFUNC); 75 76 # undef SWAPFUNC 77 # undef COMPARE 78 79 } -
trunk/Ohana/src/libdvo/Makefile
r15694 r16040 36 36 $(SRC)/version.$(ARCH).o \ 37 37 $(SRC)/coordops.$(ARCH).o \ 38 $(SRC)/dvosorts.$(ARCH).o \ 38 39 $(SRC)/dvo_photcode_ops.$(ARCH).o \ 39 40 $(SRC)/dvo_photcode_convert_elixir.$(ARCH).o \ -
trunk/Ohana/src/libdvo/include/dvo.h
r15743 r16040 412 412 int SkyTableSetFilenames PROTO((SkyTable *sky, char *path, char *ext)); 413 413 414 /* dvo-specific sorting functions */ 415 void sortave (Average *ave, int N); 416 void sort_image_subset (Image *image, int *subset, int N); 417 void sort_coords_index (double *X, double *Y, int *S, int N); 418 void sort_stars_ra (Stars *stars, int N); 419 void sort_regions (SkyRegion *region, int N); 420 414 421 # endif -
trunk/Ohana/src/libdvo/src/skyregion_gsc.c
r12392 r16040 206 206 void SkyTableSort (SkyTable *table) { 207 207 208 int i, j, l, ir, N;209 208 SkyRegion *regions; 210 SkyRegion tempregion;211 char *tempfile = NULL;212 209 char **filename = NULL; 213 214 N = table[0].Nregions; 210 215 211 regions = table[0].regions; 216 212 filename = table[0].filename; 217 213 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 251 224 } 252 225 -
trunk/Ohana/src/libohana/Makefile
r12842 r16040 27 27 28 28 INCS = \ 29 $(DESTINC)/Xohana.h \30 29 $(DESTINC)/ohana_allocate.h \ 30 $(DESTINC)/ohana_sort.h \ 31 31 $(DESTINC)/ohana.h 32 32 33 33 OBJS = \ 34 34 $(SRC)/ohana_allocate.$(ARCH).o \ 35 $(SRC)/sorts.$(ARCH).o \ 35 36 $(SRC)/string.$(ARCH).o \ 36 37 $(SRC)/findexec.$(ARCH).o \ -
trunk/Ohana/src/libohana/include/ohana.h
r14590 r16040 128 128 # define OHANA_WHITESPACE(c)(((c) == 0x09) || ((c) == 0x0a) || ((c) == 0x0b) || ((c) == 0x0b) || ((c) == 0x0c) || ((c) == 0x0d) || ((c) == 0x20)) 129 129 130 // sorting is now defined as a macro call 131 # include <ohana_sort.h> 132 130 133 /* socket / pipe communication buffer */ 131 134 typedef struct { -
trunk/Ohana/src/lightcurve/Makefile
r12842 r16040 26 26 $(SRC)/get_info.$(ARCH).o $(SRC)/make_table.$(ARCH).o \ 27 27 $(SRC)/lightcurve.$(ARCH).o \ 28 $(SRC)/sort_seq.$(ARCH).o \29 28 $(SRC)/help.$(ARCH).o 30 29 -
trunk/Ohana/src/lightcurve/src/sort_stars.c
r2490 r16040 1 1 # include "lightcurve.h" 2 2 3 void sort_stars (radec, stars, Nstars) 4 int **radec; 5 Star *stars; 6 int Nstars; 7 { 3 // construct an index for the stars sorted by RA 4 void sort_stars (int **index, Star *stars, int Nstars) { 8 5 9 6 int i; 10 7 double *RAs; 11 8 12 ALLOCATE (radec[0], int, Nstars); 13 ALLOCATE (RAs, double, Nstars); 9 ALLOCATE (myIndex, int, Nstars); 14 10 for (i = 0; i < Nstars; i++) { 15 radec[0][i] = i; 16 RAs[i] = stars[i].RA; 11 myIndex[i] = i; 17 12 } 18 13 19 sort_seq (radec[0], RAs, Nstars); 20 free (RAs); 14 # define SWAPFUNC(A,B){ int tmp = myIndex[A]; myIndex[A] = myIndex[B]; myIndex[B] = tmp; } 15 # define COMPARE(A,B)(stars[myIndex[A]].RA < stars[myIndex[B]].RA) 21 16 17 OHANA_SORT (Nstars, COMPARE, SWAPFUNC); 18 19 # undef SWAPFUNC 20 # undef COMPARE 21 22 *index = myIndex; 22 23 } 23 24 -
trunk/Ohana/src/markrock/include/markrock.h
r4828 r16040 4 4 typedef struct { 5 5 Coords coords; 6 float*X, *Y;6 double *X, *Y; 7 7 int *N; 8 8 double RA[2], DEC[2]; -
trunk/Ohana/src/markrock/src/find_bright_stars.c
r2490 r16040 1 1 # include "markrock.h" 2 2 3 find_bright_stars (catalog, catstats) 4 Catalog catalog[]; 5 CatStats catstats[]; 6 { 3 void find_bright_stars (Catalog *catalog, CatStats *catstats) { 7 4 8 5 int i, j, n, m, first_j, Nave, Ngsc, Nmark; … … 10 7 double MinRA, MinDEC, MaxRA, MaxDEC, RaCenter, DecCenter; 11 8 Coords *tcoords; 12 float*X1, *Y1, *X2, *Y2;9 double *X1, *Y1, *X2, *Y2; 13 10 int *N1, *N2; 14 11 char *mark; … … 25 22 Y2 = catstats[0].Y; 26 23 N2 = catstats[0].N; 27 ALLOCATE (X1, float, Ngsc);28 ALLOCATE (Y1, float, Ngsc);24 ALLOCATE (X1, double, Ngsc); 25 ALLOCATE (Y1, double, Ngsc); 29 26 ALLOCATE (N1, int, Ngsc); 30 27 ALLOCATE (mark, char, Nave); … … 33 30 tcoords = &catstats[0].coords; 34 31 for (i = 0; i < Ngsc; i++) { 35 fRD_to_XY (&X1[i], &Y1[i], GSCdata.average[i].R, GSCdata.average[i].D, tcoords);32 RD_to_XY (&X1[i], &Y1[i], GSCdata.average[i].R, GSCdata.average[i].D, tcoords); 36 33 N1[i] = i; 37 34 } 38 if (Ngsc > 1) sort_ lists(X1, Y1, N1, Ngsc);35 if (Ngsc > 1) sort_coords_index (X1, Y1, N1, Ngsc); 39 36 40 37 /* first find stellar halos */ -
trunk/Ohana/src/markrock/src/find_rocks.c
r2490 r16040 1 1 # include "markrock.h" 2 2 3 Rocks *find_rocks (catalog, catstats, nrocks) 4 Catalog catalog[]; 5 CatStats catstats[]; 6 int *nrocks; 7 { 3 Rocks *find_rocks (Catalog *catalog, CatStats *catstats, int *nrocks) { 8 4 9 5 int i, j, k, n, m, N, M, first_j, NOBJECT, Nobject, Nrocks, NROCKS; 10 6 double X, Y, RADIUS2; 11 float*X1, *Y1;12 floatdX, dY, dR;7 double *X1, *Y1; 8 double dX, dY, dR; 13 9 float dtime; 14 10 int *N1, *N0; … … 29 25 30 26 NOBJECT = 1000; 31 ALLOCATE (X1, float, NOBJECT);32 ALLOCATE (Y1, float, NOBJECT);27 ALLOCATE (X1, double, NOBJECT); 28 ALLOCATE (Y1, double, NOBJECT); 33 29 ALLOCATE (T1, int, NOBJECT); 34 30 ALLOCATE (N1, int, NOBJECT); … … 68 64 if (Nobject == NOBJECT - 1) { 69 65 NOBJECT += 1000; 70 REALLOCATE (X1, float, NOBJECT);71 REALLOCATE (Y1, float, NOBJECT);66 REALLOCATE (X1, double, NOBJECT); 67 REALLOCATE (Y1, double, NOBJECT); 72 68 REALLOCATE (T1, int, NOBJECT); 73 69 REALLOCATE (N1, int, NOBJECT); … … 75 71 } 76 72 } 77 REALLOCATE (X1, float, Nobject);78 REALLOCATE (Y1, float, Nobject);73 REALLOCATE (X1, double, Nobject); 74 REALLOCATE (Y1, double, Nobject); 79 75 REALLOCATE (T1, int, Nobject); 80 76 REALLOCATE (N1, int, Nobject); -
trunk/Ohana/src/markrock/src/gcatstats.c
r7080 r16040 9 9 double RaCenter, DecCenter; 10 10 double MinRA, MaxRA, MinDEC, MaxDEC; 11 float*X1, *Y1;11 double *X1, *Y1; 12 12 int *N1; 13 13 Coords tcoords; … … 29 29 30 30 /** allocate local arrays **/ 31 ALLOCATE (catstats[0].X, float, catalog[0].Naverage);32 ALLOCATE (catstats[0].Y, float, catalog[0].Naverage);31 ALLOCATE (catstats[0].X, double, catalog[0].Naverage); 32 ALLOCATE (catstats[0].Y, double, catalog[0].Naverage); 33 33 ALLOCATE (catstats[0].N, int, catalog[0].Naverage); 34 34 … … 49 49 catstats[0].N[i] = i; 50 50 } 51 if (catalog[0].Naverage > 1) sort_ lists(catstats[0].X, catstats[0].Y, catstats[0].N, catalog[0].Naverage);51 if (catalog[0].Naverage > 1) sort_coords_index (catstats[0].X, catstats[0].Y, catstats[0].N, catalog[0].Naverage); 52 52 53 53 } -
trunk/Ohana/src/markrock/src/sorts.c
r2490 r16040 1 # include "markrock.h" 1 2 2 sort_set (X, Y, T, S, N) 3 float *X, *Y; 4 int *S, N; 5 int *T; 6 { 7 int l,j,ir,i; 8 unsigned int tT; 9 double tX, tY, tS; 10 11 l = N >> 1; 12 ir = N - 1; 13 for (;;) { 14 if (l > 0) { 15 l--; 16 tX = X[l]; 17 tY = Y[l]; 18 tT = T[l]; 19 tS = S[l]; 20 } 21 else { 22 tX = X[ir]; 23 X[ir] = X[0]; 24 tY = Y[ir]; 25 Y[ir] = Y[0]; 26 tT = T[ir]; 27 T[ir] = T[0]; 28 tS = S[ir]; 29 S[ir] = S[0]; 30 if (--ir == 0) { 31 X[0] = tX; 32 Y[0] = tY; 33 T[0] = tT; 34 S[0] = tS; 35 return; 36 } 37 } 38 i = l; 39 j = (l << 1) + 1; 40 while (j <= ir) { 41 if (j < ir && X[j] < X[j+1]) j++; 42 if (tX < X[j]) { 43 X[i] = X[j]; 44 Y[i] = Y[j]; 45 T[i] = T[j]; 46 S[i] = S[j]; 47 j += (i=j) + 1; 48 } 49 else j = ir + 1; 50 } 51 X[i] = tX; 52 Y[i] = tY; 53 T[i] = tT; 54 S[i] = tS; 55 } 3 void sort_set (double *X, double *Y, int *T, int *S, int N) { 4 5 # define SWAPFUNC(A,B){ double dtmp; int itmp; \ 6 dtmp = X[A]; X[A] = X[B]; X[B] = dtmp; \ 7 dtmp = Y[A]; Y[A] = Y[B]; Y[B] = dtmp; \ 8 itmp = T[A]; T[A] = T[B]; T[B] = itmp; \ 9 itmp = S[A]; S[A] = S[B]; S[B] = itmp; \ 56 10 } 11 # define COMPARE(A,B)(X[A] < X[B]) 57 12 13 OHANA_SORT (N, COMPARE, SWAPFUNC); 58 14 59 sort_lists (X, Y, S, N) 60 float *X, *Y; 61 int *S, N; 62 { 63 int l,j,ir,i; 64 double tX, tY, tS; 65 66 l = N >> 1; 67 ir = N - 1; 68 for (;;) { 69 if (l > 0) { 70 l--; 71 tX = X[l]; 72 tY = Y[l]; 73 tS = S[l]; 74 } 75 else { 76 tX = X[ir]; 77 X[ir] = X[0]; 78 tY = Y[ir]; 79 Y[ir] = Y[0]; 80 tS = S[ir]; 81 S[ir] = S[0]; 82 if (--ir == 0) { 83 X[0] = tX; 84 Y[0] = tY; 85 S[0] = tS; 86 return; 87 } 88 } 89 i = l; 90 j = (l << 1) + 1; 91 while (j <= ir) { 92 if (j < ir && X[j] < X[j+1]) j++; 93 if (tX < X[j]) { 94 X[i] = X[j]; 95 Y[i] = Y[j]; 96 S[i] = S[j]; 97 j += (i=j) + 1; 98 } 99 else j = ir + 1; 100 } 101 X[i] = tX; 102 Y[i] = tY; 103 S[i] = tS; 104 } 105 } 106 107 sort_entries (X, Y, N) 108 double *X, *Y; 109 int N; 110 { 111 int l,j,ir,i; 112 double tX, tY; 113 114 l = N >> 1; 115 ir = N - 1; 116 for (;;) { 117 if (l > 0) { 118 l--; 119 tX = X[l]; 120 tY = Y[l]; 121 } 122 else { 123 tX = X[ir]; 124 X[ir] = X[0]; 125 tY = Y[ir]; 126 Y[ir] = Y[0]; 127 if (--ir == 0) { 128 X[0] = tX; 129 Y[0] = tY; 130 return; 131 } 132 } 133 i = l; 134 j = (l << 1) + 1; 135 while (j <= ir) { 136 if (j < ir && X[j] < X[j+1]) j++; 137 if (tX < X[j]) { 138 X[i] = X[j]; 139 Y[i] = Y[j]; 140 j += (i=j) + 1; 141 } 142 else j = ir + 1; 143 } 144 X[i] = tX; 145 Y[i] = tY; 146 } 147 } 148 149 150 151 sort (X, N) 152 double *X; 153 int N; 154 { 155 int l,j,ir,i; 156 double tX; 157 158 l = N >> 1; 159 ir = N - 1; 160 for (;;) { 161 if (l > 0) { 162 l--; 163 tX = X[l]; 164 } 165 else { 166 tX = X[ir]; 167 X[ir] = X[0]; 168 if (--ir == 0) { 169 X[0] = tX; 170 return; 171 } 172 } 173 i = l; 174 j = (l << 1) + 1; 175 while (j <= ir) { 176 if (j < ir && X[j] < X[j+1]) j++; 177 if (tX < X[j]) { 178 X[i] = X[j]; 179 j += (i=j) + 1; 180 } 181 else j = ir + 1; 182 } 183 X[i] = tX; 184 } 185 } 186 187 188 sort_seq (X, S, N) 189 double *X; 190 int *S; 191 int N; 192 { 193 int l,j,ir,i; 194 int tS; 195 double tX; 196 197 l = N >> 1; 198 ir = N - 1; 199 for (;;) { 200 if (l > 0) { 201 l--; 202 tX = X[l]; 203 tS = S[l]; 204 } 205 else { 206 tX = X[ir]; 207 X[ir] = X[0]; 208 tS = S[ir]; 209 S[ir] = S[0]; 210 if (--ir == 0) { 211 X[0] = tX; 212 S[0] = tS; 213 return; 214 } 215 } 216 i = l; 217 j = (l << 1) + 1; 218 while (j <= ir) { 219 if (j < ir && X[j] < X[j+1]) j++; 220 if (tX < X[j]) { 221 X[i] = X[j]; 222 S[i] = S[j]; 223 j += (i=j) + 1; 224 } 225 else j = ir + 1; 226 } 227 X[i] = tX; 228 S[i] = tS; 229 } 230 } 231 15 # undef SWAPFUNC 16 # undef COMPARE -
trunk/Ohana/src/markstar/include/markstar.h
r4828 r16040 38 38 typedef struct { 39 39 Coords coords; 40 float*X, *Y;40 double *X, *Y; 41 41 int *N; 42 42 double RA[2], DEC[2]; -
trunk/Ohana/src/markstar/src/find_bright_stars.c
r8386 r16040 1 1 # include "markstar.h" 2 2 3 find_bright_stars (catalog, catstats) 4 Catalog catalog[]; 5 CatStats catstats[]; 6 { 3 void find_bright_stars (Catalog *catalog, CatStats *catstats) { 7 4 8 5 int i, j, n, m, first_j, Nave, Ngsc; … … 10 7 double MinRA, MinDEC, MaxRA, MaxDEC, RaCenter, DecCenter; 11 8 Coords *tcoords; 12 float*X1, *Y1, *X2, *Y2;9 double *X1, *Y1, *X2, *Y2; 13 10 int *N1, *N2; 14 11 char *mark; … … 26 23 Y2 = catstats[0].Y; 27 24 N2 = catstats[0].N; 28 ALLOCATE (X1, float, Ngsc);29 ALLOCATE (Y1, float, Ngsc);25 ALLOCATE (X1, double, Ngsc); 26 ALLOCATE (Y1, double, Ngsc); 30 27 ALLOCATE (N1, int, Ngsc); 31 28 ALLOCATE (mark, char, Nave); … … 34 31 tcoords = &catstats[0].coords; 35 32 for (i = 0; i < Ngsc; i++) { 36 fRD_to_XY (&X1[i], &Y1[i], GSCdata.average[i].R, GSCdata.average[i].D, tcoords);33 RD_to_XY (&X1[i], &Y1[i], GSCdata.average[i].R, GSCdata.average[i].D, tcoords); 37 34 N1[i] = i; 38 35 } 39 if (Ngsc > 1) sort_ lists(X1, Y1, N1, Ngsc);36 if (Ngsc > 1) sort_coords_index (X1, Y1, N1, Ngsc); 40 37 41 38 /* first find stellar halos */ -
trunk/Ohana/src/markstar/src/find_matches.c
r2490 r16040 1 1 # include "markstar.h" 2 2 3 find_matches (catalog, catstats, Ghostdata, Nimage) 4 CatStats catstats[]; 5 Catalog catalog[], Ghostdata[]; 6 int Nimage; 7 { 3 int find_matches (Catalog *catalog, CatStats *catstats, Catalog *Ghostdata, int Nimage) { 8 4 9 5 int i, j, k, n, m, N, M, first_j; 10 6 double X, Y, RADIUS, RADIUS2; 11 float*X1, *Y1, *X2, *Y2;12 floatdX, dY, dR;7 double *X1, *Y1, *X2, *Y2; 8 double dX, dY, dR; 13 9 int *N1, *N2; 14 10 int Nstar, Nghost, Ng; … … 27 23 N2 = catstats[0].N; 28 24 29 ALLOCATE (X1, float, Nghost);30 ALLOCATE (Y1, float, Nghost);25 ALLOCATE (X1, double, Nghost); 26 ALLOCATE (Y1, double, Nghost); 31 27 ALLOCATE (N1, int, Nghost); 32 28 … … 34 30 tcoords = &catstats[0].coords; 35 31 for (i = 0; i < Nghost; i++) { 36 fRD_to_XY (&X1[i], &Y1[i], Ghostdata[0].average[i].R, Ghostdata[0].average[i].D, tcoords);32 RD_to_XY (&X1[i], &Y1[i], Ghostdata[0].average[i].R, Ghostdata[0].average[i].D, tcoords); 37 33 N1[i] = i; 38 34 } 39 if (Nghost > 1) sort_ lists(X1, Y1, N1, Nghost);35 if (Nghost > 1) sort_coords_index (X1, Y1, N1, Nghost); 40 36 41 37 /* choose a radius for matches */ -
trunk/Ohana/src/markstar/src/gcatstats.c
r7080 r16040 1 1 # include "markstar.h" 2 2 3 gcatstats (catalog, catstats) 4 Catalog catalog[]; 5 CatStats catstats[]; 6 { 3 void gcatstats (Catalog *catalog, CatStats *catstats) { 7 4 8 5 int i; 9 6 double RaCenter, DecCenter; 10 7 double MinRA, MaxRA, MinDEC, MaxDEC; 11 float*X1, *Y1;8 double *X1, *Y1; 12 9 int *N1; 13 10 Coords tcoords; … … 42 39 43 40 /** allocate local arrays **/ 44 ALLOCATE (catstats[0].X, float, catalog[0].Naverage);45 ALLOCATE (catstats[0].Y, float, catalog[0].Naverage);41 ALLOCATE (catstats[0].X, double, catalog[0].Naverage); 42 ALLOCATE (catstats[0].Y, double, catalog[0].Naverage); 46 43 ALLOCATE (catstats[0].N, int, catalog[0].Naverage); 47 44 … … 59 56 Y1 = catstats[0].Y; 60 57 for (i = 0; i < catalog[0].Naverage; i++, X1++, Y1++) { 61 fRD_to_XY (X1, Y1, catalog[0].average[i].R, catalog[0].average[i].D, &catstats[0].coords);58 RD_to_XY (X1, Y1, catalog[0].average[i].R, catalog[0].average[i].D, &catstats[0].coords); 62 59 catstats[0].N[i] = i; 63 60 } 64 if (catalog[0].Naverage > 1) sort_ lists(catstats[0].X, catstats[0].Y, catstats[0].N, catalog[0].Naverage);61 if (catalog[0].Naverage > 1) sort_coords_index (catstats[0].X, catstats[0].Y, catstats[0].N, catalog[0].Naverage); 65 62 66 63 } -
trunk/Ohana/src/markstar/src/sorts.c
r2490 r16040 1 # include "markstar.h" 1 2 3 void sort_seq (double *X, int *S, int N) { 2 4 3 sort_lists (X, Y, S, N) 4 float *X, *Y; 5 int *S, N; 6 { 7 int l,j,ir,i; 8 double tX, tY, tS; 9 10 l = N >> 1; 11 ir = N - 1; 12 for (;;) { 13 if (l > 0) { 14 l--; 15 tX = X[l]; 16 tY = Y[l]; 17 tS = S[l]; 18 } 19 else { 20 tX = X[ir]; 21 X[ir] = X[0]; 22 tY = Y[ir]; 23 Y[ir] = Y[0]; 24 tS = S[ir]; 25 S[ir] = S[0]; 26 if (--ir == 0) { 27 X[0] = tX; 28 Y[0] = tY; 29 S[0] = tS; 30 return; 31 } 32 } 33 i = l; 34 j = (l << 1) + 1; 35 while (j <= ir) { 36 if (j < ir && X[j] < X[j+1]) j++; 37 if (tX < X[j]) { 38 X[i] = X[j]; 39 Y[i] = Y[j]; 40 S[i] = S[j]; 41 j += (i=j) + 1; 42 } 43 else j = ir + 1; 44 } 45 X[i] = tX; 46 Y[i] = tY; 47 S[i] = tS; 48 } 5 # define SWAPFUNC(A,B){ \ 6 double dtmp; dtmp = X[A]; X[A] = X[B]; X[B] = dtmp; } 7 int itmp; itmp = S[A]; S[A] = S[B]; S[B] = itmp; } 8 # define COMPARE(A,B)(X[A] < X[B]) 9 10 OHANA_SORT (N, COMPARE, SWAPFUNC); 11 12 # undef SWAPFUNC 13 # undef COMPARE 14 49 15 } 50 51 sort_entries (X, Y, N)52 double *X, *Y;53 int N;54 {55 int l,j,ir,i;56 double tX, tY;57 58 l = N >> 1;59 ir = N - 1;60 for (;;) {61 if (l > 0) {62 l--;63 tX = X[l];64 tY = Y[l];65 }66 else {67 tX = X[ir];68 X[ir] = X[0];69 tY = Y[ir];70 Y[ir] = Y[0];71 if (--ir == 0) {72 X[0] = tX;73 Y[0] = tY;74 return;75 }76 }77 i = l;78 j = (l << 1) + 1;79 while (j <= ir) {80 if (j < ir && X[j] < X[j+1]) j++;81 if (tX < X[j]) {82 X[i] = X[j];83 Y[i] = Y[j];84 j += (i=j) + 1;85 }86 else j = ir + 1;87 }88 X[i] = tX;89 Y[i] = tY;90 }91 }92 93 94 95 sort (X, N)96 double *X;97 int N;98 {99 int l,j,ir,i;100 double tX;101 102 l = N >> 1;103 ir = N - 1;104 for (;;) {105 if (l > 0) {106 l--;107 tX = X[l];108 }109 else {110 tX = X[ir];111 X[ir] = X[0];112 if (--ir == 0) {113 X[0] = tX;114 return;115 }116 }117 i = l;118 j = (l << 1) + 1;119 while (j <= ir) {120 if (j < ir && X[j] < X[j+1]) j++;121 if (tX < X[j]) {122 X[i] = X[j];123 j += (i=j) + 1;124 }125 else j = ir + 1;126 }127 X[i] = tX;128 }129 }130 131 132 sort_seq (X, S, N)133 double *X;134 int *S;135 int N;136 {137 int l,j,ir,i;138 int tS;139 double tX;140 141 l = N >> 1;142 ir = N - 1;143 for (;;) {144 if (l > 0) {145 l--;146 tX = X[l];147 tS = S[l];148 }149 else {150 tX = X[ir];151 X[ir] = X[0];152 tS = S[ir];153 S[ir] = S[0];154 if (--ir == 0) {155 X[0] = tX;156 S[0] = tS;157 return;158 }159 }160 i = l;161 j = (l << 1) + 1;162 while (j <= ir) {163 if (j < ir && X[j] < X[j+1]) j++;164 if (tX < X[j]) {165 X[i] = X[j];166 S[i] = S[j];167 j += (i=j) + 1;168 }169 else j = ir + 1;170 }171 X[i] = tX;172 S[i] = tS;173 }174 }175 -
trunk/Ohana/src/misc/src/cubefilter.c
r12902 r16040 109 109 110 110 } 111 112 fsort (value, N)113 float value[];114 int N;115 {116 int l,j,ir,i;117 float temp;118 119 l = N >> 1;120 ir = N - 1;121 for (;;) {122 if (l > 0) {123 temp = value[--l];124 }125 else {126 temp = value[ir];127 value[ir] = value[0];128 if (--ir == 0) {129 value[0] = temp;130 return;131 }132 }133 i = l;134 j = (l << 1) + 1;135 while (j <= ir) {136 if (j < ir && value[j] < value[j+1]) ++j;137 if (temp < value[j]) {138 value[i]=value[j];139 j += (i=j) + 1;140 }141 else j = ir + 1;142 }143 value[i] = temp;144 }145 } -
trunk/Ohana/src/mosastro/Makefile
r12842 r16040 54 54 $(SRC)/rfits.$(ARCH).o \ 55 55 $(SRC)/rtext.$(ARCH).o \ 56 $(SRC)/sort.$(ARCH).o \57 56 $(SRC)/testcoords.$(ARCH).o \ 58 57 $(SRC)/transforms.$(ARCH).o \ -
trunk/Ohana/src/mosastro/src/match.c
r7401 r16040 23 23 Q[i] = refcat[i].Q; 24 24 } 25 sortthree (P, Q, U, Nrefcat); 26 25 sort_coords_index (P, Q, U, Nrefcat); 27 26 28 27 for (i = 0; i < Nchip; i++) { … … 42 41 q[j] = chip[i].stars[j].Q; 43 42 } 44 sort three(p, q, u, chip[i].Nstars);43 sort_coords_index (p, q, u, chip[i].Nstars); 45 44 46 45 /* find star matches in the tangent plane coord system */ -
trunk/Ohana/src/opihi/dvo/dvomisc.c
r7680 r16040 33 33 34 34 } 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 436 436 SEDtableRow **sort_SEDtable (SEDtableRow *raw, int N) { 437 437 438 int l,j,ir,i;439 SEDtableRow **value , *temp;438 int i; 439 SEDtableRow **value; 440 440 441 441 if (N <= 0) return (NULL); … … 445 445 value[i] = &raw[i]; 446 446 } 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 476 455 477 456 return (value); -
trunk/Ohana/src/opihi/dvo/gstar.c
r15509 r16040 10 10 double Ra, Dec, Radius, Radius2, r, dec0, dec1; 11 11 double Mcat, Mrel; 12 float*RA, *DEC;12 double *RA, *DEC; 13 13 int i, j, k, m, N, *N1, Nsecfilt, NPTS, QUIET, FULL_OUTPUT; 14 14 int Nstars, found, GetMeasures, Nlo, Nhi; … … 93 93 94 94 Nstars = catalog.Naverage; 95 ALLOCATE (RA, float, Nstars);96 ALLOCATE (DEC, float, Nstars);95 ALLOCATE (RA, double, Nstars); 96 ALLOCATE (DEC, double, Nstars); 97 97 ALLOCATE (N1, int, Nstars); 98 98 … … 105 105 } 106 106 /* 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); 108 108 /* at this point, RA, DEC, and N1 are sorted by DEC. 109 109 catalog.average[N1[i]].R = RA[i] */ … … 308 308 } 309 309 310 isort _pair (codeNumber, sequence, Nsecfilt);310 isortpair (codeNumber, sequence, Nsecfilt); 311 311 free (codeNumber); 312 312 } -
trunk/Ohana/src/opihi/dvo/lcurve.c
r14401 r16040 5 5 char string[128], *p; 6 6 double Ra, Dec, Radius, Radius2, r; 7 float*RA, *DEC;7 double *RA, *DEC; 8 8 int kapa, TimeFormat; 9 9 int Nstars, found, AutoLimits, ErrorBars, GalMag, AbsPhot, SaveVectors; … … 86 86 87 87 Nstars = catalog.Naverage; 88 ALLOCATE (RA, float, Nstars);89 ALLOCATE (DEC, float, Nstars);88 ALLOCATE (RA, double, Nstars); 89 ALLOCATE (DEC, double, Nstars); 90 90 ALLOCATE (N1, int, Nstars); 91 91 … … 98 98 } 99 99 /* 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); 101 101 /* at this point, RA, DEC, and N1 are sorted by DEC. 102 102 catalog.average[N1[i]].R = RA[i] */ … … 142 142 143 143 if (ErrorBars) 144 sortthree (Xvec.elements, Yvec.elements, dYvec.elements, N);144 fsortthree (Xvec.elements, Yvec.elements, dYvec.elements, N); 145 145 else 146 146 fsortpair (Xvec.elements, Yvec.elements, N); -
trunk/Ohana/src/opihi/dvo/lightcurve.c
r14401 r16040 4 4 5 5 double Ra, Dec, Radius, Radius2, r; 6 float*RA, *DEC;6 double *RA, *DEC; 7 7 int Nstars, found, PhotCodeSelect; 8 8 int i, j, k, m, N, NPTS, Nsecfilt, RELPHOT, *N1, TimeFormat; … … 69 69 70 70 Nstars = catalog.Naverage; 71 ALLOCATE (RA, float, Nstars);72 ALLOCATE (DEC, float, Nstars);71 ALLOCATE (RA, double, Nstars); 72 ALLOCATE (DEC, double, Nstars); 73 73 ALLOCATE (N1, int, Nstars); 74 74 … … 81 81 } 82 82 /* 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); 84 84 /* at this point, RA, DEC, and N1 are sorted by DEC. 85 85 catalog.average[N1[i]].R = RA[i] */ … … 134 134 } 135 135 } 136 sortthree (tvec[0].elements, mvec[0].elements, dmvec[0].elements, N);136 fsortthree (tvec[0].elements, mvec[0].elements, dmvec[0].elements, N); 137 137 tvec[0].Nelements = mvec[0].Nelements = dmvec[0].Nelements = N; 138 138 -
trunk/Ohana/src/opihi/dvo/subpix.c
r15274 r16040 60 60 index[i] = i; 61 61 } 62 if (Nstars > 1) dsort_lists(DEC, RA, index, Nstars);62 if (Nstars > 1) sort_coords_index (DEC, RA, index, Nstars); 63 63 64 64 /* bracket the DEC range of interest */ -
trunk/Ohana/src/opihi/lib.data/Makefile
r15274 r16040 18 18 $(SDIR)/book.$(ARCH).o \ 19 19 $(SDIR)/page.$(ARCH).o \ 20 $(SDIR)/sort.$(ARCH).o \21 20 $(SDIR)/fft.$(ARCH).o \ 22 21 $(SDIR)/svdcmp.$(ARCH).o \ -
trunk/Ohana/src/opihi/lib.data/starfuncs.c
r7917 r16040 36 36 } 37 37 } 38 sort (ring, Nring);38 dsort (ring, Nring); 39 39 for (Npts = sky = dsky2 = 0, i = 0.25*Nring; i < 0.75*Nring; i++, Npts += 1.0) { 40 40 sky += ring[i]; … … 150 150 } 151 151 } 152 sort (sky, Nsky);152 dsort (sky, Nsky); 153 153 for (Npts = fsky = 0, i = 0.25*Nsky; i < 0.75*Nsky; i++, Npts += 1.0) { 154 154 fsky += sky[i]; … … 199 199 } 200 200 } 201 sort (sky, Nsky);201 dsort (sky, Nsky); 202 202 for (Npts = fsky = 0, i = 0.25*Nsky; i < 0.75*Nsky; i++, Npts += 1.0) { 203 203 fsky += sky[i]; -
trunk/Ohana/src/opihi/lib.shell/CommandOps.c
r14449 r16040 130 130 } 131 131 132 void 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 132 148 void print_commands (FILE *f) { 133 149 … … 143 159 return; 144 160 } 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 } -
trunk/Ohana/src/photdbc/src/join_stars.c
r15743 r16040 6 6 int Naves, Nmeas, Ncurr; 7 7 int Naverage, Nmeasure, *found, *index; 8 float*X, *Y, dX, dY, dR, RADIUS2;8 double *X, *Y, dX, dY, dR, RADIUS2; 9 9 double Sr, Sd, Rmid, Dmid; 10 10 … … 45 45 46 46 /* project & sort coordinates in local linear frame */ 47 ALLOCATE (X, float, Naverage);48 ALLOCATE (Y, float, Naverage);47 ALLOCATE (X, double, Naverage); 48 ALLOCATE (Y, double, Naverage); 49 49 ALLOCATE (index, int, Naverage); 50 50 for (i = 0; i < Naverage; i++) { 51 51 index[i] = i; 52 fRD_to_XY (&X[i], &Y[i], average[i].R, average[i].D, &tcoords);52 RD_to_XY (&X[i], &Y[i], average[i].R, average[i].D, &tcoords); 53 53 } 54 sort_ lists(X, Y, index, Naverage);54 sort_coords_index (X, Y, index, Naverage); 55 55 56 56 /* flags to mark if a star has been handled */ … … 142 142 143 143 /* update current reference star position */ 144 fRD_to_XY (&X[i], &Y[i], Sr, Sd, &tcoords);144 RD_to_XY (&X[i], &Y[i], Sr, Sd, &tcoords); 145 145 } 146 146 } -
trunk/Ohana/src/photdbc/src/liststats.c
r2494 r16040 32 32 if (N < 2) return (FALSE); 33 33 34 sortB(value, dvalue, N);34 dsortpair (value, dvalue, N); 35 35 stats[0].median = value[(int)(0.5*N)]; 36 36 stats[0].min = value[0]; … … 68 68 chi[i] = (value[i] - stats[0].median) / dvalue[i]; 69 69 } 70 sortD(chi, value, dvalue, N);70 dsortthree (chi, value, dvalue, N); 71 71 free (chi); 72 72 } -
trunk/Ohana/src/photdbc/src/misc.c
r2494 r16040 1 2 void sortA (double *X, int N) { 3 4 int l,j,ir,i; 5 double tX; 6 7 if (N < 2) return; 8 9 l = N >> 1; 10 ir = N - 1; 11 for (;;) { 12 if (l > 0) { 13 l--; 14 tX = X[l]; 15 } 16 else { 17 tX = X[ir]; 18 X[ir] = X[0]; 19 if (--ir == 0) { 20 X[0] = tX; 21 return; 22 } 23 } 24 i = l; 25 j = (l << 1) + 1; 26 while (j <= ir) { 27 if (j < ir && X[j] < X[j+1]) j++; 28 if (tX < X[j]) { 29 X[i] = X[j]; 30 j += (i=j) + 1; 31 } 32 else j = ir + 1; 33 } 34 X[i] = tX; 35 } 36 } 37 38 void sortB (double *X, double *Y, int N) { 39 40 int l,j,ir,i; 41 double tX, tY; 42 43 if (N < 2) return; 44 45 l = N >> 1; 46 ir = N - 1; 47 for (;;) { 48 if (l > 0) { 49 l--; 50 tX = X[l]; 51 tY = Y[l]; 52 } 53 else { 54 tX = X[ir]; 55 X[ir] = X[0]; 56 tY = Y[ir]; 57 Y[ir] = Y[0]; 58 if (--ir == 0) { 59 X[0] = tX; 60 Y[0] = tY; 61 return; 62 } 63 } 64 i = l; 65 j = (l << 1) + 1; 66 while (j <= ir) { 67 if (j < ir && X[j] < X[j+1]) j++; 68 if (tX < X[j]) { 69 X[i] = X[j]; 70 Y[i] = Y[j]; 71 j += (i=j) + 1; 72 } 73 else j = ir + 1; 74 } 75 X[i] = tX; 76 Y[i] = tY; 77 } 78 } 79 80 void sortC (double *X, double *Y, double *F1, double *F2, int N) { 81 82 int l,j,ir,i; 83 double tX, tY; 84 double t1, t2; 85 86 if (N < 2) return; 87 88 l = N >> 1; 89 ir = N - 1; 90 for (;;) { 91 if (l > 0) { 92 l--; 93 tX = X[l]; 94 tY = Y[l]; 95 t1 = F1[l]; 96 t2 = F2[l]; 97 } 98 else { 99 tX = X[ir]; 100 X[ir] = X[0]; 101 tY = Y[ir]; 102 Y[ir] = Y[0]; 103 t1 = F1[ir]; 104 F1[ir] = F1[0]; 105 t2 = F2[ir]; 106 F2[ir] = F2[0]; 107 if (--ir == 0) { 108 X[0] = tX; 109 Y[0] = tY; 110 F1[0] = t1; 111 F2[0] = t2; 112 return; 113 } 114 } 115 i = l; 116 j = (l << 1) + 1; 117 while (j <= ir) { 118 if (j < ir && X[j] < X[j+1]) j++; 119 if (tX < X[j]) { 120 X[i] = X[j]; 121 Y[i] = Y[j]; 122 F1[i] = F1[j]; 123 F2[i] = F2[j]; 124 j += (i=j) + 1; 125 } 126 else j = ir + 1; 127 } 128 X[i] = tX; 129 Y[i] = tY; 130 F1[i] = t1; 131 F2[i] = t2; 132 } 133 } 134 135 void sortD (double *X, double *Y, double *Z, int N) { 136 137 int l,j,ir,i; 138 double tX, tY, tZ; 139 140 if (N < 2) return; 141 142 l = N >> 1; 143 ir = N - 1; 144 for (;;) { 145 if (l > 0) { 146 l--; 147 tX = X[l]; 148 tY = Y[l]; 149 tZ = Z[l]; 150 } 151 else { 152 tX = X[ir]; 153 X[ir] = X[0]; 154 tY = Y[ir]; 155 Y[ir] = Y[0]; 156 tZ = Z[ir]; 157 Z[ir] = Z[0]; 158 if (--ir == 0) { 159 X[0] = tX; 160 Y[0] = tY; 161 Z[0] = tZ; 162 return; 163 } 164 } 165 i = l; 166 j = (l << 1) + 1; 167 while (j <= ir) { 168 if (j < ir && X[j] < X[j+1]) j++; 169 if (tX < X[j]) { 170 X[i] = X[j]; 171 Y[i] = Y[j]; 172 Z[i] = Z[j]; 173 j += (i=j) + 1; 174 } 175 else j = ir + 1; 176 } 177 X[i] = tX; 178 Y[i] = tY; 179 Z[i] = tZ; 180 } 181 } 182 183 void sort_lists (float *X, float *Y, int *S, int N) { 184 185 int l,j,ir,i; 186 double tX, tY; 187 int tS; 188 189 if (N < 2) return; 190 191 l = N >> 1; 192 ir = N - 1; 193 for (;;) { 194 if (l > 0) { 195 l--; 196 tX = X[l]; 197 tY = Y[l]; 198 tS = S[l]; 199 } 200 else { 201 tX = X[ir]; 202 X[ir] = X[0]; 203 tY = Y[ir]; 204 Y[ir] = Y[0]; 205 tS = S[ir]; 206 S[ir] = S[0]; 207 if (--ir == 0) { 208 X[0] = tX; 209 Y[0] = tY; 210 S[0] = tS; 211 return; 212 } 213 } 214 i = l; 215 j = (l << 1) + 1; 216 while (j <= ir) { 217 if (j < ir && X[j] < X[j+1]) j++; 218 if (tX < X[j]) { 219 X[i] = X[j]; 220 Y[i] = Y[j]; 221 S[i] = S[j]; 222 j += (i=j) + 1; 223 } 224 else j = ir + 1; 225 } 226 X[i] = tX; 227 Y[i] = tY; 228 S[i] = tS; 229 } 230 } 1 # include "photdbc.h" 231 2 232 3 void sort_time (unsigned int *X, int *Y, int N) { 233 4 234 int l,j,ir,i; 235 unsigned int tX;236 int tY;237 238 if (N < 2) return; 5 # define SWAPFUNC(A,B){ float tmp; \ 6 unsigned int utmp = X[A]; X[A] = X[B]; X[B] = utmp; \ 7 int itmp = Y[A]; Y[A] = Y[B]; Y[B] = itmp; \ 8 } 9 # define COMPARE(A,B)(X[A] < X[B]) 239 10 240 l = N >> 1; 241 ir = N - 1; 242 for (;;) { 243 if (l > 0) { 244 l--; 245 tX = X[l]; 246 tY = Y[l]; 247 } 248 else { 249 tX = X[ir]; 250 X[ir] = X[0]; 251 tY = Y[ir]; 252 Y[ir] = Y[0]; 253 if (--ir == 0) { 254 X[0] = tX; 255 Y[0] = tY; 256 return; 257 } 258 } 259 i = l; 260 j = (l << 1) + 1; 261 while (j <= ir) { 262 if (j < ir && X[j] < X[j+1]) j++; 263 if (tX < X[j]) { 264 X[i] = X[j]; 265 Y[i] = Y[j]; 266 j += (i=j) + 1; 267 } 268 else j = ir + 1; 269 } 270 X[i] = tX; 271 Y[i] = tY; 272 } 11 OHANA_SORT (N, COMPARE, SWAPFUNC); 12 13 # undef SWAPFUNC 14 # undef COMPARE 15 273 16 } -
trunk/Ohana/src/relastro/Makefile
r15600 r16040 49 49 $(SRC)/plotstuff.$(ARCH).o \ 50 50 $(SRC)/select_images.$(ARCH).o \ 51 $(SRC)/sort.$(ARCH).o \52 51 $(SRC)/relastro.$(ARCH).o \ 53 52 $(SRC)/save_catalogs.$(ARCH).o \ -
trunk/Ohana/src/relastro/src/liststats.c
r12332 r16040 37 37 if (N < 1) return (FALSE); 38 38 39 sortB(value, dvalue, N);39 dsortpair (value, dvalue, N); 40 40 stats[0].median = value[(int)(0.5*N)]; 41 41 stats[0].min = value[0]; … … 73 73 chi[i] = (value[i] - stats[0].median) / dvalue[i]; 74 74 } 75 sortD(chi, value, dvalue, N);75 dsortthree (chi, value, dvalue, N); 76 76 free (chi); 77 77 } -
trunk/Ohana/src/relphot/Makefile
r12842 r16040 42 42 $(SRC)/setExclusions.$(ARCH).o \ 43 43 $(SRC)/setMrelFinal.$(ARCH).o \ 44 $(SRC)/sort.$(ARCH).o \45 44 $(SRC)/write_coords.$(ARCH).o 46 45 -
trunk/Ohana/src/relphot/src/liststats.c
r5386 r16040 37 37 if (N < 1) return (FALSE); 38 38 39 sortB(value, dvalue, N);39 dsortpair (value, dvalue, N); 40 40 stats[0].median = value[(int)(0.5*N)]; 41 41 stats[0].min = value[0]; … … 73 73 chi[i] = (value[i] - stats[0].median) / dvalue[i]; 74 74 } 75 sortD(chi, value, dvalue, N);75 dsortthree (chi, value, dvalue, N); 76 76 free (chi); 77 77 } -
trunk/Ohana/src/tools/src/medianfilter.c
r16001 r16040 3 3 4 4 # define D_NFILES 100 5 6 void fsort (float *value, int N);7 5 8 6 int main (int argc, char **argv) { … … 134 132 135 133 } 136 137 void fsort (float *value, int N) {138 139 int l,j,ir,i;140 float temp;141 142 if (N < 2) return;143 144 l = N >> 1;145 ir = N - 1;146 for (;;) {147 if (l > 0) {148 temp = value[--l];149 }150 else {151 temp = value[ir];152 value[ir] = value[0];153 if (--ir == 0) {154 value[0] = temp;155 return;156 }157 }158 i = l;159 j = (l << 1) + 1;160 while (j <= ir) {161 if (j < ir && value[j] < value[j+1]) ++j;162 if (temp < value[j]) {163 value[i]=value[j];164 j += (i=j) + 1;165 }166 else j = ir + 1;167 }168 value[i] = temp;169 }170 } -
trunk/Ohana/src/uniphot/src/find_image_tgroups.c
r14590 r16040 18 18 time[i] = image[i].tzero; 19 19 } 20 sort (time, Nimage);20 sort_time (time, Nimage); 21 21 22 22 /* find groups with dt < TRANGE */ -
trunk/Ohana/src/uniphot/src/liststats.c
r5386 r16040 35 35 if (N < 2) return (FALSE); 36 36 37 sortB(value, dvalue, N);37 dsortpair (value, dvalue, N); 38 38 stats[0].median = value[(int)(0.5*N)]; 39 39 stats[0].min = value[0]; … … 71 71 chi[i] = (value[i] - stats[0].median) / dvalue[i]; 72 72 } 73 sortD(chi, value, dvalue, N);73 dsortthree (chi, value, dvalue, N); 74 74 free (chi); 75 75 } -
trunk/Ohana/src/uniphot/src/sort.c
r8388 r16040 1 1 # include "uniphot.h" 2 2 3 void sort (unsigned int *X, int N) {3 void sort_time (unsigned int *value, int N) { 4 4 5 int l,j,ir,i; 6 unsigned tX; 7 8 if (N < 2) return; 5 # define SWAPFUNC(A,B){ unsigned int tmp = value[A]; value[A] = value[B]; value[B] = tmp; } 6 # define COMPARE(A,B)(value[A] < value[B]) 9 7 10 l = N >> 1; 11 ir = N - 1; 12 for (;;) { 13 if (l > 0) { 14 l--; 15 tX = X[l]; 16 } 17 else { 18 tX = X[ir]; 19 X[ir] = X[0]; 20 if (--ir == 0) { 21 X[0] = tX; 22 return; 23 } 24 } 25 i = l; 26 j = (l << 1) + 1; 27 while (j <= ir) { 28 if (j < ir && X[j] < X[j+1]) j++; 29 if (tX < X[j]) { 30 X[i] = X[j]; 31 j += (i=j) + 1; 32 } 33 else j = ir + 1; 34 } 35 X[i] = tX; 36 } 8 OHANA_SORT (N, COMPARE, SWAPFUNC); 9 10 # undef SWAPFUNC 11 # undef COMPARE 12 37 13 } 38 39 void sortB (double *X, double *Y, int N) {40 41 int l,j,ir,i;42 double tX, tY;43 44 if (N < 2) return;45 46 l = N >> 1;47 ir = N - 1;48 for (;;) {49 if (l > 0) {50 l--;51 tX = X[l];52 tY = Y[l];53 }54 else {55 tX = X[ir];56 X[ir] = X[0];57 tY = Y[ir];58 Y[ir] = Y[0];59 if (--ir == 0) {60 X[0] = tX;61 Y[0] = tY;62 return;63 }64 }65 i = l;66 j = (l << 1) + 1;67 while (j <= ir) {68 if (j < ir && X[j] < X[j+1]) j++;69 if (tX < X[j]) {70 X[i] = X[j];71 Y[i] = Y[j];72 j += (i=j) + 1;73 }74 else j = ir + 1;75 }76 X[i] = tX;77 Y[i] = tY;78 }79 }80 81 void sortD (double *X, double *Y, double *Z, int N) {82 83 int l,j,ir,i;84 double tX, tY, tZ;85 86 if (N < 2) return;87 88 l = N >> 1;89 ir = N - 1;90 for (;;) {91 if (l > 0) {92 l--;93 tX = X[l];94 tY = Y[l];95 tZ = Z[l];96 }97 else {98 tX = X[ir];99 X[ir] = X[0];100 tY = Y[ir];101 Y[ir] = Y[0];102 tZ = Z[ir];103 Z[ir] = Z[0];104 if (--ir == 0) {105 X[0] = tX;106 Y[0] = tY;107 Z[0] = tZ;108 return;109 }110 }111 i = l;112 j = (l << 1) + 1;113 while (j <= ir) {114 if (j < ir && X[j] < X[j+1]) j++;115 if (tX < X[j]) {116 X[i] = X[j];117 Y[i] = Y[j];118 Z[i] = Z[j];119 j += (i=j) + 1;120 }121 else j = ir + 1;122 }123 X[i] = tX;124 Y[i] = tY;125 Z[i] = tZ;126 }127 }128
Note:
See TracChangeset
for help on using the changeset viewer.
