develooper Front page | perl.perl5.porters | Postings from February 2001

Re: IV preservation (was Re: [PATCH 5.7.0] compiling on OS/2)

Ilya Zakharevich
February 16, 2001 15:07
Re: IV preservation (was Re: [PATCH 5.7.0] compiling on OS/2)
Message ID:
On Fri, Feb 16, 2001 at 10:29:33PM +0000, 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?

>        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.

>        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.

Ilya Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About