diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -21,6 +21,8 @@
 | `φ(2016)` | Haskell | - |
 | `τ(3018)` | ATS | 438.5 ns |
 | `τ(3018)` | Haskell | 726.4 ns |
+| `σ(115)` | ATS | 216.3 ns |
+| `σ(115)` | Haskell | 324.5 ns |
 | `ω(91)` | ATS | 66.59 ns |
 | `ω(91)` | Haskell | 338.6 ns |
 | `160!` | ATS | 4.081 μs |
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
@@ -166,13 +166,13 @@
   end
 
 // Euler's totient function.
-fn totient(n : intGte(1)) : int =
+fn totient(n : intGte(1)) :<> int =
   case+ n of
     | 1 => 1
     | n =>> 
       begin
         let
-          fnx loop { k : nat | k >= 2 }{ m : nat | m > 0 && k >= m } .<k-m>. (i : int(m), n : int(k)) : int =
+          fnx loop { k : nat | k >= 2 }{ m : nat | m > 0 && k >= m } .<k-m>. (i : int(m), n : int(k)) :<> int =
             if i >= n then
               if is_prime(n) then
                 n - 1
diff --git a/bench/Bench.hs b/bench/Bench.hs
--- a/bench/Bench.hs
+++ b/bench/Bench.hs
@@ -31,7 +31,7 @@
                       [ bench "factorial" $ nfIO (factorial 160)
                       , bench "Ext.factorial" $ nf Ext.factorial (160 :: Integer)
                       ]
-                , bgroup "sumDivisors"
+                , bgroup "σ"
                       [ bench "sumDivisors" $ nf sumDivisors 115
                       , bench "Ext.sigma" $ nf (Ext.sigma 1) (115 :: Int)
                       ]
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-14: 17h:49m
+** The starting compilation time is: 2018-1-14: 19h:15m
 **
 */
 
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-14: 18h:51m
+** The starting compilation time is: 2018-1-14: 19h:15m
 **
 */
 
