Mercurial > octave-nkf
comparison src/ov-range.cc @ 11176:2271261f088a
Address precision issue in ranges saved to HDF5 files
author | David Bateman <dbateman@free.fr> |
---|---|
date | Tue, 02 Nov 2010 16:27:30 +0100 |
parents | 0de5cc44e690 |
children | fd0a3ac60b0e |
comparison
equal
deleted
inserted
replaced
11175:c0a95a5c6d25 | 11176:2271261f088a |
---|---|
546 double range_vals[3]; | 546 double range_vals[3]; |
547 range_vals[0] = r.base (); | 547 range_vals[0] = r.base (); |
548 range_vals[1] = r.inc () != 0 ? r.limit () : r.nelem (); | 548 range_vals[1] = r.inc () != 0 ? r.limit () : r.nelem (); |
549 range_vals[2] = r.inc (); | 549 range_vals[2] = r.inc (); |
550 | 550 |
551 retval = H5Dwrite (data_hid, type_hid, H5S_ALL, H5S_ALL, H5P_DEFAULT, | 551 if (H5Dwrite (data_hid, type_hid, H5S_ALL, H5S_ALL, H5P_DEFAULT, |
552 range_vals) >= 0; | 552 range_vals) >= 0) |
553 { | |
554 octave_idx_type nel = r.nelem (); | |
555 retval = hdf5_add_scalar_attr (data_hid, H5T_NATIVE_IDX, | |
556 "OCTAVE_RANGE_NELEM", &nel) >= 0; | |
557 } | |
558 else | |
559 retval = false; | |
553 | 560 |
554 H5Dclose (data_hid); | 561 H5Dclose (data_hid); |
555 H5Tclose (type_hid); | 562 H5Tclose (type_hid); |
556 H5Sclose (space_hid); | 563 H5Sclose (space_hid); |
557 | 564 |
593 double rangevals[3]; | 600 double rangevals[3]; |
594 if (H5Dread (data_hid, range_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, | 601 if (H5Dread (data_hid, range_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, |
595 rangevals) >= 0) | 602 rangevals) >= 0) |
596 { | 603 { |
597 retval = true; | 604 retval = true; |
598 if (rangevals[2] != 0) | 605 octave_idx_type nel; |
599 range = Range (rangevals[0], rangevals[1], rangevals[2]); | 606 if (hdf5_get_scalar_attr (data_hid, H5T_NATIVE_IDX, |
607 "OCTAVE_RANGE_NELEM", &nel)) | |
608 range = Range (rangevals[0], rangevals[2], nel); | |
600 else | 609 else |
601 range = Range (rangevals[0], rangevals[2], | 610 { |
602 static_cast<octave_idx_type> (rangevals[1])); | 611 if (rangevals[2] != 0) |
612 range = Range (rangevals[0], rangevals[1], rangevals[2]); | |
613 else | |
614 range = Range (rangevals[0], rangevals[2], | |
615 static_cast<octave_idx_type> (rangevals[1])); | |
616 } | |
603 } | 617 } |
604 | 618 |
605 H5Tclose (range_type); | 619 H5Tclose (range_type); |
606 H5Sclose (space_hid); | 620 H5Sclose (space_hid); |
607 H5Dclose (data_hid); | 621 H5Dclose (data_hid); |