On Tue, 9 Sep 2003, Leopold Toetsch wrote:

> Dan Sugalski <[EMAIL PROTECTED]> wrote:
> > On Tue, 9 Sep 2003, Leopold Toetsch wrote:
> >
> >> BTW PerlInt.divide() always yields a PerlNum, this seems bogus to me.
> >> I think we need some clarification for the PerlNum implementation.
> 
> > That's right--perl math always ends up as floats.
> 
> I'm not sure:

>   FLAGS = (NOK,READONLY,pIOK,pNOK)
>   FLAGS = (IOK,NOK,READONLY,pIOK,pNOK)

> AFAIK is (IOK, pIOK) the same as a real IV.

Internally it's sometimes not a float in new versions of perl, as Nicholas
pointed out, but unless the 'use integer' pragma's in effect, the math is 
treated as if it were a floating point operation.

The IOK flag is an indication that the integer cache slot is valid--it
means that perl realized that the operation produces an integral value and 
filled in the slot appropriately.

For us, teh equivalent would be returning a PerlInt if we find the 
result produces an integral value, and a PerlNum if it doesn't. (Assuming, 
of course, that the operation took place on two perl-style PMCs, as other 
languages may have different rules on what happens)

                                        Dan

Reply via email to