diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -21,6 +21,12 @@
 | `τ(3018)` | Haskell | 35.87 μs |
 | `ω(91)` | ATS | 282.1 ns |
 | `ω(91)` | Haskell | 1.194 μs |
+| `1000!` | ATS | 93.03 μs |
+| `1000!` | Haskell | 117.1 μs |
+| `89!!` | ATS | 849.2 ns |
+| `89!!` | Haskell | 1.899 μs |
+| ``322 `choose` 16`` | ATS | 629.0 ns |
+| ``322 `choose` 16`` | Haskell | 1.801 μs |
 
 ## Building
 
diff --git a/ats-src/number-theory.dats b/ats-src/number-theory.dats
--- a/ats-src/number-theory.dats
+++ b/ats-src/number-theory.dats
@@ -23,7 +23,6 @@
   else
     m
 
-// FIXME this should return an intinf.
 fn lcm {k : nat}{l : nat} (m : int(l), n : int(k)) : int =
   (m / gcd(m, n)) * n
 
diff --git a/cbits/combinatorics.c b/cbits/combinatorics.c
--- a/cbits/combinatorics.c
+++ b/cbits/combinatorics.c
@@ -1,7 +1,7 @@
 /*
 **
 ** The C code is generated by [ATS/Postiats-0-3-8]
-** The starting compilation time is: 2018-1-7: 20h:40m
+** The starting compilation time is: 2018-1-7: 23h: 3m
 **
 */
 
diff --git a/cbits/number-theory.c b/cbits/number-theory.c
--- a/cbits/number-theory.c
+++ b/cbits/number-theory.c
@@ -1,7 +1,7 @@
 /*
 **
 ** The C code is generated by [ATS/Postiats-0-3-8]
-** The starting compilation time is: 2018-1-7: 20h:55m
+** The starting compilation time is: 2018-1-7: 23h:10m
 **
 */
 
