1998-10-30 22:40:37 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
|
|
|
|
HDF5 Release 1.3.x
|
|
|
|
Under Development
|
1998-10-30 22:40:37 +08:00
|
|
|
|
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
INTRODUCTION
|
1998-10-30 22:40:37 +08:00
|
|
|
|
2000-12-09 02:33:20 +08:00
|
|
|
This document describes the differences between HDF5-1.2.0 and
|
2000-03-24 05:34:06 +08:00
|
|
|
HDF5-1.3.x, and contains information on the platforms where HDF5-1.3.x
|
2000-12-09 02:33:20 +08:00
|
|
|
was tested (????? careful, under construction) and known problems in
|
|
|
|
HDF5-1.3.x. For more details check the HISTORY file in the HDF5 source.
|
1998-10-30 22:40:37 +08:00
|
|
|
|
2000-12-09 02:33:20 +08:00
|
|
|
The HDF5 documentation can be found on the NCSA ftp server
|
2000-03-24 05:34:06 +08:00
|
|
|
(ftp.ncsa.uiuc.edu) in the directory:
|
1998-10-30 22:40:37 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
/HDF/HDF5/docs/
|
1998-07-21 04:16:04 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
For more information look at the HDF5 home page at:
|
|
|
|
|
|
|
|
http://hdf.ncsa.uiuc.edu/HDF5/
|
1998-01-30 05:56:06 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
If you have any questions or comments, please send them to:
|
1998-08-07 05:32:33 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
hdfhelp@ncsa.uiuc.edu
|
1998-08-31 21:46:47 +08:00
|
|
|
|
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
CONTENTS
|
1998-08-31 21:46:47 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
- New features
|
2000-11-01 23:06:01 +08:00
|
|
|
- New h4toh5 utility
|
2000-12-16 03:17:53 +08:00
|
|
|
- F90 Support
|
|
|
|
- C++ Support
|
2000-03-24 05:34:06 +08:00
|
|
|
- Bug fixes since HDF5-1.2.0
|
|
|
|
- Platforms Tested
|
|
|
|
- Known Problems
|
1998-08-31 21:46:47 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
New features
|
|
|
|
============
|
2000-05-30 03:44:25 +08:00
|
|
|
* The Virtual File Layer, VFL, is added to replace the old file
|
2000-12-09 02:33:20 +08:00
|
|
|
drivers. It also provides an API for user defined file drivers.
|
|
|
|
* New features added to snapshots. Use 'snapshot help' to see a
|
2000-04-06 06:06:52 +08:00
|
|
|
complete list of features.
|
2000-06-20 00:23:59 +08:00
|
|
|
* Improved configure to detect if MPIO routines are available when
|
|
|
|
parallel mode is requested.
|
2000-12-09 02:33:20 +08:00
|
|
|
* Added Thread-Safe support. Phase I implemented.
|
|
|
|
* Added data sieve buffering to raw data I/O path. This is enabled
|
|
|
|
for all VFL drivers except the mpio & core drivers. Setting the
|
|
|
|
sieve buffer size is controlled with new API functions:
|
|
|
|
H5Pset_sieve_buf_size() and retrieved with H5Pget_sieve_buf_size().
|
2000-10-18 04:46:57 +08:00
|
|
|
* Added new Virtual File Driver, Stream VFD, to send/receive entire
|
|
|
|
HDF5 files via socket connections.
|
2000-12-09 02:33:20 +08:00
|
|
|
* As parts of VFL, HDF-GASS and HDF-SRB are also added to this
|
|
|
|
release. To find out details, please read INSTALL_VFL file.
|
|
|
|
* Increased maximum number of dimensions for a dataset (H5S_MAX_RANK)
|
|
|
|
from 31 to 32 to align with HDF4 & netCDF.
|
2000-10-25 02:15:44 +08:00
|
|
|
* Added 'query' function to VFL drivers. Also added 'type' parameter to
|
2000-12-09 02:33:20 +08:00
|
|
|
VFL 'read' & 'write' calls, so they are aware of the type of data
|
|
|
|
being accessed in the file. Updated the VFL document also.
|
|
|
|
* A new h4toh5 uitlity, to convert HDF4 files to analogous HDF5 files.
|
2000-11-22 03:29:55 +08:00
|
|
|
* Added a new array datatype to the datatypes which can be created. Removed
|
|
|
|
"array fields" from compound datatypes (use an array datatype instead).
|
1998-08-31 21:46:47 +08:00
|
|
|
|
2000-11-01 23:06:01 +08:00
|
|
|
Release Notes for h4toh5 beta
|
|
|
|
=============================
|
|
|
|
|
2000-12-09 02:33:20 +08:00
|
|
|
The h4toh5 utility converts an HDF4 file to an HDF5 file. See the
|
|
|
|
document, "Mapping HDF4 Objects to HDF5 Objects",
|
2000-11-22 21:58:12 +08:00
|
|
|
http://hdf.ncsa.uiuc.edu/HDF5/papers/H4-H5MappingGuidelines.pdf
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-11-22 21:58:12 +08:00
|
|
|
Known Limitations of the h4toh5 beta release
|
|
|
|
---------------------------------------------
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-11-22 21:58:12 +08:00
|
|
|
1. Error handling
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-11-22 21:58:12 +08:00
|
|
|
Error reporting is minimal.
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-11-22 21:58:12 +08:00
|
|
|
2. String datatype
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-12-09 02:33:20 +08:00
|
|
|
HDF4 has no 'string' type. String valued data are usually defined as
|
|
|
|
an array of 'char' in HDF4. The h4toh5 utility will generally map
|
|
|
|
these to HDF5 'String' types rather than array of char, with the
|
|
|
|
following additional rules:
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-11-22 21:58:12 +08:00
|
|
|
* For the data of HDF4 SDS, image, and palette, if the data is
|
|
|
|
declared 'DFNT_CHAR8' it will be assumed to be integer and
|
|
|
|
will be an H5T_INTEGER type.
|
|
|
|
* For attributes of any HDF4 object, data of type 'DFNT_CHAR8'
|
|
|
|
will be converted to an HDF5 'H5T_STRING' type.
|
|
|
|
* For Vdata of HDF4, it is difficult to determine whether data
|
|
|
|
of type 'DFNT_CHAR8' is intended to be bytes or charaters.
|
|
|
|
The h4toh5 utility will consider them as C character, and
|
|
|
|
will convert them to an HDF5 'H5T_STRING' type.
|
2000-11-01 23:06:01 +08:00
|
|
|
|
|
|
|
|
2000-11-22 21:58:12 +08:00
|
|
|
3. Compression, Chunking and External storage
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-12-09 02:33:20 +08:00
|
|
|
Chunking is supported, but compression and external storage is not.
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-12-09 02:33:20 +08:00
|
|
|
An HDF4 object that uses chunking will be converted to an HDF5 file
|
|
|
|
with analogous chunked storage.
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-11-22 21:58:12 +08:00
|
|
|
An HDF4 object that uses compression will be converted to an
|
|
|
|
uncompressed HDF5 object.
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-12-09 02:33:20 +08:00
|
|
|
An HDF4 object that uses external storage will be converted to an an
|
|
|
|
HDF5 object without external storage.
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-11-22 21:58:12 +08:00
|
|
|
4. Memory use
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-12-09 02:33:20 +08:00
|
|
|
The beta version of the h4toh5 utility copies data from HDF4 objects
|
|
|
|
in a single read followed by a single write to the HDF5 object. For
|
|
|
|
large objects, this requires a very large amount of memory, which may
|
|
|
|
be extremely slow or fail on some platforms.
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-11-22 21:58:12 +08:00
|
|
|
Note that a dataset that has only been partly written will
|
|
|
|
be read completely, including uninitialized data, and all the
|
|
|
|
data will be written to the HDF5 object.
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-11-22 21:58:12 +08:00
|
|
|
5. Platforms
|
|
|
|
|
|
|
|
The h4toh5 utility requires HDF5.1.4.
|
|
|
|
|
|
|
|
The beta h4toh5 utility has been tested on Solaris 2.6, Solaris 2.5,
|
|
|
|
Irix 6.5, HPUX 11.0, DEC Unix, FreeBSD, and Windows 2000.
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-12-16 03:17:53 +08:00
|
|
|
F90 support
|
|
|
|
============
|
|
|
|
|
|
|
|
This is the first release of the HDF5 Library wil fully integrated F90 API support.
|
|
|
|
The Fortran Library is created when the --enable-fortran flag is specified during
|
|
|
|
configuration.
|
|
|
|
|
|
|
|
Not all F90 subroutines are implemented. Please refer to the HDF5 Reference Manual
|
|
|
|
for more details.
|
|
|
|
|
|
|
|
F90 APIs are available for the Solaris 2.6 and 2.7, Linux, DEC UNIX, T3E, J90
|
|
|
|
and O2K (64 bit option only) platforms. Parallel version of the HDF5 F90 Library
|
|
|
|
is supported on the O2K and T3E platforms.
|
|
|
|
|
|
|
|
Changes since last prototype release (July 2000).
|
|
|
|
|
|
|
|
* h5open_f and h5close_f must be called instead of h5init_types and h5close_types.
|
|
|
|
* The following subroutines cannot be used anymore:
|
|
|
|
h5pset_xfer_f
|
|
|
|
h5pget_xfer_f
|
|
|
|
h5pset_mpi_f
|
|
|
|
h5pget_mpi_f
|
|
|
|
h5pset_stdio_f
|
|
|
|
h5pget_stdio_f
|
|
|
|
h5pset_sec2_f
|
|
|
|
h5pget_sec2_f
|
|
|
|
h5pset_core_f
|
|
|
|
h5pget_core_f
|
|
|
|
h5pset_family_f
|
|
|
|
h5pget_family_f
|
|
|
|
|
|
|
|
* The following functions have been added:
|
|
|
|
h5pset_fapl_mpio_f
|
|
|
|
h5pget_fapl_mpio_f
|
|
|
|
h5pset_dxpl_mpio_f
|
|
|
|
h5pget_dxpl_mpio_f
|
|
|
|
|
|
|
|
* In the previous HDF5 F90 releases, implementation of object references
|
|
|
|
and dataset region references was not portable. This release introduces
|
|
|
|
portable implementation, but it also introduces changes to read/write APIs
|
|
|
|
that handles references.
|
|
|
|
If object or dataset region references are written or read to/from
|
|
|
|
an HDF5 file, h5dwrite_f and h5dread_f must use extra parameter n - buffer size, i.e
|
|
|
|
|
|
|
|
h5dwrite(read)_f(dset_id, mem_type_id, buf, n, hdferr, &
|
|
|
|
^^^
|
|
|
|
mem_space_id, file_space_id, xfer_prp)
|
|
|
|
|
|
|
|
For other datatypes APIs were not changed.
|
|
|
|
|
|
|
|
|
|
|
|
C++ support
|
|
|
|
============
|
|
|
|
|
|
|
|
This is the first release of the HDF5 Library with fully integrated
|
|
|
|
C++ APIs support. The HDF5 C++ Library is built when the --enable-cxx
|
|
|
|
flag is specified during configuration.
|
|
|
|
|
|
|
|
Check the HDF5 Reference Manual for available C++ documentation.
|
|
|
|
|
|
|
|
C++ APIs are available for Solaris 2.6 and 2.7, Linux, and FreeBSD.
|
|
|
|
|
2000-11-01 23:06:01 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
Bug fixes since HDF5-1.2.0
|
2000-11-22 03:29:55 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
==========================
|
1998-01-30 05:56:06 +08:00
|
|
|
|
1998-01-31 03:25:44 +08:00
|
|
|
Library
|
2000-03-24 05:34:06 +08:00
|
|
|
-------
|
2000-12-09 02:33:20 +08:00
|
|
|
|
2000-04-25 03:50:35 +08:00
|
|
|
* The function H5Pset_mpi is renamed as H5Pset_fapl_mpio.
|
2000-12-09 02:33:20 +08:00
|
|
|
* Corrected a floating point number conversion error for the Cray J90
|
|
|
|
platform. The error did not convert the value 0.0 correctly.
|
|
|
|
* Error was fixed which was not allowing dataset region references to
|
|
|
|
have their regions retrieved correctly.
|
2000-04-06 06:06:52 +08:00
|
|
|
* Corrected a bug that caused non-parallel file drivers to fail in
|
|
|
|
the parallel version.
|
2000-12-09 02:33:20 +08:00
|
|
|
* Added internal free-lists to reduce memory required by the library
|
|
|
|
and H5garbage_collect API function
|
|
|
|
* Fixed error in H5Giterate which was not updating the "index"
|
|
|
|
parameter correctly.
|
2000-04-08 04:39:57 +08:00
|
|
|
* Fixed error in hyperslab iteration which was not walking through the
|
|
|
|
correct sequence of array elements if hyperslabs were staggered in a
|
|
|
|
certain pattern
|
2000-04-12 02:28:31 +08:00
|
|
|
* Fixed several other problems in hyperslab iteration code.
|
2000-12-09 02:33:20 +08:00
|
|
|
* Fixed another H5Giterate bug which was causes groups with large
|
|
|
|
numbers of objects in them to misbehave when the callback function
|
|
|
|
returned non-zero values.
|
2000-04-13 05:11:51 +08:00
|
|
|
* Changed return type of H5Aiterate and H5A_operator_t typedef to be
|
|
|
|
herr_t, to align them with the dataset and group iterator functions.
|
2000-12-09 02:33:20 +08:00
|
|
|
* Changed H5Screate_simple and H5Sset_extent_simple to not allow
|
|
|
|
dimensions of size 0 with out the same dimension being unlimited.
|
|
|
|
* QAK - 4/19/00 - Improved metadata hashing & caching algorithms to
|
|
|
|
avoid many hash flushes and also remove some redundant I/O when
|
|
|
|
moving metadata blocks in the file.
|
2000-06-08 23:17:27 +08:00
|
|
|
* The "struct(opt)" type conversion function which gets invoked for
|
|
|
|
certain compound datatype conversions was fixed for nested compound
|
|
|
|
types. This required a small change in the datatype conversion
|
|
|
|
function API.
|
2000-09-17 00:56:28 +08:00
|
|
|
* Re-wrote lots of the hyperslab code to speed it up quite a bit.
|
2000-12-09 02:33:20 +08:00
|
|
|
* Added bounded garbage collection for the free lists when they run
|
|
|
|
out of memory and also added H5set_free_list_limits API call to
|
|
|
|
allow users to put an upper limit on the amount of memory used for
|
|
|
|
free lists.
|
|
|
|
* Checked for non-existent or deleted objects when dereferencing one
|
|
|
|
with object or region references and disallow dereference.
|
|
|
|
* "Time" datatypes (H5T_UNIX_D*) were not being stored and retrieved
|
|
|
|
from object headers correctly, fixed now.
|
|
|
|
* Fixed H5Dread or H5Dwrite calls with H5FD_MPIO_COLLECTIVE requests
|
|
|
|
that may hang because not all processes are transfer the same amount
|
|
|
|
of data. (A.K.A. prematured collective return when zero amount data
|
|
|
|
requested.) Collective calls that may cause hanging is done via the
|
|
|
|
corresponding MPI-IO independent calls.
|
1998-02-16 12:39:58 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
Configuration
|
|
|
|
-------------
|
1998-02-16 12:39:58 +08:00
|
|
|
|
2000-12-09 02:33:20 +08:00
|
|
|
* The hdf5.h include file was fixed to allow the HDF5 Library to be
|
|
|
|
compiled with other libraries/applications that use GNU autoconf.
|
|
|
|
* Configuration for parallel HDF5 was improved. Configure now attempts
|
|
|
|
to link with libmpi.a and/or libmpio.a as the MPI libraries by
|
|
|
|
default. It also uses "mpirun" to launch MPI tests by default. It
|
|
|
|
tests to link MPIO routines during the configuration stage, rather
|
|
|
|
than failing later as before. One can just do "./configure
|
|
|
|
--enable-parallel" if the MPI library is in the system library.
|
2000-04-25 03:31:19 +08:00
|
|
|
* Added support for pthread library and thread-safe option.
|
2000-04-22 03:26:30 +08:00
|
|
|
* The libhdf5.settings file shows the correct machine byte-sex.
|
2000-11-22 03:29:55 +08:00
|
|
|
* Added option "--enable-stream-vfd" to configure w/o the Stream VFD.
|
2000-09-22 19:12:24 +08:00
|
|
|
For Solaris, added -lsocket to the LIBS list of libraries.
|
1998-02-16 12:39:58 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
Tools
|
|
|
|
------
|
|
|
|
* h5dump correctly displays compound datatypes.
|
|
|
|
* Corrected an error in h5toh4 which did not convert the 32bits
|
|
|
|
int from HDF5 to HDF4 corectly for the T3E platform.
|
|
|
|
* h5dump correctly displays the committed copy of predefined types
|
|
|
|
correctly.
|
|
|
|
* Added an option, -V, to show the version information of h5dump.
|
|
|
|
* Fixed a core dumping bug of h5toh4 when executed on platforms like
|
|
|
|
TFLOPS.
|
|
|
|
* The test script for h5toh4 used to not able to detect the hdp
|
|
|
|
dumper command was not valid. It now detects and reports the
|
|
|
|
failure of hdp execution.
|
2000-12-09 02:33:20 +08:00
|
|
|
* Merged the tools with the 1.2.2 branch. Required adding new
|
|
|
|
macros, VERSION12 and VERSION13, used in conditional compilation.
|
|
|
|
Updated the Windows project files for the tools.
|
2000-06-01 00:26:07 +08:00
|
|
|
* h5dump displays opaque and bitfield data correctly.
|
2000-09-22 19:12:24 +08:00
|
|
|
* h5dump and h5ls can browse files created with the Stream VFD
|
|
|
|
(eg. "h5ls <hostname>:<port>").
|
2000-10-13 10:39:39 +08:00
|
|
|
* h5dump has a new feature "-o <filename>" which outputs the raw data
|
|
|
|
of the dataset into ascii text file <filename>.
|
|
|
|
* h5toh4 used to converts hdf5 strings type to hdf4 DFNT_INT8 type.
|
|
|
|
Corrected to produce hdf4 DFNT_CHAR type instead.
|
2000-11-22 03:29:55 +08:00
|
|
|
* h5dump and h5ls displays array data correctly.
|
1999-02-05 08:39:05 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
Documentation
|
|
|
|
-------------
|
1999-02-05 08:39:05 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
* User's Guide and Reference Manual were updated.
|
|
|
|
See doc/html/PSandPDF/index.html for more details.
|
1999-02-05 08:39:05 +08:00
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
|
|
|
|
Platforms Tested:
|
|
|
|
================
|
2000-12-09 02:33:20 +08:00
|
|
|
Note: Due to the nature of bug fixes, only static versions of the
|
|
|
|
library and tools were tested.
|
1999-08-03 03:51:13 +08:00
|
|
|
|
|
|
|
|
2000-03-24 05:34:06 +08:00
|
|
|
AIX 4.3.2 (IBM SP) 3.6.6
|
|
|
|
Cray T3E 2.0.4.81 cc 6.3.0.1
|
1999-08-03 03:51:13 +08:00
|
|
|
mpt.1.3
|
2000-03-24 05:34:06 +08:00
|
|
|
FreeBSD 3.3-STABLE gcc 2.95.2
|
|
|
|
HP-UX B.10.20 HP C HP92453-01 A.10.32
|
2000-12-09 02:33:20 +08:00
|
|
|
HP-UX B.11.00 HP C HP92453-01 A.11.00.13
|
2000-03-24 05:34:06 +08:00
|
|
|
IRIX 6.5 MIPSpro cc 7.30
|
|
|
|
IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1m
|
|
|
|
mpt.1.3 (SGI MPI 3.2.0.0)
|
|
|
|
|
|
|
|
Linux 2.2.10 SuSE egcs-2.91.66 configured with
|
|
|
|
(i686-pc-linux-gnu) --disable-hsizet
|
|
|
|
mpich-1.2.0 egcs-2.91.66 19990314/Linux
|
2000-12-09 02:33:20 +08:00
|
|
|
Linux 2.2.16 RedHat gcc-2.95.2
|
2000-03-24 05:34:06 +08:00
|
|
|
|
|
|
|
OSF1 V4.0 DEC-V5.2-040
|
|
|
|
SunOS 5.6 cc WorkShop Compilers 4.2 no optimization
|
|
|
|
SunOS 5.7 cc WorkShop Compilers 5.0
|
2000-12-19 06:06:13 +08:00
|
|
|
TFLOPS 3.3 mpich-1.2.0 with local changes
|
2000-03-24 05:34:06 +08:00
|
|
|
Windows NT4.0 sp5 MSVC++ 6.0
|
|
|
|
|
|
|
|
Known Problems:
|
|
|
|
==============
|
|
|
|
|
2000-12-19 06:06:13 +08:00
|
|
|
* SunOS 5.6 with C WorkShop Compilers 4.2: Hyperslab selections will
|
2000-03-24 05:34:06 +08:00
|
|
|
fail if library is compiled using optimization of any level.
|
2000-02-10 05:36:37 +08:00
|
|
|
|
2000-12-19 06:06:13 +08:00
|
|
|
* The Stream VFD was not tested yet under Windows.
|
|
|
|
It is not supported in the TFLOPS machine.
|
|
|
|
|
|
|
|
* Shared library (--enable-shared) option does not work with Pacific
|
|
|
|
Blue, Mountain Blue. It is not supported in the TFLOPS machine.
|
|
|
|
|
|
|
|
* The ./dsets tests failed in the TFLOPS machine if the test program,
|
|
|
|
dsets.c, is compiled with the -O option. The hdf5 library still works
|
2000-12-20 01:44:28 +08:00
|
|
|
correctly with the -O option. The test program works fine if it is
|
|
|
|
compiled with -O1 or -O0. Only -O (same as -O2) causes the test
|
|
|
|
program to fail.
|
2000-12-20 00:08:47 +08:00
|
|
|
|
|
|
|
* Certain platforms give false negatives when testing h5ls:
|
|
|
|
- Solaris x86 2.5.1, Cray T3E and Cray J90 give errors during testing
|
|
|
|
when displaying object references in certain files. These are benign
|
|
|
|
differences due to the difference in sizes of the objects created on
|
|
|
|
those platforms. h5ls appears to be dumping object references
|
|
|
|
correctly.
|
|
|
|
- Cray J90 (and Cray T3E?) give errors during testing when displaying
|
|
|
|
some floating-point values. These are benign differences due to the
|
|
|
|
different precision in the values displayed and h5ls appears to be
|
|
|
|
dumping floating-point numbers correctly.
|
|
|
|
|