{-| Module : Numeric.Combinatorics Copyright : Copyright (c) 2018 Vanessa McHale This module provides a fast primality check. -} module Numeric.Integer ( isPrime , fibonacci ) where import Data.GMP import Foreign.C import Foreign.Ptr import Numeric.Common foreign import ccall is_prime_ats :: CInt -> CBool foreign import ccall unsafe fib_ats :: CInt -> Ptr GMPInt -- | Indexed starting at @0@. fibonacci :: Int -> IO Integer fibonacci = conjugateGMP fib_ats -- | O(√n) isPrime :: Int -> Bool isPrime = asTest is_prime_ats