on master help sign in
Merge pull request #2155 from identicalsnowflake/optimization
4f4c993Niklas Larsson
idris.cabal+3
@@ -349,6 +349,9 @@ Extra-source-files:
349 test/bignum001/run
349 test/bignum001/run
350 test/bignum001/*.idr
350 test/bignum001/*.idr
351 test/bignum001/expected
351 test/bignum001/expected
352+ test/bignum002/run
353+ test/bignum002/*.idr
354+ test/bignum002/expected
352
355
353 test/delab001/*.idr
356 test/delab001/*.idr
354 test/delab001/run
357 test/delab001/run
src/Idris/DataOpts.hs+6
@@ -63,6 +63,12 @@ instance Optimisable (TT Name) where
63 applyOpts (P _ (NS (UN fn) mod) _)
63 applyOpts (P _ (NS (UN fn) mod) _)
64 | fn == txt "mult" && mod == prel
64 | fn == txt "mult" && mod == prel
65 = return (P Ref (sUN "prim__mulBigInt") Erased)
65 = return (P Ref (sUN "prim__mulBigInt") Erased)
66+ applyOpts (P _ (NS (UN fn) mod) _)
67+ | fn == txt "divNat" && mod == prel
68+ = return (P Ref (sUN "prim__sdivBigInt") Erased)
69+ applyOpts (P _ (NS (UN fn) mod) _)
70+ | fn == txt "modNat" && mod == prel
71+ = return (P Ref (sUN "prim__sremBigInt") Erased)
66 applyOpts (App _ (P _ (NS (UN fn) mod) _) x)
72 applyOpts (App _ (P _ (NS (UN fn) mod) _) x)
67 | fn == txt "fromIntegerNat" && mod == prel
73 | fn == txt "fromIntegerNat" && mod == prel
68 = applyOpts x
74 = applyOpts x
test/bignum002/bignum002.idrnew file+5
@@ -0,0 +1,5 @@
1+module Main
2+
3+main : IO ()
4+main = do
5+ putStrLn $ show $ divNat 1809022195644390369852458 91238741987
test/bignum002/expectednew file+1
@@ -0,0 +1 @@
1+19827346982734
test/bignum002/runnew file+4
@@ -0,0 +1,4 @@
1+#!/usr/bin/env bash
2+idris $@ bignum002.idr -o bignum002
3+./bignum002
4+rm -f bignum002 *.ibc