- Timestamp:
- Jan 19, 2015, 11:27:34 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20150112/Ohana/src/opihi/lib.shell/stack_math.c
r37857 r37869 127 127 int MMM_trinary (StackVar *OUT, StackVar *V1, StackVar *V2, StackVar *V3, char *op) { 128 128 129 int i , Npix;129 int i; 130 130 float *out, *M1, *M2, *M3; 131 131 char line[512]; // this is only used to report an error 132 132 133 Npix = 1; 134 for (i = 0; i < V1[0].buffer[0].matrix.Naxes; i++) { 135 if (V1[0].buffer[0].matrix.Naxis[i] == 0) break; 136 Npix *= V1[0].buffer[0].matrix.Naxis[i]; 137 } 133 int Npix = gfits_npix_matrix (&V1[0].buffer[0].matrix); 138 134 139 135 if (V1[0].type == ST_MATRIX_TMP) { /** use V1 as temp buffer **/ … … 725 721 int MM_binary (StackVar *OUT, StackVar *V1, StackVar *V2, char *op) { 726 722 727 int i , Npix;723 int i; 728 724 float *out, *M1, *M2; 729 725 char line[512]; // this is only used to report an error 730 726 731 Npix = 1; 732 for (i = 0; i < V1[0].buffer[0].matrix.Naxes; i++) { 733 if (V1[0].buffer[0].matrix.Naxis[i] == 0) break; 734 Npix *= V1[0].buffer[0].matrix.Naxis[i]; 735 } 727 int Npix = gfits_npix_matrix (&V1[0].buffer[0].matrix); 736 728 737 729 if (V1[0].type == ST_MATRIX_TMP) { /** use V1 as temp buffer **/ … … 809 801 int MS_binary (StackVar *OUT, StackVar *V1, StackVar *V2, char *op) { 810 802 811 int i , Npix;803 int i; 812 804 char line[512]; // this is only used to report an error 813 805 814 Npix = 1; 815 for (i = 0; i < V1[0].buffer[0].matrix.Naxes; i++) { 816 if (V1[0].buffer[0].matrix.Naxis[i] == 0) break; 817 Npix *= V1[0].buffer[0].matrix.Naxis[i]; 818 } 806 int Npix = gfits_npix_matrix (&V1[0].buffer[0].matrix); 819 807 820 808 /* if possible, use V1 as temp buffer, otherwise create new one */ … … 890 878 int SM_binary (StackVar *OUT, StackVar *V1, StackVar *V2, char *op) { 891 879 892 int i , Npix;880 int i; 893 881 char line[512]; // this is only used to report an error 894 882 895 Npix = 1; 896 for (i = 0; i < V2[0].buffer[0].matrix.Naxes; i++) { 897 if (V2[0].buffer[0].matrix.Naxis[i] == 0) break; 898 Npix *= V2[0].buffer[0].matrix.Naxis[i]; 899 } 883 int Npix = gfits_npix_matrix (&V2[0].buffer[0].matrix); 900 884 901 885 if (V2[0].type == ST_MATRIX_TMP) { /* V2[0] is NOT temporary, we can't use it for storage */ … … 1252 1236 if (!strcmp (op, "xramp")) V_FUNC(i, ST_SCALAR_INT); 1253 1237 if (!strcmp (op, "yramp")) V_FUNC(0, ST_SCALAR_INT); 1254 /* xramp and yramp above only make sense for matrices. for vectors, xramp = ramp, yramp = zero */ 1238 if (!strcmp (op, "zramp")) V_FUNC(0, ST_SCALAR_INT); 1239 /* xramp, yramp, zramp above only make sense for matrices. for vectors, xramp = ramp, yramp = zero */ 1255 1240 1256 1241 # undef V_FUNC … … 1271 1256 int M_unary (StackVar *OUT, StackVar *V1, char *op) { 1272 1257 1273 int i, j, Npix;1258 int i, j, k; 1274 1259 float *out, *M1; 1275 1260 1276 Npix = 1; 1277 for (i = 0; i < V1[0].buffer[0].matrix.Naxes; i++) { 1278 if (V1[0].buffer[0].matrix.Naxis[i] == 0) break; 1279 Npix *= V1[0].buffer[0].matrix.Naxis[i]; 1280 } 1261 int Npix = gfits_npix_matrix (&V1[0].buffer[0].matrix); 1281 1262 1282 1263 if (V1[0].type == ST_MATRIX_TMP) { … … 1336 1317 int Nx = V1[0].buffer[0].matrix.Naxis[0]; 1337 1318 int Ny = V1[0].buffer[0].matrix.Naxis[1]; 1338 for (j = 0; j < Ny; j++) { 1339 for (i = 0; i < Nx; i++, out++, M1++) { 1340 *out = i; 1319 int Nz = MAX (1, V1[0].buffer[0].matrix.Naxis[2]); 1320 for (k = 0; k < Nz; k++) { 1321 for (j = 0; j < Ny; j++) { 1322 for (i = 0; i < Nx; i++, out++, M1++) { 1323 *out = i; 1324 } 1341 1325 } 1342 1326 } … … 1345 1329 int Nx = V1[0].buffer[0].matrix.Naxis[0]; 1346 1330 int Ny = V1[0].buffer[0].matrix.Naxis[1]; 1347 for (j = 0; j < Ny; j++) { 1348 for (i = 0; i < Nx; i++, out++, M1++) { 1349 *out = j; 1331 int Nz = MAX (1, V1[0].buffer[0].matrix.Naxis[2]); 1332 for (k = 0; k < Nz; k++) { 1333 for (j = 0; j < Ny; j++) { 1334 for (i = 0; i < Nx; i++, out++, M1++) { 1335 *out = j; 1336 } 1337 } 1338 } 1339 } 1340 if (!strcmp (op, "zramp")) { 1341 int Nx = V1[0].buffer[0].matrix.Naxis[0]; 1342 int Ny = V1[0].buffer[0].matrix.Naxis[1]; 1343 int Nz = MAX (1, V1[0].buffer[0].matrix.Naxis[2]); 1344 for (k = 0; k < Nz; k++) { 1345 for (j = 0; j < Ny; j++) { 1346 for (i = 0; i < Nx; i++, out++, M1++) { 1347 *out = k; 1348 } 1350 1349 } 1351 1350 }
Note:
See TracChangeset
for help on using the changeset viewer.
