On Fri, Feb 16, 2001 at 10:29:33PM +0000, nick@ing-simmons.net wrote: > >> >Etc etc etc. Checking that a float is an integer is > >> >a non-trivial and a very expensive operation. > >> > >> No it isn't (at least for IEEE). It is a simple matter of comparing > >> the (binary) exponent with the (known, constant) number of bits in the mantissa. > >> and then seeing if there are any non-zero bits to the right of the radix point. > >> (am I missing something here?). > > > >AFAIK, there is no API to extract the exponent and the mantissa from > >a double. Did I miss it? > DESCRIPTION > The frexp() function is used to split the number x into a > normalized fraction and an exponent which is stored in > exp. I would not think that this has anything to do with the bitpattern manipulations you described above. > DESCRIPTION > The modf() function breaks the argument x into an integral > part and a fractional part, each of which has the same > sign as x. The integral part is stored in iptr. This is closer, but should not be very cheep. > Both are "easy" to do by bit twiddling for IEEE format. AFAIU, there is no IEEE format. IEEE mandates *which numbers* should be representable by IEEE floats, but now how this info is stored in the bitpatterns. Given a processor info (and knowing that the compiler uses the "100% hardware" floats), one can easily write the bitpattern manipulation code, but I do not think this is what we *want* Perl to do. IlyaThread Previous | Thread Next