Flint2: Haskell bindings for the flint library for number theory

[ gpl, library, math ] [ Propose Tags ]
This version is deprecated.

Please see the README on GitHub at https://github.com/monien/Flint2#readme


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.0.5 (info)
Change log ChangeLog.md
Dependencies base (>=4.7 && <5), groups, QuickCheck [details]
License BSD-3-Clause
Copyright Copyright (c) 2022 Hartmut Monien
Author Hartmut Monien
Maintainer hmonien@uni-bonn.de
Category Math
Home page https://github.com/monien/Flint2#readme
Bug tracker https://github.com/monien/Flint2/issues
Source repo head: git clone https://github.com/monien/Flint2
Uploaded by monien at 2023-10-12T16:16:51Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 67 total (10 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user [build log]
All reported builds failed as of 2023-10-12 [all 2 reports]

Readme for Flint2-0.1.0.0

[back to package description]

Flint2

Flint2 provides a thin Haskell wrapper for Flint C-library.

Installation

Clone it with

git clone https://github.com/monien/Flint2.git

then goto to the Flint2 directory and use

stack install
stack haddock

Have a look at the Main.hs in the app directory first and then use As long as Flint2 is not available from Stackage (Hackage) this requires specification of the location of Flint2 in the global stack.yaml file which might be either a local directory or github commit. See the stack documentation for details.

stack install Flint2
stack haddock Flint2

This will install a binary flint_test in ~/.local/bin which is just shows the basic functionality of the current Flint2 wrapper.

stack ghci

for Flint2 in a haskell shell.

Quick Start

A simple program using the thin wrapper would be

import Data.Number.Flint

main = do 
  x <- newFmpz
  y <- newFmpz
  withFmpz x $ \x -> do
    withFmpz y $ \y -> do
      fmpz_set_ui x 7
      fmpz_set_ui y 6
      fmpz_mul x x y
      fmpz_print x  

which will print the numerical value 42.

In the app directory more practical information on how to use the thin wrapper can be found. The above example simplifies to

include Fmpz

main = do
  let x = 7 :: Fmpz 
      y = 6 :: Fmpz
  print $ x*y
  print $ factor (42 :: Fmpz)
  

which prints

42 
[(2,1),(3,1),(7,1)]