ANN: HIntegerByInt
Stefan O'Rear
stefanor at cox.net
Mon Aug 13 18:27:36 EDT 2007
On Mon, Aug 13, 2007 at 03:21:54PM -0700, John Meacham wrote:
> On Sat, Aug 11, 2007 at 12:09:44PM -0300, Isaac Dupree wrote:
> >
> > BTW: I estimate that it took me about two solid weeks of time, more than
> > I had originally intended to spend :)
> >
> >
> > I think using CPP will prove important, but makes it harder to test in
> > Hugs... should I use Cabal if I want to use Hugs with haskell+cpp code?
>
> I think if you were willing to use what is provided by the FFI
> extension, you could make some signifigant improvements without
> resorting to CPP. mainly, you could use unsigned arithmetic and have
> access to bit operations.
>
> I was thinking a representation like
>
> data Integer = Integer !Bool Rest
> data Rest = Digit !Word Rest | End
>
> where the Bool indicates the sign, and the rest are the base-wordsize
> digits. It would also be possible to just use a sign bit in the number
> of course. that unboxed strict Word should make a big difference.
You might also try
data Integer = Pos !Word | Neg !Word | Big !Word Integer
since the incremental penalty of 3 constructors is quite small, and it
eliminates a few indirections.
(Note: You have to actually specify -funbox-strict-fields for the ! to
do much good.)
Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://www.haskell.org/pipermail/libraries/attachments/20070813/5864f471/attachment.bin
More information about the Libraries
mailing list