Lines 503-521
Link Here
|
503 |
val = inptr[x*4] ^ 0x80; |
503 |
val = inptr[x*4] ^ 0x80; |
504 |
break; |
504 |
break; |
505 |
case SINGLE: { |
505 |
case SINGLE: { |
506 |
float f; |
506 |
union {float f;uint32_t u;} f; |
507 |
/* Convert from big-endian to native format */ |
507 |
/* Convert from big-endian to native format */ |
508 |
*((uint32_t *)&f) = (uint32_t)(inptr[x*4 ]) << 24 |
508 |
f.u = (uint32_t)(inptr[x*4 ]) << 24 |
509 |
| (uint32_t)(inptr[x*4+1]) << 16 |
509 |
| (uint32_t)(inptr[x*4+1]) << 16 |
510 |
| (uint32_t)(inptr[x*4+2]) << 8 |
510 |
| (uint32_t)(inptr[x*4+2]) << 8 |
511 |
| (uint32_t)(inptr[x*4+3]); |
511 |
| (uint32_t)(inptr[x*4+3]); |
512 |
val = (int)floor(((f - single_base) / single_range) * 255 + 0.5); |
512 |
val = (int)floor(((f.f - single_base) / single_range) * 255 + 0.5); |
513 |
break; |
513 |
break; |
514 |
} // SINGLE |
514 |
} // SINGLE |
515 |
case DOUBLE: { |
515 |
case DOUBLE: { |
516 |
double d; |
516 |
union {double d; uint64_t u} d; |
517 |
/* Convert from big-endian to native format */ |
517 |
/* Convert from big-endian to native format */ |
518 |
*((uint64_t *)&d) = (uint64_t)(inptr[x*8 ]) << 56 |
518 |
d.u = (uint64_t)(inptr[x*8 ]) << 56 |
519 |
| (uint64_t)(inptr[x*8+1]) << 48 |
519 |
| (uint64_t)(inptr[x*8+1]) << 48 |
520 |
| (uint64_t)(inptr[x*8+2]) << 40 |
520 |
| (uint64_t)(inptr[x*8+2]) << 40 |
521 |
| (uint64_t)(inptr[x*8+3]) << 32 |
521 |
| (uint64_t)(inptr[x*8+3]) << 32 |
Lines 523-529
Link Here
|
523 |
| (uint64_t)(inptr[x*8+5]) << 16 |
523 |
| (uint64_t)(inptr[x*8+5]) << 16 |
524 |
| (uint64_t)(inptr[x*8+6]) << 8 |
524 |
| (uint64_t)(inptr[x*8+6]) << 8 |
525 |
| (uint64_t)(inptr[x*8+7]); |
525 |
| (uint64_t)(inptr[x*8+7]); |
526 |
val = (int)floor(((d - double_base) / double_range) * 255 + 0.5); |
526 |
val = (int)floor(((d.d - double_base) / double_range) * 255 + 0.5); |
527 |
break; |
527 |
break; |
528 |
} // DOUBLE |
528 |
} // DOUBLE |
529 |
} // switch (datatype) |
529 |
} // switch (datatype) |