packages feed

Flint2-0.1.0.2: package.yaml

name:                Flint2
version:             0.1.0.2
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:
    A Haskell Wrapper for Flint
    
    This library provides access to the functionality of the FLINT.

    So what is it?
    
    FLINT is a C library for doing number theory, freely
    available under the GNU LGPL at
    [https://flintlib.org](https://flintlib.org)

    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.

    At the research frontier
      
    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
    - 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