lcm 0 _ = 0
lcm x y = abs ((x `quot` (gcd x y)) * y)
+#ifdef OPTIMISE_INTEGER_GCD_LCM
{-# RULES
"gcd/Int->Int->Int" gcd = gcdInt
"gcd/Integer->Integer->Integer" gcd = gcdInteger'
gcdInt :: Int -> Int -> Int
gcdInt 0 0 = error "GHC.Real.gcdInt: gcd 0 0 is undefined"
gcdInt a b = fromIntegral (gcdInteger (fromIntegral a) (fromIntegral b))
+#endif
integralEnumFrom :: (Integral a, Bounded a) => a -> [a]
integralEnumFrom n = map fromInteger [toInteger n .. toInteger (maxBound `asTypeOf` n)]
type: darcs
location: http://darcs.haskell.org/packages/base/
+Flag integer-simple
+ Description: Use integer-simple
+
Library {
if impl(ghc) {
- build-depends: integer-gmp
+ if flag(integer-simple)
+ build-depends: integer-simple
+ else
+ build-depends: integer-gmp
+ ghc-options: -DOPTIMISE_INTEGER_GCD_LCM
build-depends: rts, ghc-prim
exposed-modules:
Foreign.Concurrent,