portable IEEE float/double read/write functions