[gambit-list] number->integer
Guillaume Cartier
gcartier at jazzscheme.org
Wed Oct 29 20:49:31 EDT 2008
If you know your flonum is within the range of fixnums you can use the very
efficient ##flonum->fixnum which will basically compile to a cast (correct
me Marc if i'm wrong).
On Wed, Oct 29, 2008 at 8:20 PM, Darren Baker <darren at wildfire.com.au>wrote:
> Hi Taylor,
>
> I do agree but it's only *mostly* absurd I would argue. :)
>
> If I know I have a flonum within a known range, and I always want it as
> a fixnum, then this does the job, and I imagine skips a bunch of checks
> that would be irrelevant in this case (pls correct me if wrong though!)
>
> If you use (##c-code ... ) inline then the C callout is gone... and on
> GCC / Intel the conversion will compile to a cvttsd2si instruction.
>
> I am just putting a pragmatic / performance view here, it's definitely
> not elegant.
>
> Obviously if inexact->exact has higher performance, eg because it's an
> optimizable intrinsic, then this method is categorically rubbish. :) I
> haven't checked yet though.
>
> Cheers,
> Darren
>
>
>
> Taylor R Campbell wrote:
> > Date: Thu, 30 Oct 2008 08:37:32 +1000
> > From: Darren Baker <darren at wildfire.com.au>
> >
> > This is no doubt Very Bad Practice but it's useful :)
> >
> > (define flonum->fixnum
> > (c-lambda (double) int "___result = (int)___arg1;"))
> >
> > That's absurd! Aside from the obvious absurdity of calling out to C
> > for this, it leads to nasal demons if the range of the argument's
> > integral part exceeds the range of C ints or Gambit fixnums. There is
> > a perfectly good standard procedure to obtain the nearest exact number
> > to an inexact one, which one may have obtained by rounding another
> > inexact number. This procedure is called INEXACT->EXACT.
> >
> >
> >
>
> --
> Darren Baker
> CEO, CTO
> Wildfire Studios Pty. Ltd.
> Ph: +61 7 3844 1000
> Fax: +61 7 3844 8970
> www.wildfire.com.au
>
> The information in this message is confidential and may be legally
> privileged. It is intended solely for the addressee. Access to this
> message by anyone else is unauthorised. If you are not the intended
> recipient, any disclosure, copying or distribution of the message, or
> any action taken by you in reliance on it, is prohibited and may be
> unlawful. If you have received this message in error, please delete it
> and contact the sender immediately. Thank you.
>
> _______________________________________________
> Gambit-list mailing list
> Gambit-list at iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20081029/5d3c6c64/attachment.htm>
More information about the Gambit-list
mailing list