hgmp: Haskell interface to GMP

[ bsd3, library, numeric ] [ Propose Tags ]

Currently, types and instances, and marshalling between Integer and Rational and the corresponding GMP types. That is, enough to allow FFI to GMP code (whether in GMP itself or in third-party code that uses GMP).

Supports only GHC with integer-gmp, this might change if there's any demand.

[Skip to Readme]
Versions [faq],, 0.1.1
Dependencies base (>=4.8 && <4.10), ghc-prim (>=0.4 && <0.6), integer-gmp (==1.0.*) [details]
License BSD-3-Clause
Copyright 2016 Claude Heiland-Allen
Author Claude Heiland-Allen
Maintainer claude@mathr.co.uk
Category Numeric
Home page https://code.mathr.co.uk/hgmp
Source repo head: git clone https://code.mathr.co.uk/hgmp.git
this: git clone https://code.mathr.co.uk/hgmp.git(tag v0.1.0.0)
Uploaded by ClaudeHeilandAllen at Mon Aug 1 19:37:19 UTC 2016
Distributions LTSHaskell:0.1.1, NixOS:0.1.1
Downloads 1110 total (71 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2016-08-01 [all 1 reports]




Maintainer's Corner

For package maintainers and hackage trustees

Readme for hgmp-

[back to package description]


Haskell interface to GMP. Contains type definitions and marshalling functions, to be able to write FFI bindings using Haskell's Integer and Rational types. Function bindings may come in a future version.

A simple example illustrating binding to GMP's next probable-prime function:

{-# LANGUAGE ForeignFunctionInterface #-}

import Foreign.Ptr (Ptr(..))
import Numeric.GMP.Types (MPZ)
import Numeric.GMP.Utils (withInInteger, withOutInteger_)
import System.IO.Unsafe (unsafePerformIO)

foreign import ccall safe "__gmpz_nextprime"
  mpz_nextprime :: Ptr MPZ -> Ptr MPZ -> IO ()

nextPrime :: Integer -> Integer
nextPrime n =
  unsafePerformIO $
    withOutInteger_ $ \rop ->
      withInInteger n $ \op ->
        mpz_nextprime rop op