@@ -1966,7 +1966,7 @@
 } /* end of [ATSLIB_056_prelude__gt_g1int_int__1__2] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 643(line=27, offs=4) -- 720(line=28, offs=22)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 604(line=26, offs=4) -- 681(line=27, offs=22)
 */
 /*
 local: gcd_29$0(level=0)
@@ -1985,21 +1985,21 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 643(line=27, offs=4) -- 720(line=28, offs=22)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 604(line=26, offs=4) -- 681(line=27, offs=22)
 */
 ATSINSflab(__patsflab_lcm_31):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 706(line=28, offs=8) -- 715(line=28, offs=17)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 667(line=27, offs=8) -- 676(line=27, offs=17)
 */
 ATSINSmove(tmp55, gcd_29(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 702(line=28, offs=4) -- 715(line=28, offs=17)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 663(line=27, offs=4) -- 676(line=27, offs=17)
 */
 ATSINSmove(tmp54, atspre_g0int_div_int(arg0, tmp55)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 701(line=28, offs=3) -- 720(line=28, offs=22)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 662(line=27, offs=3) -- 681(line=27, offs=22)
 */
 ATSINSmove(tmpret53, atspre_g0int_mul_int(tmp54, arg1)) ;
 
@@ -2008,7 +2008,7 @@
 } /* end of [lcm_31] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 763(line=31, offs=4) -- 1167(line=43, offs=6)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 724(line=30, offs=4) -- 1128(line=42, offs=6)
 */
 /*
 local: 
@@ -2025,11 +2025,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 763(line=31, offs=4) -- 1167(line=43, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 724(line=30, offs=4) -- 1128(line=42, offs=6)
 */
 ATSINSflab(__patsflab_divisors_33):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 808(line=32, offs=3) -- 1167(line=43, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 769(line=31, offs=3) -- 1128(line=42, offs=6)
 */
 /*
 letpush(beg)
@@ -2039,12 +2039,12 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1151(line=42, offs=5) -- 1161(line=42, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1112(line=41, offs=5) -- 1122(line=41, offs=15)
 */
 ATSINSmove(tmpret56, loop_34(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 808(line=32, offs=3) -- 1167(line=43, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 769(line=31, offs=3) -- 1128(line=42, offs=6)
 */
 /*
 INSletpop()
@@ -2054,7 +2054,7 @@
 } /* end of [divisors_33] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 820(line=33, offs=9) -- 1141(line=40, offs=33)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 781(line=32, offs=9) -- 1102(line=39, offs=33)
 */
 /*
 local: loop_34$0(level=1)
@@ -2074,48 +2074,48 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 820(line=33, offs=9) -- 1141(line=40, offs=33)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 781(line=32, offs=9) -- 1102(line=39, offs=33)
 */
 ATSINSflab(__patsflab_loop_34):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 927(line=34, offs=10) -- 935(line=34, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 888(line=33, offs=10) -- 896(line=33, offs=18)
 */
 ATSINSmove(tmp58, ATSLIB_056_prelude__gte_g1int_int__35__1(arg1, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 924(line=34, offs=7) -- 1141(line=40, offs=33)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 885(line=33, offs=7) -- 1102(line=39, offs=33)
 */
 ATSif(
 tmp58
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 949(line=35, offs=9) -- 1001(line=35, offs=61)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 910(line=34, offs=9) -- 962(line=34, offs=61)
 */
 ATSINSmove_ldelay(tmpret57, atstype_boxed, ATSPMVcfunlab(1, __patsfun_38, (arg1))) ;
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1024(line=37, offs=12) -- 1031(line=37, offs=19)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 985(line=36, offs=12) -- 992(line=36, offs=19)
 */
 ATSINSmove(tmp69, atspre_g0int_mod_int(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1024(line=37, offs=12) -- 1035(line=37, offs=23)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 985(line=36, offs=12) -- 996(line=36, offs=23)
 */
 ATSINSmove(tmp66, ATSLIB_056_prelude__eq_g0int_int__7__5(tmp69, ATSPMVi0nt(0))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1021(line=37, offs=9) -- 1141(line=40, offs=33)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 982(line=36, offs=9) -- 1102(line=39, offs=33)
 */
 ATSif(
 tmp66
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1051(line=38, offs=11) -- 1095(line=38, offs=55)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1012(line=37, offs=11) -- 1056(line=37, offs=55)
 */
 ATSINSmove_ldelay(tmpret57, atstype_boxed, ATSPMVcfunlab(1, __patsfun_41, (arg0, arg1))) ;
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1119(line=40, offs=11) -- 1141(line=40, offs=33)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1080(line=39, offs=11) -- 1102(line=39, offs=33)
 */
 ATSINSmove_ldelay(tmpret57, atstype_boxed, ATSPMVcfunlab(1, __patsfun_42, ())) ;
 } /* ATSendif */
@@ -2209,7 +2209,7 @@
 } /* end of [ATSLIB_056_prelude__gte_g1int_int__35__1] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 949(line=35, offs=9) -- 1001(line=35, offs=61)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 910(line=34, offs=9) -- 962(line=34, offs=61)
 */
 /*
 local: 
@@ -2227,21 +2227,21 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 949(line=35, offs=9) -- 1001(line=35, offs=61)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 910(line=34, offs=9) -- 962(line=34, offs=61)
 */
 ATSINSflab(__patsflab___patsfun_38):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 949(line=35, offs=9) -- 1001(line=35, offs=61)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 910(line=34, offs=9) -- 962(line=34, offs=61)
 */
 ATSif(
 arg0
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 977(line=35, offs=37) -- 999(line=35, offs=59)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 938(line=34, offs=37) -- 960(line=34, offs=59)
 */
 ATSINSmove_ldelay(tmp64, atstype_boxed, ATSPMVcfunlab(1, __patsfun_39, ())) ;
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 957(line=35, offs=17) -- 1000(line=35, offs=60)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 918(line=34, offs=17) -- 961(line=34, offs=60)
 */
 
 /*
@@ -2263,7 +2263,7 @@
 } /* end of [__patsfun_38] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 977(line=35, offs=37) -- 999(line=35, offs=59)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 938(line=34, offs=37) -- 960(line=34, offs=59)
 */
 /*
 local: 
@@ -2280,17 +2280,17 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 977(line=35, offs=37) -- 999(line=35, offs=59)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 938(line=34, offs=37) -- 960(line=34, offs=59)
 */
 ATSINSflab(__patsflab___patsfun_39):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 977(line=35, offs=37) -- 999(line=35, offs=59)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 938(line=34, offs=37) -- 960(line=34, offs=59)
 */
 ATSif(
 arg0
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 985(line=35, offs=45) -- 998(line=35, offs=58)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 946(line=34, offs=45) -- 959(line=34, offs=58)
 */
 
 ATSINSmove_nil(tmpret65) ;
@@ -2344,7 +2344,7 @@
 } /* end of [ATSLIB_056_prelude__eq_g0int_int__7__5] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1051(line=38, offs=11) -- 1095(line=38, offs=55)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1012(line=37, offs=11) -- 1056(line=37, offs=55)
 */
 /*
 local: loop_34$0(level=1)
@@ -2363,27 +2363,27 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1051(line=38, offs=11) -- 1095(line=38, offs=55)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1012(line=37, offs=11) -- 1056(line=37, offs=55)
 */
 ATSINSflab(__patsflab___patsfun_41):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1051(line=38, offs=11) -- 1095(line=38, offs=55)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1012(line=37, offs=11) -- 1056(line=37, offs=55)
 */
 ATSif(
 arg0
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1085(line=38, offs=45) -- 1092(line=38, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1046(line=37, offs=45) -- 1053(line=37, offs=52)
 */
 ATSINSmove(tmp72, atspre_g1int_add_int(env1, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1077(line=38, offs=37) -- 1093(line=38, offs=53)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1038(line=37, offs=37) -- 1054(line=37, offs=53)
 */
 ATSINSmove(tmp71, loop_34(env0, tmp72)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1059(line=38, offs=19) -- 1094(line=38, offs=54)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1020(line=37, offs=19) -- 1055(line=37, offs=54)
 */
 
 /*
@@ -2405,7 +2405,7 @@
 } /* end of [__patsfun_41] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1119(line=40, offs=11) -- 1141(line=40, offs=33)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1080(line=39, offs=11) -- 1102(line=39, offs=33)
 */
 /*
 local: 
@@ -2422,17 +2422,17 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1119(line=40, offs=11) -- 1141(line=40, offs=33)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1080(line=39, offs=11) -- 1102(line=39, offs=33)
 */
 ATSINSflab(__patsflab___patsfun_42):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1119(line=40, offs=11) -- 1141(line=40, offs=33)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1080(line=39, offs=11) -- 1102(line=39, offs=33)
 */
 ATSif(
 arg0
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1127(line=40, offs=19) -- 1140(line=40, offs=32)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1088(line=39, offs=19) -- 1101(line=39, offs=32)
 */
 
 ATSINSmove_nil(tmpret73) ;
@@ -2445,7 +2445,7 @@
 } /* end of [__patsfun_42] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1172(line=45, offs=4) -- 1483(line=57, offs=6)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1133(line=44, offs=4) -- 1444(line=56, offs=6)
 */
 /*
 local: 
@@ -2462,11 +2462,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1172(line=45, offs=4) -- 1483(line=57, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1133(line=44, offs=4) -- 1444(line=56, offs=6)
 */
 ATSINSflab(__patsflab_count_divisors_43):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1214(line=46, offs=3) -- 1483(line=57, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1175(line=45, offs=3) -- 1444(line=56, offs=6)
 */
 /*
 letpush(beg)
@@ -2476,12 +2476,12 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1467(line=56, offs=5) -- 1477(line=56, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1428(line=55, offs=5) -- 1438(line=55, offs=15)
 */
 ATSINSmove(tmpret74, loop_44(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1214(line=46, offs=3) -- 1483(line=57, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1175(line=45, offs=3) -- 1444(line=56, offs=6)
 */
 /*
 INSletpop()
@@ -2491,7 +2491,7 @@
 } /* end of [count_divisors_43] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1226(line=47, offs=9) -- 1457(line=54, offs=27)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1187(line=46, offs=9) -- 1418(line=53, offs=27)
 */
 /*
 local: loop_44$0(level=1)
@@ -2516,64 +2516,64 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1226(line=47, offs=9) -- 1457(line=54, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1187(line=46, offs=9) -- 1418(line=53, offs=27)
 */
 ATSINSflab(__patsflab_loop_44):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1324(line=48, offs=10) -- 1332(line=48, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1285(line=47, offs=10) -- 1293(line=47, offs=18)
 */
 ATSINSmove(tmp76, ATSLIB_056_prelude__gte_g1int_int__35__2(arg1, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1321(line=48, offs=7) -- 1457(line=54, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1282(line=47, offs=7) -- 1418(line=53, offs=27)
 */
 ATSif(
 tmp76
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1346(line=49, offs=9) -- 1347(line=49, offs=10)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1307(line=48, offs=9) -- 1308(line=48, offs=10)
 */
 ATSINSmove(tmpret75, ATSPMVi0nt(1)) ;
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1370(line=51, offs=12) -- 1377(line=51, offs=19)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1331(line=50, offs=12) -- 1338(line=50, offs=19)
 */
 ATSINSmove(tmp82, atspre_g0int_mod_int(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1370(line=51, offs=12) -- 1381(line=51, offs=23)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1331(line=50, offs=12) -- 1342(line=50, offs=23)
 */
 ATSINSmove(tmp79, ATSLIB_056_prelude__eq_g0int_int__7__6(tmp82, ATSPMVi0nt(0))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1367(line=51, offs=9) -- 1457(line=54, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1328(line=50, offs=9) -- 1418(line=53, offs=27)
 */
 ATSif(
 tmp79
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1409(line=52, offs=23) -- 1416(line=52, offs=30)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1370(line=51, offs=23) -- 1377(line=51, offs=30)
 */
 ATSINSmove(tmp84, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1401(line=52, offs=15) -- 1417(line=52, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1362(line=51, offs=15) -- 1378(line=51, offs=31)
 */
 ATSINSmove(tmp83, loop_44(arg0, tmp84)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1397(line=52, offs=11) -- 1417(line=52, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1358(line=51, offs=11) -- 1378(line=51, offs=31)
 */
 ATSINSmove(tmpret75, atspre_g0int_add_int(ATSPMVi0nt(1), tmp83)) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1449(line=54, offs=19) -- 1456(line=54, offs=26)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1410(line=53, offs=19) -- 1417(line=53, offs=26)
 */
 ATSINSmove(tmp85, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1441(line=54, offs=11) -- 1457(line=54, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1402(line=53, offs=11) -- 1418(line=53, offs=27)
 */
 ATStailcal_beg()
 ATSINSmove_tlcal(apy0, arg0) ;
@@ -2672,7 +2672,7 @@
 } /* end of [ATSLIB_056_prelude__eq_g0int_int__7__6] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1488(line=59, offs=4) -- 1799(line=71, offs=6)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1449(line=58, offs=4) -- 1760(line=70, offs=6)
 */
 /*
 local: 
@@ -2689,11 +2689,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1488(line=59, offs=4) -- 1799(line=71, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1449(line=58, offs=4) -- 1760(line=70, offs=6)
 */
 ATSINSflab(__patsflab_sum_divisors_48):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1528(line=60, offs=3) -- 1799(line=71, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1489(line=59, offs=3) -- 1760(line=70, offs=6)
 */
 /*
 letpush(beg)
@@ -2703,12 +2703,12 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1783(line=70, offs=5) -- 1793(line=70, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1744(line=69, offs=5) -- 1754(line=69, offs=15)
 */
 ATSINSmove(tmpret86, loop_49(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1528(line=60, offs=3) -- 1799(line=71, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1489(line=59, offs=3) -- 1760(line=70, offs=6)
 */
 /*
 INSletpop()
@@ -2718,7 +2718,7 @@
 } /* end of [sum_divisors_48] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1540(line=61, offs=9) -- 1773(line=68, offs=27)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1501(line=60, offs=9) -- 1734(line=67, offs=27)
 */
 /*
 local: loop_49$0(level=1)
@@ -2743,64 +2743,64 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1540(line=61, offs=9) -- 1773(line=68, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1501(line=60, offs=9) -- 1734(line=67, offs=27)
 */
 ATSINSflab(__patsflab_loop_49):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1638(line=62, offs=10) -- 1646(line=62, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1599(line=61, offs=10) -- 1607(line=61, offs=18)
 */
 ATSINSmove(tmp88, ATSLIB_056_prelude__gte_g1int_int__35__3(arg1, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1635(line=62, offs=7) -- 1773(line=68, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1596(line=61, offs=7) -- 1734(line=67, offs=27)
 */
 ATSif(
 tmp88
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1660(line=63, offs=9) -- 1661(line=63, offs=10)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1621(line=62, offs=9) -- 1622(line=62, offs=10)
 */
 ATSINSmove(tmpret87, ATSPMVi0nt(0)) ;
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1684(line=65, offs=12) -- 1691(line=65, offs=19)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1645(line=64, offs=12) -- 1652(line=64, offs=19)
 */
 ATSINSmove(tmp94, atspre_g0int_mod_int(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1684(line=65, offs=12) -- 1695(line=65, offs=23)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1645(line=64, offs=12) -- 1656(line=64, offs=23)
 */
 ATSINSmove(tmp91, ATSLIB_056_prelude__eq_g0int_int__7__7(tmp94, ATSPMVi0nt(0))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1681(line=65, offs=9) -- 1773(line=68, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1642(line=64, offs=9) -- 1734(line=67, offs=27)
 */
 ATSif(
 tmp91
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1725(line=66, offs=25) -- 1732(line=66, offs=32)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1686(line=65, offs=25) -- 1693(line=65, offs=32)
 */
 ATSINSmove(tmp96, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1717(line=66, offs=17) -- 1733(line=66, offs=33)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1678(line=65, offs=17) -- 1694(line=65, offs=33)
 */
 ATSINSmove(tmp95, loop_49(arg0, tmp96)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1711(line=66, offs=11) -- 1733(line=66, offs=33)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1672(line=65, offs=11) -- 1694(line=65, offs=33)
 */
 ATSINSmove(tmpret87, atspre_g0int_add_int(arg1, tmp95)) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1765(line=68, offs=19) -- 1772(line=68, offs=26)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1726(line=67, offs=19) -- 1733(line=67, offs=26)
 */
 ATSINSmove(tmp97, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1757(line=68, offs=11) -- 1773(line=68, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1718(line=67, offs=11) -- 1734(line=67, offs=27)
 */
 ATStailcal_beg()
 ATSINSmove_tlcal(apy0, arg0) ;
@@ -2899,7 +2899,7 @@
 } /* end of [ATSLIB_056_prelude__eq_g0int_int__7__7] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1804(line=73, offs=4) -- 1862(line=74, offs=22)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1765(line=72, offs=4) -- 1823(line=73, offs=22)
 */
 /*
 local: sum_divisors_48$0(level=0)
@@ -2917,16 +2917,16 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1804(line=73, offs=4) -- 1862(line=74, offs=22)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1765(line=72, offs=4) -- 1823(line=73, offs=22)
 */
 ATSINSflab(__patsflab_is_perfect_52):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1843(line=74, offs=3) -- 1857(line=74, offs=17)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1804(line=73, offs=3) -- 1818(line=73, offs=17)
 */
 ATSINSmove(tmp101, sum_divisors_48(arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1843(line=74, offs=3) -- 1862(line=74, offs=22)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1804(line=73, offs=3) -- 1823(line=73, offs=22)
 */
 ATSINSmove(tmpret98, ATSLIB_056_prelude__eq_g0int_int__7__8(tmp101, arg0)) ;
 
@@ -2976,7 +2976,7 @@
 } /* end of [ATSLIB_056_prelude__eq_g0int_int__7__8] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1894(line=77, offs=4) -- 2275(line=92, offs=6)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1855(line=76, offs=4) -- 2236(line=91, offs=6)
 */
 /*
 local: is_prime_16$0(level=0)
@@ -2993,11 +2993,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1894(line=77, offs=4) -- 2275(line=92, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1855(line=76, offs=4) -- 2236(line=91, offs=6)
 */
 ATSINSflab(__patsflab_little_omega_54):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1934(line=78, offs=3) -- 2275(line=92, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1895(line=77, offs=3) -- 2236(line=91, offs=6)
 */
 /*
 letpush(beg)
@@ -3007,12 +3007,12 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2259(line=91, offs=5) -- 2269(line=91, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2220(line=90, offs=5) -- 2230(line=90, offs=15)
 */
 ATSINSmove(tmpret102, loop_55(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1934(line=78, offs=3) -- 2275(line=92, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1895(line=77, offs=3) -- 2236(line=91, offs=6)
 */
 /*
 INSletpop()
@@ -3022,7 +3022,7 @@
 } /* end of [little_omega_54] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1946(line=79, offs=9) -- 2249(line=89, offs=27)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1907(line=78, offs=9) -- 2210(line=88, offs=27)
 */
 /*
 local: is_prime_16$0(level=0), loop_55$0(level=1)
@@ -3049,98 +3049,98 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1946(line=79, offs=9) -- 2249(line=89, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 1907(line=78, offs=9) -- 2210(line=88, offs=27)
 */
 ATSINSflab(__patsflab_loop_55):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2044(line=80, offs=10) -- 2052(line=80, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2005(line=79, offs=10) -- 2013(line=79, offs=18)
 */
 ATSINSmove(tmp104, ATSLIB_056_prelude__gte_g1int_int__35__4(arg1, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2041(line=80, offs=7) -- 2249(line=89, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2002(line=79, offs=7) -- 2210(line=88, offs=27)
 */
 ATSif(
 tmp104
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2069(line=81, offs=12) -- 2079(line=81, offs=22)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2030(line=80, offs=12) -- 2040(line=80, offs=22)
 */
 ATSINSmove(tmp107, is_prime_16(arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2066(line=81, offs=9) -- 2122(line=84, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2027(line=80, offs=9) -- 2083(line=83, offs=12)
 */
 ATSif(
 tmp107
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2096(line=82, offs=11) -- 2097(line=82, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2057(line=81, offs=11) -- 2058(line=81, offs=12)
 */
 ATSINSmove(tmpret103, ATSPMVi0nt(1)) ;
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2121(line=84, offs=11) -- 2122(line=84, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2082(line=83, offs=11) -- 2083(line=83, offs=12)
 */
 ATSINSmove(tmpret103, ATSPMVi0nt(0)) ;
 } /* ATSendif */
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2145(line=86, offs=12) -- 2172(line=86, offs=39)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2106(line=85, offs=12) -- 2133(line=85, offs=39)
 */
 ATSINSmove(tmp112, atspre_g0int_mod_int(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2145(line=86, offs=12) -- 2172(line=86, offs=39)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2106(line=85, offs=12) -- 2133(line=85, offs=39)
 */
 ATSINSmove(tmp109, ATSLIB_056_prelude__eq_g0int_int__7__9(tmp112, ATSPMVi0nt(0))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2145(line=86, offs=12) -- 2172(line=86, offs=39)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2106(line=85, offs=12) -- 2133(line=85, offs=39)
 */
 ATSif(
 tmp109
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2145(line=86, offs=12) -- 2172(line=86, offs=39)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2106(line=85, offs=12) -- 2133(line=85, offs=39)
 */
 ATSINSmove(tmp108, is_prime_16(arg1)) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2145(line=86, offs=12) -- 2172(line=86, offs=39)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2106(line=85, offs=12) -- 2133(line=85, offs=39)
 */
 ATSINSmove(tmp108, ATSPMVbool_false()) ;
 } /* ATSendif */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2142(line=86, offs=9) -- 2249(line=89, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2103(line=85, offs=9) -- 2210(line=88, offs=27)
 */
 ATSif(
 tmp108
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2201(line=87, offs=23) -- 2208(line=87, offs=30)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2162(line=86, offs=23) -- 2169(line=86, offs=30)
 */
 ATSINSmove(tmp114, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2193(line=87, offs=15) -- 2209(line=87, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2154(line=86, offs=15) -- 2170(line=86, offs=31)
 */
 ATSINSmove(tmp113, loop_55(arg0, tmp114)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2189(line=87, offs=11) -- 2209(line=87, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2150(line=86, offs=11) -- 2170(line=86, offs=31)
 */
 ATSINSmove(tmpret103, atspre_g0int_add_int(ATSPMVi0nt(1), tmp113)) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2241(line=89, offs=19) -- 2248(line=89, offs=26)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2202(line=88, offs=19) -- 2209(line=88, offs=26)
 */
 ATSINSmove(tmp115, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2233(line=89, offs=11) -- 2249(line=89, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2194(line=88, offs=11) -- 2210(line=88, offs=27)
 */
 ATStailcal_beg()
 ATSINSmove_tlcal(apy0, arg0) ;
@@ -3239,7 +3239,7 @@
 } /* end of [ATSLIB_056_prelude__eq_g0int_int__7__9] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2309(line=95, offs=4) -- 2857(line=115, offs=10)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2270(line=94, offs=4) -- 2818(line=114, offs=10)
 */
 /*
 local: is_prime_16$0(level=0)
@@ -3256,11 +3256,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2309(line=95, offs=4) -- 2857(line=115, offs=10)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2270(line=94, offs=4) -- 2818(line=114, offs=10)
 */
 ATSINSflab(__patsflab_totient_58):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2342(line=96, offs=3) -- 2857(line=115, offs=10)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2303(line=95, offs=3) -- 2818(line=114, offs=10)
 */
 ATScaseof_beg()
 /*
@@ -3268,15 +3268,15 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2359(line=97, offs=7) -- 2360(line=97, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2320(line=96, offs=7) -- 2321(line=96, offs=8)
 */
 ATSINSlab(__atstmplab6):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2317(line=95, offs=12) -- 2318(line=95, offs=13)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2278(line=94, offs=12) -- 2279(line=94, offs=13)
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab8) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2360(line=97, offs=8) -- 2360(line=97, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2321(line=96, offs=8) -- 2321(line=96, offs=8)
 */
 ATSINSlab(__atstmplab7):
 /*
@@ -3286,14 +3286,14 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2364(line=97, offs=12) -- 2365(line=97, offs=13)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2325(line=96, offs=12) -- 2326(line=96, offs=13)
 */
 ATSINSmove(tmpret116, ATSPMVi0nt(1)) ;
 ATSbranch_end()
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2373(line=98, offs=8) -- 2373(line=98, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2334(line=97, offs=8) -- 2334(line=97, offs=8)
 */
 ATSINSlab(__atstmplab8):
 /*
@@ -3303,7 +3303,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2399(line=100, offs=9) -- 2847(line=114, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2360(line=99, offs=9) -- 2808(line=113, offs=12)
 */
 /*
 letpush(beg)
@@ -3313,12 +3313,12 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2825(line=113, offs=11) -- 2835(line=113, offs=21)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2786(line=112, offs=11) -- 2796(line=112, offs=21)
 */
 ATSINSmove(tmpret116, loop_59(ATSPMVi0nt(1), arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2399(line=100, offs=9) -- 2847(line=114, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2360(line=99, offs=9) -- 2808(line=113, offs=12)
 */
 /*
 INSletpop()
@@ -3335,7 +3335,7 @@
 } /* end of [totient_58] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2417(line=101, offs=15) -- 2803(line=111, offs=31)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2378(line=100, offs=15) -- 2764(line=110, offs=31)
 */
 /*
 local: is_prime_16$0(level=0), loop_59$0(level=1)
@@ -3368,126 +3368,126 @@
 */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2417(line=101, offs=15) -- 2803(line=111, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2378(line=100, offs=15) -- 2764(line=110, offs=31)
 */
 ATSINSflab(__patsflab_loop_59):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2528(line=102, offs=16) -- 2534(line=102, offs=22)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2489(line=101, offs=16) -- 2495(line=101, offs=22)
 */
 ATSINSmove(tmp118, ATSLIB_056_prelude__gte_g1int_int__35__5(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2525(line=102, offs=13) -- 2803(line=111, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2486(line=101, offs=13) -- 2764(line=110, offs=31)
 */
 ATSif(
 tmp118
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2557(line=103, offs=18) -- 2567(line=103, offs=28)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2518(line=102, offs=18) -- 2528(line=102, offs=28)
 */
 ATSINSmove(tmp121, is_prime_16(arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2554(line=103, offs=15) -- 2632(line=106, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2515(line=102, offs=15) -- 2593(line=105, offs=18)
 */
 ATSif(
 tmp121
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2590(line=104, offs=17) -- 2595(line=104, offs=22)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2551(line=103, offs=17) -- 2556(line=103, offs=22)
 */
 ATSINSmove(tmpret117, atspre_g1int_sub_int(arg1, ATSPMVi0nt(1))) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2631(line=106, offs=17) -- 2632(line=106, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2592(line=105, offs=17) -- 2593(line=105, offs=18)
 */
 ATSINSmove(tmpret117, arg1) ;
 } /* ATSendif */
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2667(line=108, offs=18) -- 2701(line=108, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2628(line=107, offs=18) -- 2662(line=107, offs=52)
 */
 ATSINSmove(tmp127, atspre_g0int_mod_int(arg1, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2667(line=108, offs=18) -- 2701(line=108, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2628(line=107, offs=18) -- 2662(line=107, offs=52)
 */
 ATSINSmove(tmp124, ATSLIB_056_prelude__eq_g0int_int__7__10(tmp127, ATSPMVi0nt(0))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2667(line=108, offs=18) -- 2701(line=108, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2628(line=107, offs=18) -- 2662(line=107, offs=52)
 */
 ATSif(
 tmp124
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2667(line=108, offs=18) -- 2701(line=108, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2628(line=107, offs=18) -- 2662(line=107, offs=52)
 */
 ATSINSmove(tmp123, is_prime_16(arg0)) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2667(line=108, offs=18) -- 2701(line=108, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2628(line=107, offs=18) -- 2662(line=107, offs=52)
 */
 ATSINSmove(tmp123, ATSPMVbool_false()) ;
 } /* ATSendif */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2667(line=108, offs=18) -- 2701(line=108, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2628(line=107, offs=18) -- 2662(line=107, offs=52)
 */
 ATSif(
 tmp123
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2667(line=108, offs=18) -- 2701(line=108, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2628(line=107, offs=18) -- 2662(line=107, offs=52)
 */
 ATSINSmove(tmp122, ATSLIB_056_prelude__neq_g1int_int__63__1(arg0, arg1)) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2667(line=108, offs=18) -- 2701(line=108, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2628(line=107, offs=18) -- 2662(line=107, offs=52)
 */
 ATSINSmove(tmp122, ATSPMVbool_false()) ;
 } /* ATSendif */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2664(line=108, offs=15) -- 2803(line=111, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2625(line=107, offs=15) -- 2764(line=110, offs=31)
 */
 ATSif(
 tmp122
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2729(line=109, offs=23) -- 2734(line=109, offs=28)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2690(line=108, offs=23) -- 2695(line=108, offs=28)
 */
 ATSINSmove(tmp134, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2724(line=109, offs=18) -- 2738(line=109, offs=32)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2685(line=108, offs=18) -- 2699(line=108, offs=32)
 */
 ATSINSmove(tmp133, loop_59(tmp134, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2724(line=109, offs=18) -- 2742(line=109, offs=36)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2685(line=108, offs=18) -- 2703(line=108, offs=36)
 */
 ATSINSmove(tmp132, atspre_g0int_div_int(tmp133, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2747(line=109, offs=41) -- 2752(line=109, offs=46)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2708(line=108, offs=41) -- 2713(line=108, offs=46)
 */
 ATSINSmove(tmp135, atspre_g1int_sub_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2723(line=109, offs=17) -- 2753(line=109, offs=47)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2684(line=108, offs=17) -- 2714(line=108, offs=47)
 */
 ATSINSmove(tmpret117, atspre_g0int_mul_int(tmp132, tmp135)) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2794(line=111, offs=22) -- 2799(line=111, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2755(line=110, offs=22) -- 2760(line=110, offs=27)
 */
 ATSINSmove(tmp136, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2789(line=111, offs=17) -- 2803(line=111, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2750(line=110, offs=17) -- 2764(line=110, offs=31)
 */
 ATStailcal_beg()
 ATSINSmove_tlcal(apy0, tmp136) ;
@@ -3673,7 +3673,7 @@
 } /* end of [ATSLIB_056_prelude__neq_g1int_int__63__1] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2910(line=118, offs=5) -- 3298(line=132, offs=6)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2871(line=117, offs=5) -- 3259(line=131, offs=6)
 */
 /*
 local: witness_12$0(level=0), totient_58$0(level=0)
@@ -3690,11 +3690,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2910(line=118, offs=5) -- 3298(line=132, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2871(line=117, offs=5) -- 3259(line=131, offs=6)
 */
 ATSINSflab(__patsflab_totient_sum_66):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2950(line=119, offs=3) -- 3298(line=132, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2911(line=118, offs=3) -- 3259(line=131, offs=6)
 */
 /*
 letpush(beg)
@@ -3704,12 +3704,12 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3282(line=131, offs=5) -- 3292(line=131, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3243(line=130, offs=5) -- 3253(line=130, offs=15)
 */
 ATSINSmove(tmpret137, loop_67(ATSPMVi0nt(1), arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2950(line=119, offs=3) -- 3298(line=132, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2911(line=118, offs=3) -- 3259(line=131, offs=6)
 */
 /*
 INSletpop()
@@ -3719,7 +3719,7 @@
 } /* end of [totient_sum_66] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2962(line=120, offs=9) -- 3272(line=129, offs=40)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2923(line=119, offs=9) -- 3233(line=128, offs=40)
 */
 /*
 local: witness_12$0(level=0), totient_58$0(level=0), loop_67$0(level=1)
@@ -3748,33 +3748,33 @@
 */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2962(line=120, offs=9) -- 3272(line=129, offs=40)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 2923(line=119, offs=9) -- 3233(line=128, offs=40)
 */
 ATSINSflab(__patsflab_loop_67):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3065(line=121, offs=10) -- 3074(line=121, offs=19)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3026(line=120, offs=10) -- 3035(line=120, offs=19)
 */
 ATSINSmove(tmp139, ATSLIB_056_prelude__lt_g1int_int__18__2(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3062(line=121, offs=7) -- 3272(line=129, offs=40)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3023(line=120, offs=7) -- 3233(line=128, offs=40)
 */
 ATSif(
 tmp139
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3088(line=122, offs=9) -- 3221(line=127, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3049(line=121, offs=9) -- 3182(line=126, offs=12)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3115(line=123, offs=24) -- 3120(line=123, offs=29)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3076(line=122, offs=24) -- 3081(line=122, offs=29)
 */
 ATSINSmove(tmp143, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3110(line=123, offs=19) -- 3128(line=123, offs=37)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3071(line=122, offs=19) -- 3089(line=122, offs=37)
 */
 ATSINSmove(tmp142, loop_67(tmp143, arg1)) ;
 
@@ -3783,39 +3783,39 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3174(line=124, offs=46) -- 3183(line=124, offs=55)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3135(line=123, offs=46) -- 3144(line=123, offs=55)
 */
 ATSINSmove(tmp149, totient_58(arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3166(line=124, offs=38) -- 3185(line=124, offs=57)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3127(line=123, offs=38) -- 3146(line=123, offs=57)
 */
 ATSINSmove(tmp148, witness_12(tmp149)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3147(line=124, offs=19) -- 3186(line=124, offs=58)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3108(line=123, offs=19) -- 3147(line=123, offs=58)
 */
 ATSINSmove(tmpret138, ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_int__69__1(tmp142, tmp148)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3088(line=122, offs=9) -- 3221(line=127, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3049(line=121, offs=9) -- 3182(line=126, offs=12)
 */
 /*
 INSletpop()
 */
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3241(line=129, offs=9) -- 3272(line=129, offs=40)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3202(line=128, offs=9) -- 3233(line=128, offs=40)
 */
 ATSINSmove(tmp159, totient_58(arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3241(line=129, offs=9) -- 3272(line=129, offs=40)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3202(line=128, offs=9) -- 3233(line=128, offs=40)
 */
 ATSINSmove(tmp158, witness_12(tmp159)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3241(line=129, offs=9) -- 3272(line=129, offs=40)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 3202(line=128, offs=9) -- 3233(line=128, offs=40)
 */
 ATSINSmove(tmpret138, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__71__1(tmp158)) ;
 
diff --git a/cbits/numerics.c b/cbits/numerics.c
--- a/cbits/numerics.c
+++ b/cbits/numerics.c
@@ -1,7 +1,7 @@
 /*
 **
 ** The C code is generated by [ATS/Postiats-0-3-8]
-** The starting compilation time is: 2018-1-7: 20h:35m
+** The starting compilation time is: 2018-1-7: 23h:21m
 **
 */
 
diff --git a/fast-arithmetic.cabal b/fast-arithmetic.cabal
--- a/fast-arithmetic.cabal
+++ b/fast-arithmetic.cabal
@@ -1,5 +1,5 @@
 name:                fast-arithmetic
-version:             0.1.1.4
+version:             0.1.1.5
 synopsis:            Fast functions on integers.
 description:         Fast functions for number theory and combinatorics with a high level of safety guaranteed by [ATS](http://www.ats-lang.org/). This package also provides a
                      'Storable' instance for GMP's @mpz@ type.
@@ -9,7 +9,7 @@
 author:              Vanessa McHale
 maintainer:          vamchale@gmail.com
 copyright:           Copyright: (c) 2018 Vanessa McHale
-category:            Numerics, Math, Algorithms, Number Theory, Combinatorics
+category:            Numerics, Math, Algorithms, Number Theory, Combinatorics, FFI, ATS
 build-type:          Custom
 extra-source-files:  ats-deps/prelude/ATS2-Postiats-include-0.3.8/ccomp/runtime/pats_ccomp_config.h
                    , ats-src/*.dats
