finite-field 0.7.0 → 0.8.0
raw patch · 8 files changed
+80/−73 lines, 8 filesdep −algebraPVP ok
version bump matches the API change (PVP)
Dependencies removed: algebra
API changes (from Hackage documentation)
- Data.FiniteField.PrimeField: instance Nat p => Abelian (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Additive (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Characteristic (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Commutative (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Division (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Field (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Group (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => LeftModule Integer (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => LeftModule Natural (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Monoidal (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Multiplicative (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Rig (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => RightModule Integer (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => RightModule Natural (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Ring (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Semiring (PrimeField p)
- Data.FiniteField.PrimeField: instance Nat p => Unital (PrimeField p)
Files
- .travis.yml +55/−1
- CHANGELOG.markdown +17/−0
- README.md +2/−0
- finite-field.cabal +3/−21
- src/Data/FiniteField.hs +1/−0
- src/Data/FiniteField/Base.hs +1/−3
- src/Data/FiniteField/PrimeField.hs +0/−48
- test/TestPrimeField.hs +1/−0
.travis.yml view
@@ -1,1 +1,55 @@-language: haskell+# NB: don't set `language: haskell` here++# The following enables several GHC versions to be tested; often it's enough to test only against the last release in a major GHC version. Feel free to omit lines listings versions you don't need/want testing for.+env:+# - GHCVER=6.12.3+# - GHCVER=7.0.1+# - GHCVER=7.0.2+# - GHCVER=7.0.3+# - GHCVER=7.0.4+# - GHCVER=7.2.1+# - GHCVER=7.2.2+# - GHCVER=7.4.1+# - GHCVER=7.4.2+# - GHCVER=7.6.1+# - GHCVER=7.6.2+ - GHCVER=7.6.3+# - GHCVER=7.8.1 # see note about Alex/Happy+ - GHCVER=7.8.2 # see note about Alex/Happy+# - GHCVER=head # see section about GHC HEAD snapshots++# Note: the distinction between `before_install` and `install` is not important.+before_install:+ - travis_retry sudo add-apt-repository -y ppa:hvr/ghc+ - travis_retry sudo apt-get update+ - travis_retry sudo apt-get install cabal-install-1.18 ghc-$GHCVER # see note about happy/alex+ - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/1.18/bin:$PATH+ - |+ if [ $GHCVER = "head" ] || [ ${GHCVER%.*} = "7.8" ]; then+ travis_retry sudo apt-get install happy-1.19.3 alex-3.1.3+ export PATH=/opt/alex/3.1.3/bin:/opt/happy/1.19.3/bin:$PATH+ else+ travis_retry sudo apt-get install happy alex+ fi++install:+ - cabal update+ - cabal install --only-dependencies --enable-tests -v2 # -v2 provides useful information for debugging++# Here starts the actual work to be performed for the package under test; any command which exits with a non-zero exit code causes the build to fail.+script:+ - cabal configure --enable-tests -v2 # -v2 provides useful information for debugging+ - cabal build # this builds all libraries and executables (including tests/benchmarks)+ - cabal test+ - cabal check+ - cabal sdist # tests that a source-distribution can be generated++# The following scriptlet checks that the resulting source distribution can be built & installed+ - export SRC_TGZ=$(cabal-1.18 info . | awk '{print $2 ".tar.gz";exit}') ;+ cd dist/;+ if [ -f "$SRC_TGZ" ]; then+ cabal install "$SRC_TGZ";+ else+ echo "expected '$SRC_TGZ' not found";+ exit 1;+ fi
+ CHANGELOG.markdown view
@@ -0,0 +1,17 @@+0.8.0+-----+* remove dependency on `algebra` package, since it is outdated and not compatible with recent version of other packages++0.7.0+-----+* use extended GCD to compute reciprocals+* conform with the addition of SomeNat type to type-level-numbers-0.1.1.0.++0.6.0+-----+* add Hashable instance+* add allValues to FiniteField class+ .+0.5.0+-----+* introduce FiniteField class
README.md view
@@ -1,2 +1,4 @@ finite-field ============++[](http://travis-ci.org/msakai/finite-field)
finite-field.cabal view
@@ -1,5 +1,5 @@ Name: finite-field-Version: 0.7.0+Version: 0.8.0 License: BSD3 License-File: COPYING Author: Masahiro Sakai (masahiro.sakai@gmail.com)@@ -10,29 +10,11 @@ Description: This is an implementation of finite fields. Currently only prime fields are supported.- .- Changes in 0.7.0- .- * use extended GCD to compute reciprocals- .- * conform with the addition of SomeNat type to type-level-numbers-0.1.1.0.- .- Changes in 0.6.0- .- * add Hashable instance- .- Changes in 0.6.0- .- * add allValues to FiniteField class- .- Changes in 0.5.0- .- * introduce FiniteField class- Bug-Reports: https://github.com/msakai/finite-field/issues Extra-Source-Files: README.md COPYING+ CHANGELOG.markdown .travis.yml .gitignore Build-Type: Simple@@ -44,7 +26,7 @@ Library Hs-source-dirs: src Build-Depends:- base >=4 && <5, template-haskell, deepseq, hashable, type-level-numbers >=0.1.1.0 && <0.2.0.0, algebra >=3.1+ base >=4 && <5, template-haskell, deepseq, hashable, type-level-numbers >=0.1.1.0 && <0.2.0.0 Default-Language: Haskell2010 Other-Extensions: DeriveDataTypeable
src/Data/FiniteField.hs view
@@ -1,3 +1,4 @@+{-# OPTIONS_GHC -Wall #-} ----------------------------------------------------------------------------- -- | -- module : Data.FiniteField
src/Data/FiniteField/Base.hs view
@@ -1,3 +1,4 @@+{-# OPTIONS_GHC -Wall #-} ----------------------------------------------------------------------------- -- | -- module : Data.FiniteField.Base@@ -12,9 +13,6 @@ module Data.FiniteField.Base ( FiniteField (..) ) where--import Data.Ratio-import qualified Numeric.Algebra as Alg -- | Type class for finite fields class Fractional k => FiniteField k where
src/Data/FiniteField/PrimeField.hs view
@@ -31,7 +31,6 @@ import Data.Ratio (denominator, numerator) import Data.Typeable import qualified Language.Haskell.TH as TH-import qualified Numeric.Algebra as Alg import qualified TypeLevel.Number.Nat as TL import Data.FiniteField.Base @@ -114,53 +113,6 @@ f (g,u,v) | g < 0 = (-g, -u, -v) | otherwise = (g,u,v)---- -----------------------------------------------------------------------------instance TL.Nat p => Alg.Multiplicative (PrimeField p) where- (*) = (*)--instance TL.Nat p => Alg.Commutative (PrimeField p)--instance TL.Nat p => Alg.Unital (PrimeField p) where- one = 1--instance TL.Nat p => Alg.Division (PrimeField p) where- recip = recip--instance TL.Nat p => Alg.Additive (PrimeField p) where- (+) = (+)--instance TL.Nat p => Alg.Abelian (PrimeField p)--instance TL.Nat p => Alg.Semiring (PrimeField p)--instance TL.Nat p => Alg.LeftModule Alg.Natural (PrimeField p) where- n .* a = fromIntegral n * a--instance TL.Nat p => Alg.RightModule Alg.Natural (PrimeField p) where- a *. n = a * fromIntegral n--instance TL.Nat p => Alg.Monoidal (PrimeField p) where- zero = 0--instance TL.Nat p => Alg.LeftModule Integer (PrimeField p) where- n .* a = fromIntegral n * a--instance TL.Nat p => Alg.RightModule Integer (PrimeField p) where- a *. n = a * fromIntegral n--instance TL.Nat p => Alg.Group (PrimeField p) where- negate = negate--instance TL.Nat p => Alg.Rig (PrimeField p)--instance TL.Nat p => Alg.Ring (PrimeField p)--instance TL.Nat p => Alg.Characteristic (PrimeField p) where- char _ = TL.toInt (undefined :: p)--instance TL.Nat p => Alg.Field (PrimeField p) -- ---------------------------------------------------------------------------
test/TestPrimeField.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE TemplateHaskell, ScopedTypeVariables #-}+{-# OPTIONS_GHC -fcontext-stack=32 #-} import Test.HUnit hiding (Test) import Test.QuickCheck