{-# LANGUAGE CPP #-} {-| Module : Numeric.Combinatorics Copyright : Copyright (c) 2017 Vanessa McHale This module provides a fast primality check. -} module Numeric.Integer ( isPrime ) where import Foreign.C import Numeric.Common #if __GLASGOW_HASKELL__ >= 820 foreign import ccall unsafe is_prime_ats :: CInt -> CBool #else foreign import ccall unsafe is_prime_ats :: CInt -> CUChar #endif -- | O(√n) isPrime :: Int -> Bool isPrime = asTest is_prime_ats