IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 30, 2015, 7:59:48 PM (11 years ago)
Author:
eugene
Message:

more work on compression : cfitsio assumes gzip, not zlib (I have made uncompress general )

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ohana.20150429/src/libfits/test/imagecomp.c

    r38335 r38340  
    33# include "tap_ohana.h"
    44
    5 int test_compress (char *zcmptype);
     5int test_compress (int bitpix, char *zcmptype);
    66
    77int main (int argc, char **argv) {
     
    1111  diag ("libfits imagecomp.c tests");
    1212
    13   test_compress ("NONE");
    14   test_compress ("GZIP_1");
     13  test_compress (  8, "NONE");
     14  test_compress ( 16, "NONE");
     15  test_compress ( 32, "NONE");
     16  test_compress (-32, "NONE");
     17  test_compress (-64, "NONE");
     18
     19  test_compress (  8, "GZIP_1");
     20  test_compress ( 16, "GZIP_1");
     21  test_compress ( 32, "GZIP_1");
     22  test_compress (-32, "GZIP_1");
     23  test_compress (-64, "GZIP_1");
    1524
    1625  exit (0);
     
    2029# define NY 100
    2130
    22 int test_compress (char *zcmptype) { // make a table, compress, uncompress, compare : use compression zcmptype
     31int test_compress (int bitpix, char *zcmptype) { // make a table, compress, uncompress, compare : use compression zcmptype
    2332
    2433  Header rawheader;
     
    3140  ftable.header = &theader;
    3241
    33   diag ("--- starting test_compress with zcmptype %s ---", zcmptype);
     42  diag ("--- starting test_compress with bitpix %d, zcmptype %s ---", bitpix, zcmptype);
    3443  ok (gfits_init_header (&rawheader), "init'ed the raw header");
    3544  ok (gfits_init_matrix (&rawmatrix), "init'ed the raw matrix");
     
    3847
    3948  /* assign the necessary internal values */
    40   rawheader.bitpix   = -32;
     49  rawheader.bitpix   = bitpix;
    4150  rawheader.Naxes = 2;
    4251  rawheader.Naxis[0] = NX;
     
    4655  ok (gfits_create_header (&rawheader),          "created header");
    4756  ok (gfits_create_matrix (&rawheader, &rawmatrix), "created matrix");
    48 
    49   float *rawdata = (float *) rawmatrix.buffer;
     57 
     58  char   *rawdata_char   = (char   *) rawmatrix.buffer;
     59  short  *rawdata_short  = (short  *) rawmatrix.buffer;
     60  int    *rawdata_int    = (int    *) rawmatrix.buffer;
     61  float  *rawdata_float  = (float  *) rawmatrix.buffer;
     62  double *rawdata_double = (double *) rawmatrix.buffer;
     63 
    5064  int ix, iy;
    5165  for (ix = 0; ix < NX; ix++) {
    5266    for (iy = 0; iy < NY; iy++) {
    53       rawdata[ix + NX*iy] = ix * iy*iy;
     67      switch (bitpix) {
     68        case   8: rawdata_char  [ix + NX*iy] = ix + iy*iy; break;
     69        case  16: rawdata_short [ix + NX*iy] = ix + iy*iy; break;
     70        case  32: rawdata_int   [ix + NX*iy] = ix + iy*iy; break;
     71        case -32: rawdata_float [ix + NX*iy] = ix + iy*iy; break;
     72        case -64: rawdata_double[ix + NX*iy] = ix + iy*iy; break;
     73        default: myAbort ("bad bitpix value");
     74      }
    5475    }
    5576  }     
     
    6485  int Nbad = 0;
    6586
    66   float *outdata = (float *) outmatrix.buffer;
     87  char   *outdata_char   = (char   *) outmatrix.buffer;
     88  short  *outdata_short  = (short  *) outmatrix.buffer;
     89  int    *outdata_int    = (int    *) outmatrix.buffer;
     90  float  *outdata_float  = (float  *) outmatrix.buffer;
     91  double *outdata_double = (double *) outmatrix.buffer;
     92
    6793  for (ix = 0; ix < NX; ix++) {
    6894    for (iy = 0; iy < NY; iy++) {
    69       if (rawdata[ix + NX*iy] != outdata[ix + NX*iy]) Nbad ++;
     95      switch (bitpix) {
     96        case   8: if (rawdata_char  [ix + NX*iy] != outdata_char  [ix + NX*iy]) Nbad ++; break;
     97        case  16: if (rawdata_short [ix + NX*iy] != outdata_short [ix + NX*iy]) Nbad ++; break;
     98        case  32: if (rawdata_int   [ix + NX*iy] != outdata_int   [ix + NX*iy]) Nbad ++; break;
     99        case -32: if (rawdata_float [ix + NX*iy] != outdata_float [ix + NX*iy]) Nbad ++; break;
     100        case -64: if (rawdata_double[ix + NX*iy] != outdata_double[ix + NX*iy]) Nbad ++; break;
     101        default: myAbort ("bad bitpix value");
     102      }
    70103    }
    71104  }     
Note: See TracChangeset for help on using the changeset viewer.