ref: 1536f46ebd0795367f7490b079b5aede0c970fcb
parent: 27c111b6225c11583aa5da5f198d82bb5c41003d
author: Ori Bernstein <[email protected]>
date: Sat Sep 6 18:19:01 EDT 2014
Fix generic bigint construction. We don't truncate and divide by zero anymore. Life is good.
--- a/libstd/bigint.myr
+++ b/libstd/bigint.myr
@@ -58,7 +58,6 @@
a = zalloc()
- a.dig = slalloc(1)
if v < 0
a.sign = -1
v = -v
@@ -65,10 +64,10 @@
elif v > 0
a.sign = 1
;;
- i = 0
- while v != 0
- a.dig[i++] = (v castto(uint32))
- v /= (Base castto(@a::(numeric,integral)))
+ i = v castto(uint64)
+ while i > 0
+ a.dig = slpush(a.dig, (i castto(uint32)))
+ i /= Base
;;
-> trim(a)
}