In message <20011210011601$[EMAIL PROTECTED]> "Bryan C. Warnock" <[EMAIL PROTECTED]> wrote:
> - Endianness. The three major types are Big, Little, and Vaxian. > Supporting these three should handle the majority of cases. Actually VAXes have perfectly ordinary endianness - it was PDPs that had the middle endian layout. > - Floating point representations. The four major types are IEEE(ish), > Vaxian, Cray's CRI, and the IBM/370 hexadecimal format. There are some > minor variations among these, particularly with how much of the > IEEE-754 standard floating point operations adhere to. However, > adherence falls more into Portability Layer Three, and we will solely > address representation. Of course there are also about five variants of floating point format on the VAX although only two are 64 bits in size. Some of those exist (or are emulated) on Alpha as well although that also has IEEE types. > - I've code that currently converts 32, 64, 96, and 128 bit floating > point representations among all but the IBM format (for which I have > the algorithms on paper, but nowhere to test), optimized for both 32 > bit and 64 bit support. Although 96 and 128 bit handling is currently > hardcoded specifically for conversions between long doubles on x86 > machines and 64 bit processors, I've got alpha code for casting among > arbitrary types. (For casting to and from 32 bit floats on machines > that have no such type, for instance.) IEEE semantics are *not* > supported, and are still a matter for discussion. The implementation > of over- and underflow conversion to BigFloat is missing, for obvious > reasons. I'm still trying to come up with a better interface and > implementation, however. Presumably that's G_Floating that you're converting to/from for the VAX rather than D_Floating? Tom -- Tom Hughes ([EMAIL PROTECTED]) http://www.compton.nu/