@@ -7192,7 +7192,7 @@
 } /* end of [ATSLIB_056_prelude__gt_g1int_int__6__6] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4440(line=169, offs=4) -- 4988(line=189, offs=10)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4440(line=169, offs=4) -- 4992(line=189, offs=10)
 */
 /*
 local: is_prime_20$0(level=0)
@@ -7209,11 +7209,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4440(line=169, offs=4) -- 4988(line=189, offs=10)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4440(line=169, offs=4) -- 4992(line=189, offs=10)
 */
 ATSINSflab(__patsflab_totient_106):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4473(line=170, offs=3) -- 4988(line=189, offs=10)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4475(line=170, offs=3) -- 4992(line=189, offs=10)
 */
 ATScaseof_beg()
 /*
@@ -7221,7 +7221,7 @@
 */
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4490(line=171, offs=7) -- 4491(line=171, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4492(line=171, offs=7) -- 4493(line=171, offs=8)
 */
 ATSINSlab(__atstmplab33):
 /*
@@ -7229,7 +7229,7 @@
 */
 ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab35) ; } ;
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4491(line=171, offs=8) -- 4491(line=171, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4493(line=171, offs=8) -- 4493(line=171, offs=8)
 */
 ATSINSlab(__atstmplab34):
 /*
@@ -7239,14 +7239,14 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4495(line=171, offs=12) -- 4496(line=171, offs=13)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4497(line=171, offs=12) -- 4498(line=171, offs=13)
 */
 ATSINSmove(tmpret259, ATSPMVi0nt(1)) ;
 ATSbranch_end()
 
 ATSbranch_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4504(line=172, offs=8) -- 4504(line=172, offs=8)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4506(line=172, offs=8) -- 4506(line=172, offs=8)
 */
 ATSINSlab(__atstmplab35):
 /*
@@ -7256,7 +7256,7 @@
 ibranch-mbody:
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4530(line=174, offs=9) -- 4978(line=188, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4532(line=174, offs=9) -- 4982(line=188, offs=12)
 */
 /*
 letpush(beg)
@@ -7266,12 +7266,12 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4956(line=187, offs=11) -- 4966(line=187, offs=21)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4960(line=187, offs=11) -- 4970(line=187, offs=21)
 */
 ATSINSmove(tmpret259, loop_107(ATSPMVi0nt(1), arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4530(line=174, offs=9) -- 4978(line=188, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4532(line=174, offs=9) -- 4982(line=188, offs=12)
 */
 /*
 INSletpop()
@@ -7288,7 +7288,7 @@
 } /* end of [totient_106] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4548(line=175, offs=15) -- 4934(line=185, offs=31)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4550(line=175, offs=15) -- 4938(line=185, offs=31)
 */
 /*
 local: is_prime_20$0(level=0), loop_107$0(level=1)
@@ -7321,126 +7321,126 @@
 */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4548(line=175, offs=15) -- 4934(line=185, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4550(line=175, offs=15) -- 4938(line=185, offs=31)
 */
 ATSINSflab(__patsflab_loop_107):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4659(line=176, offs=16) -- 4665(line=176, offs=22)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4663(line=176, offs=16) -- 4669(line=176, offs=22)
 */
 ATSINSmove(tmp261, ATSLIB_056_prelude__gte_g1int_int__40__3(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4656(line=176, offs=13) -- 4934(line=185, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4660(line=176, offs=13) -- 4938(line=185, offs=31)
 */
 ATSif(
 tmp261
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4688(line=177, offs=18) -- 4698(line=177, offs=28)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4692(line=177, offs=18) -- 4702(line=177, offs=28)
 */
 ATSINSmove(tmp264, is_prime_20(arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4685(line=177, offs=15) -- 4763(line=180, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4689(line=177, offs=15) -- 4767(line=180, offs=18)
 */
 ATSif(
 tmp264
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4721(line=178, offs=17) -- 4726(line=178, offs=22)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4725(line=178, offs=17) -- 4730(line=178, offs=22)
 */
 ATSINSmove(tmpret260, atspre_g1int_sub_int(arg1, ATSPMVi0nt(1))) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4762(line=180, offs=17) -- 4763(line=180, offs=18)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4766(line=180, offs=17) -- 4767(line=180, offs=18)
 */
 ATSINSmove(tmpret260, arg1) ;
 } /* ATSendif */
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4798(line=182, offs=18) -- 4832(line=182, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4802(line=182, offs=18) -- 4836(line=182, offs=52)
 */
 ATSINSmove(tmp270, atspre_g0int_mod_int(arg1, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4798(line=182, offs=18) -- 4832(line=182, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4802(line=182, offs=18) -- 4836(line=182, offs=52)
 */
 ATSINSmove(tmp267, ATSLIB_056_prelude__eq_g0int_int__12__13(tmp270, ATSPMVi0nt(0))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4798(line=182, offs=18) -- 4832(line=182, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4802(line=182, offs=18) -- 4836(line=182, offs=52)
 */
 ATSif(
 tmp267
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4798(line=182, offs=18) -- 4832(line=182, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4802(line=182, offs=18) -- 4836(line=182, offs=52)
 */
 ATSINSmove(tmp266, is_prime_20(arg0)) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4798(line=182, offs=18) -- 4832(line=182, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4802(line=182, offs=18) -- 4836(line=182, offs=52)
 */
 ATSINSmove(tmp266, ATSPMVbool_false()) ;
 } /* ATSendif */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4798(line=182, offs=18) -- 4832(line=182, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4802(line=182, offs=18) -- 4836(line=182, offs=52)
 */
 ATSif(
 tmp266
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4798(line=182, offs=18) -- 4832(line=182, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4802(line=182, offs=18) -- 4836(line=182, offs=52)
 */
 ATSINSmove(tmp265, ATSLIB_056_prelude__neq_g1int_int__44__2(arg0, arg1)) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4798(line=182, offs=18) -- 4832(line=182, offs=52)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4802(line=182, offs=18) -- 4836(line=182, offs=52)
 */
 ATSINSmove(tmp265, ATSPMVbool_false()) ;
 } /* ATSendif */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4795(line=182, offs=15) -- 4934(line=185, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4799(line=182, offs=15) -- 4938(line=185, offs=31)
 */
 ATSif(
 tmp265
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4860(line=183, offs=23) -- 4865(line=183, offs=28)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4864(line=183, offs=23) -- 4869(line=183, offs=28)
 */
 ATSINSmove(tmp275, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4855(line=183, offs=18) -- 4869(line=183, offs=32)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4859(line=183, offs=18) -- 4873(line=183, offs=32)
 */
 ATSINSmove(tmp274, loop_107(tmp275, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4855(line=183, offs=18) -- 4873(line=183, offs=36)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4859(line=183, offs=18) -- 4877(line=183, offs=36)
 */
 ATSINSmove(tmp273, atspre_g0int_div_int(tmp274, arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4878(line=183, offs=41) -- 4883(line=183, offs=46)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4882(line=183, offs=41) -- 4887(line=183, offs=46)
 */
 ATSINSmove(tmp276, atspre_g1int_sub_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4854(line=183, offs=17) -- 4884(line=183, offs=47)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4858(line=183, offs=17) -- 4888(line=183, offs=47)
 */
 ATSINSmove(tmpret260, atspre_g0int_mul_int(tmp273, tmp276)) ;
 
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4925(line=185, offs=22) -- 4930(line=185, offs=27)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4929(line=185, offs=22) -- 4934(line=185, offs=27)
 */
 ATSINSmove(tmp277, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4920(line=185, offs=17) -- 4934(line=185, offs=31)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 4924(line=185, offs=17) -- 4938(line=185, offs=31)
 */
 ATStailcal_beg()
 ATSINSmove_tlcal(apy0, tmp277) ;
@@ -7583,7 +7583,7 @@
 } /* end of [ATSLIB_056_prelude__neq_g1int_int__44__2] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5041(line=192, offs=5) -- 5429(line=206, offs=6)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5045(line=192, offs=5) -- 5433(line=206, offs=6)
 */
 /*
 local: witness_0$0(level=0), totient_106$0(level=0)
@@ -7600,11 +7600,11 @@
 /* tmpvardeclst(end) */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5041(line=192, offs=5) -- 5429(line=206, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5045(line=192, offs=5) -- 5433(line=206, offs=6)
 */
 ATSINSflab(__patsflab_totient_sum_111):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5081(line=193, offs=3) -- 5429(line=206, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5085(line=193, offs=3) -- 5433(line=206, offs=6)
 */
 /*
 letpush(beg)
@@ -7614,12 +7614,12 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5413(line=205, offs=5) -- 5423(line=205, offs=15)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5417(line=205, offs=5) -- 5427(line=205, offs=15)
 */
 ATSINSmove(tmpret278, loop_112(ATSPMVi0nt(1), arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5081(line=193, offs=3) -- 5429(line=206, offs=6)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5085(line=193, offs=3) -- 5433(line=206, offs=6)
 */
 /*
 INSletpop()
@@ -7629,7 +7629,7 @@
 } /* end of [totient_sum_111] */
 
 /*
-/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5093(line=194, offs=9) -- 5403(line=203, offs=40)
+/home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5097(line=194, offs=9) -- 5407(line=203, offs=40)
 */
 /*
 local: witness_0$0(level=0), totient_106$0(level=0), loop_112$0(level=1)
@@ -7659,60 +7659,60 @@
 */
 ATSfunbody_beg()
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5093(line=194, offs=9) -- 5403(line=203, offs=40)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5097(line=194, offs=9) -- 5407(line=203, offs=40)
 */
 ATSINSflab(__patsflab_loop_112):
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5196(line=195, offs=10) -- 5205(line=195, offs=19)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5200(line=195, offs=10) -- 5209(line=195, offs=19)
 */
 ATSINSmove(tmp280, ATSLIB_056_prelude__lt_g1int_int__22__3(arg0, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5193(line=195, offs=7) -- 5403(line=203, offs=40)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5197(line=195, offs=7) -- 5407(line=203, offs=40)
 */
 ATSif(
 tmp280
 ) ATSthen() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5219(line=196, offs=9) -- 5352(line=201, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5223(line=196, offs=9) -- 5356(line=201, offs=12)
 */
 /*
 letpush(beg)
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5237(line=197, offs=15) -- 5238(line=197, offs=16)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5241(line=197, offs=15) -- 5242(line=197, offs=16)
 */
 /*
 ATSINStmpdec(tmpref283) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5246(line=197, offs=24) -- 5251(line=197, offs=29)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5250(line=197, offs=24) -- 5255(line=197, offs=29)
 */
 ATSINSmove(tmp284, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5241(line=197, offs=19) -- 5259(line=197, offs=37)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5245(line=197, offs=19) -- 5263(line=197, offs=37)
 */
 ATSINSmove(tmpref283, loop_112(tmp284, arg1)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5274(line=198, offs=15) -- 5275(line=198, offs=16)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5278(line=198, offs=15) -- 5279(line=198, offs=16)
 */
 /*
 ATSINStmpdec(tmpref285) ;
 */
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5305(line=198, offs=46) -- 5314(line=198, offs=55)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5309(line=198, offs=46) -- 5318(line=198, offs=55)
 */
 ATSINSmove(tmp291, totient_106(arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5297(line=198, offs=38) -- 5316(line=198, offs=57)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5301(line=198, offs=38) -- 5320(line=198, offs=57)
 */
 ATSINSmove(tmp290, witness_0(tmp291)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5278(line=198, offs=19) -- 5317(line=198, offs=58)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5282(line=198, offs=19) -- 5321(line=198, offs=58)
 */
 ATSINSmove(tmpref285, ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_int__114__1(tmpref283, tmp290)) ;
 
@@ -7721,28 +7721,28 @@
 */
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5339(line=200, offs=11) -- 5340(line=200, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5343(line=200, offs=11) -- 5344(line=200, offs=12)
 */
 ATSINSmove(tmpret279, tmpref285) ;
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5219(line=196, offs=9) -- 5352(line=201, offs=12)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5223(line=196, offs=9) -- 5356(line=201, offs=12)
 */
 /*
 INSletpop()
 */
 } ATSelse() {
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5372(line=203, offs=9) -- 5403(line=203, offs=40)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5376(line=203, offs=9) -- 5407(line=203, offs=40)
 */
 ATSINSmove(tmp300, totient_106(arg0)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5372(line=203, offs=9) -- 5403(line=203, offs=40)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5376(line=203, offs=9) -- 5407(line=203, offs=40)
 */
 ATSINSmove(tmp299, witness_0(tmp300)) ;
 
 /*
-emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5372(line=203, offs=9) -- 5403(line=203, offs=40)
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/fast-arithmetic/ats-src/number-theory.dats: 5376(line=203, offs=9) -- 5407(line=203, offs=40)
 */
 ATSINSmove(tmpret279, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__116__1(tmp299)) ;
 
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-14: 18h:19m
+** The starting compilation time is: 2018-1-14: 19h:15m
 **
 */
 
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.3.0.2
+version:             0.3.0.3
 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.
diff --git a/src/Numeric/NumberTheory.hs b/src/Numeric/NumberTheory.hs
--- a/src/Numeric/NumberTheory.hs
+++ b/src/Numeric/NumberTheory.hs
@@ -51,7 +51,7 @@
 littleOmega :: Int -> Int
 littleOmega = conjugate little_omega_ats
 
--- | Number of distinct divisors. Experimental.
+-- | Number of distinct divisors.
 tau :: Int -> Int
 tau = conjugate count_divisors_ats
 
