name: Flint2 version: 0.1.0.5 github: "monien/Flint2" license: GPL-2 author: "Hartmut Monien" maintainer: "hmonien@uni-bonn.de" copyright: "Copyright (c) 2023 Hartmut Monien" category: Math synopsis: "Haskell bindings for the flint library for number theory" extra-source-files: - README.md - ChangeLog.md - package.yaml - stack.yaml - gpl-2.0.txt extra-doc-files: docs/*.png description: This library provides access to the functionality of the FLINT. FLINT is a C library for doing number theory, freely available under the GNU LGPL. At its core, FLINT provides arithmetic in standard rings such as the integers, rationals, algebraic, real, complex and p-adic numbers, finite fields, and number fields. It also provides polynomials (univariate and multivariate), power series, and matrices. FLINT has been used for many large scale research computations (e.g. A Trillion Triangles) and has been cited in hundreds of publications. FLINT's authors themselves have published more than 20 papers describing new algorithms first implemented within or on top of FLINT. dependencies: - base >= 4.7 && < 5 library: source-dirs: src default-extensions: - CApiFFI - ForeignFunctionInterface - FlexibleInstances - TupleSections - RankNTypes - ScopedTypeVariables - GADTs - DataKinds - TypeFamilies - TypeOperators - TypeSynonymInstances - TypeFamilies - KindSignatures - MultiParamTypeClasses - FunctionalDependencies exposed-modules: - Data.Number.Flint - Data.Number.Flint.Flint - Data.Number.Flint.Flint.External - Data.Number.Flint.Flint.Internal - Data.Number.Flint.MPoly - Data.Number.Flint.UFD - Data.Number.Flint.Quotient # Fmpz - Data.Number.Flint.Fmpz - Data.Number.Flint.Fmpz.Instances - Data.Number.Flint.Fmpz.Arith - Data.Number.Flint.Fmpz.Factor - Data.Number.Flint.Fmpz.Mat - Data.Number.Flint.Fmpz.Mat.Instances - Data.Number.Flint.Fmpz.Vec - Data.Number.Flint.Fmpz.Poly - Data.Number.Flint.Fmpz.Poly.Instances - Data.Number.Flint.Fmpz.Poly.Factor - Data.Number.Flint.Fmpz.Poly.Mat - Data.Number.Flint.Fmpz.Poly.Q - Data.Number.Flint.Fmpz.Poly.Q.Instances - Data.Number.Flint.Fmpz.MPoly - Data.Number.Flint.Fmpz.MPoly.Factor - Data.Number.Flint.Fmpz.MPoly.Q - Data.Number.Flint.Fmpz.LLL - Data.Number.Flint.Fmpz.Mod - Data.Number.Flint.Fmpz.Mod.Poly - Data.Number.Flint.Fmpz.Mod.Poly.Factor - Data.Number.Flint.Fmpz.Mod.MPoly - Data.Number.Flint.Fmpz.Mod.MPoly.Factor - Data.Number.Flint.Fmpz.Mod.Mat - Data.Number.Flint.Fmpz.Mod.Vec # Fmpq - Data.Number.Flint.Fmpq - Data.Number.Flint.Fmpq.Instances - Data.Number.Flint.Fmpq.Mat - Data.Number.Flint.Fmpq.Mat.Instances - Data.Number.Flint.Fmpq.Vec - Data.Number.Flint.Fmpq.Poly - Data.Number.Flint.Fmpq.Poly.Instances - Data.Number.Flint.Fmpq.MPoly - Data.Number.Flint.Fmpq.MPoly.Factor # NMod - Data.Number.Flint.NMod.Types - Data.Number.Flint.NMod - Data.Number.Flint.NMod.Poly - Data.Number.Flint.NMod.Poly.Instances - Data.Number.Flint.NMod.Poly.Factor - Data.Number.Flint.NMod.Poly.Mat - Data.Number.Flint.NMod.MPoly - Data.Number.Flint.NMod.MPoly.Factor - Data.Number.Flint.NMod.Mat - Data.Number.Flint.NMod.Vec # Groups - Data.Number.Flint.Groups.Perm - Data.Number.Flint.Groups.Qfb - Data.Number.Flint.Groups.Qfb.Instances - Data.Number.Flint.Groups.Dirichlet - Data.Number.Flint.Groups.DLog - Data.Number.Flint.Groups.Bool.Mat - Data.Number.Flint.Groups.Bool.Mat.Instances # APRCL - Data.Number.Flint.APRCL # FFT - Data.Number.Flint.FFT # - Data.Number.Flint.FFT.Small # QSieve - Data.Number.Flint.QSieve # Fq - Data.Number.Flint.Fq.Types - Data.Number.Flint.Fq - Data.Number.Flint.Fq.Embed - Data.Number.Flint.Fq.Poly - Data.Number.Flint.Fq.Poly.Factor - Data.Number.Flint.Fq.Mat - Data.Number.Flint.Fq.Vec # Fq NMod - Data.Number.Flint.Fq.NMod.Types - Data.Number.Flint.Fq.NMod - Data.Number.Flint.Fq.NMod.Embed - Data.Number.Flint.Fq.NMod.Poly - Data.Number.Flint.Fq.NMod.Poly.Factor - Data.Number.Flint.Fq.NMod.MPoly - Data.Number.Flint.Fq.NMod.MPoly.Factor - Data.Number.Flint.Fq.NMod.Mat - Data.Number.Flint.Fq.NMod.Vec # Fq Zech - Data.Number.Flint.Fq.Zech.Types - Data.Number.Flint.Fq.Zech - Data.Number.Flint.Fq.Zech.Embed - Data.Number.Flint.Fq.Zech.Poly - Data.Number.Flint.Fq.Zech.Poly.Factor - Data.Number.Flint.Fq.Zech.Vec - Data.Number.Flint.Fq.Zech.Mat # Padic - Data.Number.Flint.Padic - Data.Number.Flint.Padic.Poly - Data.Number.Flint.Padic.Mat - Data.Number.Flint.Qadic # Support - Data.Number.Flint.Support.ULong.Extras - Data.Number.Flint.Support.D.Extras - Data.Number.Flint.Support.D.Interval - Data.Number.Flint.Support.D.Mat - Data.Number.Flint.Support.D.Mat.Instances - Data.Number.Flint.Support.D.Vec - Data.Number.Flint.Support.Mpf.Mat - Data.Number.Flint.Support.Mpf.Vec - Data.Number.Flint.Support.Mpfr.Mat - Data.Number.Flint.Support.Mpfr.Vec - Data.Number.Flint.ThreadPool # Arb - Data.Number.Flint.Arb.Types - Data.Number.Flint.Arb - Data.Number.Flint.Arb.Instances - Data.Number.Flint.Arb.Mag - Data.Number.Flint.Arb.Mag.Instances - Data.Number.Flint.Arb.Arf - Data.Number.Flint.Arb.Poly - Data.Number.Flint.Arb.Poly.Instances - Data.Number.Flint.Arb.Fmpz.Poly - Data.Number.Flint.Arb.Mat - Data.Number.Flint.Arb.Mat.Instances - Data.Number.Flint.Arb.Hypgeom - Data.Number.Flint.Arb.RealField - Data.Number.Flint.Arb.Calc - Data.Number.Flint.Arb.FpWrap # Acb - Data.Number.Flint.Acb.Types - Data.Number.Flint.Acb - Data.Number.Flint.Acb.Instances - Data.Number.Flint.Acb.Acf - Data.Number.Flint.Acb.Poly - Data.Number.Flint.Acb.Poly.Instances - Data.Number.Flint.Acb.Mat - Data.Number.Flint.Acb.Mat.Instances - Data.Number.Flint.Acb.Hypgeom - Data.Number.Flint.Acb.Elliptic - Data.Number.Flint.Acb.Modular - Data.Number.Flint.Acb.Modular.Instances - Data.Number.Flint.Acb.Dirichlet - Data.Number.Flint.Acb.DFT - Data.Number.Flint.Acb.ComplexField - Data.Number.Flint.Acb.Calc # Exact real and complex numbers - Data.Number.Flint.Calcium - Data.Number.Flint.Calcium.Ca - Data.Number.Flint.Calcium.Ca.Types - Data.Number.Flint.Calcium.Ca.Poly - Data.Number.Flint.Calcium.Ca.Vec - Data.Number.Flint.Calcium.Ca.Mat - Data.Number.Flint.Calcium.Ca.Field - Data.Number.Flint.Calcium.Ca.Ext - Data.Number.Flint.Calcium.Fexpr - Data.Number.Flint.Calcium.Fexpr.Instances - Data.Number.Flint.Calcium.Fexpr.Builtin # Other - Data.Number.Flint.Bernoulli - Data.Number.Flint.Partitions - Data.Number.Flint.Hypgeom # NF - Data.Number.Flint.NF - Data.Number.Flint.NF.Elem - Data.Number.Flint.NF.Fmpzi - Data.Number.Flint.NF.Fmpzi.Instances - Data.Number.Flint.NF.QQbar - Data.Number.Flint.NF.QQbar.Instances other-modules: - Data.Number.Flint.Flint.FFI - Data.Number.Flint.Flint.External.GMP.FFI - Data.Number.Flint.Flint.External.Mpfr.FFI - Data.Number.Flint.Flint.Internal.FFI - Data.Number.Flint.MPoly.FFI # Fmpz - Data.Number.Flint.Fmpz.FFI - Data.Number.Flint.Fmpz.Arith.FFI - Data.Number.Flint.Fmpz.Factor.FFI - Data.Number.Flint.Fmpz.Mat.FFI - Data.Number.Flint.Fmpz.Vec.FFI - Data.Number.Flint.Fmpz.Poly.FFI - Data.Number.Flint.Fmpz.Poly.Factor.FFI - Data.Number.Flint.Fmpz.Poly.Mat.FFI - Data.Number.Flint.Fmpz.Poly.Q.FFI - Data.Number.Flint.Fmpz.MPoly.FFI - Data.Number.Flint.Fmpz.MPoly.Factor.FFI - Data.Number.Flint.Fmpz.MPoly.Q.FFI - Data.Number.Flint.Fmpz.LLL.FFI - Data.Number.Flint.Fmpz.Mod.FFI - Data.Number.Flint.Fmpz.Mod.Poly.FFI - Data.Number.Flint.Fmpz.Mod.Poly.Factor.FFI - Data.Number.Flint.Fmpz.Mod.MPoly.FFI - Data.Number.Flint.Fmpz.Mod.MPoly.Factor.FFI - Data.Number.Flint.Fmpz.Mod.Mat.FFI - Data.Number.Flint.Fmpz.Mod.Vec.FFI # Fmpq - Data.Number.Flint.Fmpq.FFI - Data.Number.Flint.Fmpq.Mat.FFI - Data.Number.Flint.Fmpq.Vec.FFI - Data.Number.Flint.Fmpq.Poly.FFI - Data.Number.Flint.Fmpq.MPoly.FFI - Data.Number.Flint.Fmpq.MPoly.Factor.FFI # NMod - Data.Number.Flint.NMod.Types.FFI - Data.Number.Flint.NMod.FFI - Data.Number.Flint.NMod.Poly.FFI - Data.Number.Flint.NMod.Poly.Factor.FFI - Data.Number.Flint.NMod.Poly.Mat.FFI - Data.Number.Flint.NMod.MPoly.FFI - Data.Number.Flint.NMod.MPoly.Factor.FFI - Data.Number.Flint.NMod.Mat.FFI - Data.Number.Flint.NMod.Vec.FFI # Groups - Data.Number.Flint.Groups.Perm.FFI - Data.Number.Flint.Groups.Qfb.FFI - Data.Number.Flint.Groups.Dirichlet.FFI - Data.Number.Flint.Groups.DLog.FFI - Data.Number.Flint.Groups.Bool.Mat.FFI # APRCL - Data.Number.Flint.APRCL.FFI # FFT - Data.Number.Flint.FFT.FFI # - Data.Number.Flint.FFT.Small.FFI # Qs - Data.Number.Flint.QSieve.FFI # Fq - Data.Number.Flint.Fq.FFI - Data.Number.Flint.Fq.Types.FFI - Data.Number.Flint.Fq.Embed.FFI - Data.Number.Flint.Fq.Poly.FFI - Data.Number.Flint.Fq.Poly.Factor.FFI - Data.Number.Flint.Fq.Mat.FFI - Data.Number.Flint.Fq.Vec.FFI # Fq NMod - Data.Number.Flint.Fq.NMod.FFI - Data.Number.Flint.Fq.NMod.Embed.FFI - Data.Number.Flint.Fq.NMod.Types.FFI - Data.Number.Flint.Fq.NMod.Poly.FFI - Data.Number.Flint.Fq.NMod.Poly.Factor.FFI - Data.Number.Flint.Fq.NMod.MPoly.FFI - Data.Number.Flint.Fq.NMod.MPoly.Factor.FFI - Data.Number.Flint.Fq.NMod.Mat.FFI - Data.Number.Flint.Fq.NMod.Vec.FFI # Fq Zech - Data.Number.Flint.Fq.Zech.FFI - Data.Number.Flint.Fq.Zech.Embed.FFI - Data.Number.Flint.Fq.Zech.Types.FFI - Data.Number.Flint.Fq.Zech.Poly.FFI - Data.Number.Flint.Fq.Zech.Poly.Factor.FFI - Data.Number.Flint.Fq.Zech.Vec.FFI - Data.Number.Flint.Fq.Zech.Mat.FFI # Padic - Data.Number.Flint.Padic.FFI - Data.Number.Flint.Padic.Poly.FFI - Data.Number.Flint.Padic.Mat.FFI - Data.Number.Flint.Qadic.FFI # Floating-point support code - Data.Number.Flint.Support.ULong.Extras.FFI - Data.Number.Flint.Support.D.Extras.FFI - Data.Number.Flint.Support.D.Interval.FFI - Data.Number.Flint.Support.D.Mat.FFI - Data.Number.Flint.Support.D.Vec.FFI - Data.Number.Flint.Support.Mpf.Mat.FFI - Data.Number.Flint.Support.Mpf.Vec.FFI - Data.Number.Flint.Support.Mpfr.Mat.FFI - Data.Number.Flint.Support.Mpfr.Vec.FFI # ThreadPool - Data.Number.Flint.ThreadPool.FFI # Arb - Data.Number.Flint.Arb.Types.FFI - Data.Number.Flint.Arb.FFI - Data.Number.Flint.Arb.Mag.FFI - Data.Number.Flint.Arb.Arf.FFI - Data.Number.Flint.Arb.Poly.FFI - Data.Number.Flint.Arb.Fmpz.Poly.FFI - Data.Number.Flint.Arb.Mat.FFI - Data.Number.Flint.Arb.Hypgeom.FFI - Data.Number.Flint.Arb.Calc.FFI - Data.Number.Flint.Arb.FpWrap.FFI # Acb - Data.Number.Flint.Acb.Types.FFI - Data.Number.Flint.Acb.FFI - Data.Number.Flint.Acb.Acf.FFI - Data.Number.Flint.Acb.Poly.FFI - Data.Number.Flint.Acb.Mat.FFI - Data.Number.Flint.Acb.Hypgeom.FFI - Data.Number.Flint.Acb.Elliptic.FFI - Data.Number.Flint.Acb.Modular.FFI - Data.Number.Flint.Acb.Dirichlet.FFI - Data.Number.Flint.Acb.DFT.FFI - Data.Number.Flint.Acb.Calc.FFI # Calcium - Data.Number.Flint.Calcium.FFI - Data.Number.Flint.Calcium.Ca.FFI - Data.Number.Flint.Calcium.Ca.Types.FFI - Data.Number.Flint.Calcium.Ca.Poly.FFI - Data.Number.Flint.Calcium.Ca.Vec.FFI - Data.Number.Flint.Calcium.Ca.Mat.FFI - Data.Number.Flint.Calcium.Ca.Field.FFI - Data.Number.Flint.Calcium.Ca.Ext.FFI - Data.Number.Flint.Calcium.Fexpr.FFI # Other - Data.Number.Flint.Bernoulli.FFI - Data.Number.Flint.Partitions.FFI - Data.Number.Flint.Hypgeom.FFI # NF - Data.Number.Flint.NF.FFI - Data.Number.Flint.NF.Elem.FFI - Data.Number.Flint.NF.Fmpzi.FFI - Data.Number.Flint.NF.QQbar.FFI include-dirs: csrc install-includes: - acb.h - acb_mat.h - acb_modular.h - acb_poly.h - aprcl.h - arb.h - arb_calc.h - arb_fpwrap.h - arb_mat.h - arb_poly.h - arf.h - bool_mat.h - ca_ext.h - ca_mat.h - ca_poly.h - d_mat.h - dirichlet.h - double_interval.h - fmpq.h - fmpq_mat.h - fmpq_poly.h - fmpq_vec.h - fmpz.h - fmpz_factor.h - fmpz_mat.h - fmpz_mod_poly_factor.h - fmpz_mpoly_factor.h - fmpz_mpoly_q.h - fmpz_poly_mat.h - fmpz_vec.h - fmpzi.h - fq.h - fq_mat.h - fq_nmod.h - fq_nmod_mat.h - fq_zech.h - fq_zech_mat.h - mag.h - mpfr_mat.h - nmod_poly_factor.h - nmod_poly_mat.h - padic_mat.h - padic_poly.h - perm.h - psl2z.h - qadic.h - qfb.h - qqbar.h c-sources: # Fmpz - csrc/fmpz/init.c - csrc/fmpz/clear.c - csrc/fmpz_factor/init.c - csrc/fmpz_factor/clear.c - csrc/fmpz_factor/fprint.c - csrc/fmpz_poly_mat/fprint.c - csrc/fmpz_poly_mat/get_str.c - csrc/fmpz_factor/get_str.c - csrc/fmpz_mpoly_factor/io.c - csrc/fmpz_mpoly_q/fprint.c - csrc/fmpz_mpoly_q/get_str_pretty.c - csrc/fmpz_vec/get_str.c - csrc/fmpz_mat/get_str.c - csrc/fmpz_mat/get_str_pretty.c - csrc/fmpz_mod_poly_factor/fprint.c - csrc/fmpz_mod_poly_factor/fprint_pretty.c - csrc/fmpz_mod_poly_factor/get_str.c - csrc/fmpz_mod_poly_factor/get_str_pretty.c # Fmpq - csrc/fmpq/mediant.c - csrc/fmpq/get_fmpz_frac.c - csrc/fmpq/cfrac_st.c - csrc/fmpq_mat/get_str.c - csrc/fmpq_mat/fprint.c - csrc/fmpq_vec/get_str.c - csrc/fmpq_poly/io_as_series.c - csrc/fmpq_poly/monien.c # NMod - csrc/nmod_poly_factor/get_str.c - csrc/nmod_poly_factor/get_str_pretty.c - csrc/nmod_poly_factor/fprint.c - csrc/nmod_poly_factor/fprint_pretty.c - csrc/nmod_poly_mat/fprint.c - csrc/nmod_poly_mat/get_str.c # APRCL - csrc/aprcl/fprint.c - csrc/aprcl/get_str.c # Groups - csrc/bool_mat/get_str.c - csrc/dirichlet/io.c - csrc/qfb/get_str.c - csrc/qfb/fprint.c - csrc/qqbar/fprint.c - csrc/qqbar/fprintn.c - csrc/qqbar/get_str.c - csrc/qqbar/get_strn.c - csrc/dlog/inlines.c # Fmpzi - csrc/fmpzi/fprint.c - csrc/fmpzi/get_str.c # Fq - csrc/fq/ctx_get_str.c - csrc/fq_mat/get_str.c - csrc/fq_mat/get_str_pretty.c # FqNMod - csrc/fq_nmod/ctx_get_str.c - csrc/fq_nmod_mat/get_str.c - csrc/fq_nmod_mat/get_str_pretty.c # FqZech - csrc/fq_zech/ctx_get_str.c - csrc/fq_zech_mat/get_str.c - csrc/fq_zech_mat/get_str_pretty.c # Padic - csrc/padic_poly/get_str.c - csrc/padic_poly/get_str_pretty.c - csrc/padic_mat/get_str.c - csrc/padic_mat/get_str_pretty.c - csrc/qadic/get_str_pretty.c # Support - csrc/double_interval/fprint.c - csrc/double_interval/get_str.c - csrc/d_mat/entry.c - csrc/d_mat/io.c # arb - csrc/arb/midref.c - csrc/arb/radref.c - csrc/arf/inlines.c - csrc/mag/get_str.c - csrc/arb/get_strd.c - csrc/arb/get_strn.c - csrc/arb/get_str_.c - csrc/arb_mat/get_strd.c - csrc/arb_mat/get_strn.c - csrc/arb_mat/fprintn.c - csrc/arb_mat/entry.c - csrc/arb_poly/get_strd.c - csrc/arb_calc/get_strd.c - csrc/arb_calc/inlines.c - csrc/arb_fpwrap/fpwrap.c # acb - csrc/acb/get_str.c - csrc/acb/get_strd.c - csrc/acb/get_strn.c - csrc/acb_poly/get_strd.c - csrc/acb_mat/get_strd.c - csrc/acb_mat/get_strn.c - csrc/acb_mat/fprintn.c - csrc/acb_mat/entry.c - csrc/acb_modular/inlines.c - csrc/acb_modular/get_str.c - csrc/mpfr_mat/swap_entrywise.c # calcium - csrc/ca_poly/io.c - csrc/ca_mat/io.c - csrc/ca_ext/io.c # word problem - csrc/psl2z/word_problem.c # perm - csrc/perm/order.c - csrc/perm/print_pretty.c - csrc/perm/power.c - csrc/perm/mat.c build-tools: hsc2hs extra-libraries: flint pkgconfig-depends: flint >= 2.9, gmp dependencies: - QuickCheck >= 2.14.3 && < 2.15 - groups >= 0.5.3 && < 0.6 - containers >= 0.6.5 && < 0.7 tests: Flint2-test: main: Spec.hs source-dirs: test ghc-options: - -threaded - -rtsopts - -with-rtsopts=-N dependencies: - Flint2