Bigint support
James Knight <[email protected]> Mon, 14 Oct 2002 22:27:18 -0400
| Newsgroups | gmane.comp.lang.goo.general |
|---|---|
| Message-ID | <[email protected]> |
Preliminary bigint support using the GNU MP library is now in. It's not compiled into the image by default at the moment, to try it out, grab a copy of GOO off CVS, add "(use goo/bignum/gmp)" to src/goo.goo, and rebuild GOO. There is transparent switchover between <fixnum> and <bignum> depending on the size of the integer in the primitive numeric functions, so you generally shouldn't have to care about which kind of <int> you're dealing with. It appears to work as far as I can tell but there are no testcases to ensure that, and bigint constants won't work in compiled code (as the compiler isn't smart enough to know not to emit "500000000000000000" in the C code). Constants do work in the evaluator, though, so you can do e.g. goo/user 0<= (* (pow 30 30) 5555555555555555555) goo/user 0=> 1143839622748049999885616037725195000000000000000000000000000000 Maybe next can be rational numbers and arbitrary precision floats. james