IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 19, 2015, 11:27:34 AM (12 years ago)
Author:
eugene
Message:

various updates to handle 3D cubes better

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20150112/Ohana/src/opihi/lib.shell/stack_math.c

    r37857 r37869  
    127127int MMM_trinary (StackVar *OUT, StackVar *V1, StackVar *V2, StackVar *V3, char *op) {
    128128
    129   int i, Npix;
     129  int i;
    130130  float *out, *M1, *M2, *M3;
    131131  char line[512]; // this is only used to report an error
    132132 
    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);
    138134 
    139135  if (V1[0].type == ST_MATRIX_TMP) {  /** use V1 as temp buffer **/
     
    725721int MM_binary (StackVar *OUT, StackVar *V1, StackVar *V2, char *op) {
    726722
    727   int i, Npix;
     723  int i;
    728724  float *out, *M1, *M2;
    729725  char line[512]; // this is only used to report an error
    730726 
    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);
    736728 
    737729  if (V1[0].type == ST_MATRIX_TMP) {  /** use V1 as temp buffer **/
     
    809801int MS_binary (StackVar *OUT, StackVar *V1, StackVar *V2, char *op) {
    810802
    811   int i, Npix;
     803  int i;
    812804  char line[512]; // this is only used to report an error
    813805 
    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);
    819807
    820808  /* if possible, use V1 as temp buffer, otherwise create new one */
     
    890878int SM_binary (StackVar *OUT, StackVar *V1, StackVar *V2, char *op) {
    891879
    892   int i, Npix;
     880  int i;
    893881  char line[512]; // this is only used to report an error
    894882 
    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);
    900884 
    901885  if (V2[0].type == ST_MATRIX_TMP) {  /* V2[0] is NOT temporary, we can't use it for storage */
     
    12521236  if (!strcmp (op, "xramp"))  V_FUNC(i, ST_SCALAR_INT);
    12531237  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 */
    12551240
    12561241# undef V_FUNC
     
    12711256int M_unary (StackVar *OUT, StackVar *V1, char *op) {
    12721257
    1273   int i, j, Npix;
     1258  int i, j, k;
    12741259  float *out, *M1;
    12751260 
    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);
    12811262 
    12821263  if (V1[0].type == ST_MATRIX_TMP) {
     
    13361317    int Nx = V1[0].buffer[0].matrix.Naxis[0];
    13371318    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        }
    13411325      }
    13421326    }
     
    13451329    int Nx = V1[0].buffer[0].matrix.Naxis[0];
    13461330    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        }
    13501349      }
    13511350    }
Note: See TracChangeset for help on using the changeset viewer.