Changelog History
Page 1
-
v0.12.0.0 Changes
✂ Removed
- ✂ Remove modules and functions, deprecated in the previous release.
-
v0.11.0.1 Changes
🔄 Changed
- Switch to
smallcheck-1.2.0
.
- Switch to
-
v0.11.0.0 Changes
➕ Added
Brand new machinery to deal with Dirichlet characters (#180).
Generate preimages of the Jordan and the sum-of-powers-of-divisors functions (#148).
More flexible interface for Pascal triangle: in addition to
binomial
we now provide alsobinomialRotated
,binomialLine
andbinomialDiagonal
(#151). There are alsofactoriseFactorial
andfactoriseBinomial
(#152).➕ Add
Semiring
instance ofSomeMod
(#174).Generate divisors in range (#183).
🔄 Changed
👍 Speed up
partition
, using better container for memoization (#176).👍 Speed up
integerRoot
, using better starting approximation (#177).
🗄 Deprecated
🗄 Deprecate
Math.NumberTheory.Euclidean
, useData.Euclidean
instead.🗄 Deprecate
chineseRemainder
,chineseRemainder2
,chineseCoprime
, usechinese
instead. DeprecatechineseCoprimeSomeMod
, usechineseSomeMod
.🗄 Deprecate
Math.NumberTheory.Powers
exceptMath.NumberTheory.Powers.Modular
. UseMath.NumberTheory.Roots
instead.🗄 Deprecate
Math.NumberTheory.Moduli.Jacobi
, useMath.NumberTheory.Moduli.Sqrt
instead.🗄 Deprecate
Math.NumberTheory.Moduli.{DiscreteLogarithm,PrimitiveRoot}
, useMath.NumberTheory.Moduli.Multiplicative
instead.
✂ Removed
- ✂ Remove modules and functions, deprecated in the previous release.
🛠 Fixed
- 🛠 Fix subtraction of
SomeMod
(#174).
-
v0.10.0.0 Changes
➕ Added
- The machinery of cyclic groups, primitive roots and discrete logarithms has been completely overhauled and rewritten using singleton types (#169).
There is also a new singleton type, linking a type-level modulo with a term-level factorisation. It allows both to have a nicely-typed API of
Mod m
and avoid repeating factorisations (#169).Refer to a brand new module
Math.NumberTheory.Moduli.Singleton
for details.➕ Add a new function
factorBack
.➕ Add
Ord SomeMod
instance (#165).➕ Add
Semiring
andRing
instances for Eisenstein and Gaussian integers.
🔄 Changed
Embrace the new
Semiring -> GcdDomain -> Euclidean
hierarchy of classes, refiningNum
andIntegral
constraints.Reshuffle exports from
Math.NumberTheory.Zeta
, do not advertise its submodules as available to import.➕ Add a proxy argument storing vector's flavor to
Math.NumberTheory.MoebiusInversion.{generalInversion,totientSum}
.solveQuadratic
andsqrtsMod
require an additional argument: a singleton linking a type-level modulo with a term-level factorisation (#169).Generalize
sieveBlock
to handle any flavor ofVector
(#164).
🗄 Deprecated
🗄 Deprecate
Math.NumberTheory.Primes.Factorisation
, useMath.NumberTheory.Primes.factorise
instead. DeprecateMath.NumberTheory.Primes.Sieve
, useEnum
instance instead.🗄 Deprecate
Math.NumberTheory.Primes.Factorisation.Certified
andMath.NumberTheory.Primes.Testing.Certificates
.🗄 Deprecate
Math.NumberTheory.MoebiusInversion.Int
.🗄 Deprecate
Math.NumberTheory.SmoothNumbers.{fromSet,fromSmoothUpperBound}
. UseMath.NumberTheory.SmoothNumbers.fromList
instead.🗄 Deprecate
Math.NumberTheory.SmoothNumbers.smoothOverInRange
in favor ofsmoothOver
andMath.NumberTheory.SmoothNumbers.smoothOverInRange
in favor ofisSmooth
.
✂ Removed
📦 Move
Euclidean
type class tosemirings
package (#168).✂ Remove deprecated earlier
Math.NumberTheory.Recurrencies.*
andMath.NumberTheory.UniqueFactorisation
modules. UseMath.NumberTheory.Recurrences.*
andMath.NumberTheory.Primes
instead.✂ Remove deprecated earlier an old interface of
Math.NumberTheory.Moduli.Sqrt
.
-
v0.9.0.0 Changes
➕ Added
- Introduce
Prime
newtype. This newtype is now used extensively in public API:
primes :: Integral a => [Prime a] primeList :: Integral a => PrimeSieve -> [Prime a] sieveFrom :: Integer -> [Prime Integer] nthPrime :: Integer -> Prime Integer
- 🆕 New functions
nextPrime
andprecPrime
. Implement an instance ofEnum
for primes (#153):
> [nextPrime 101 .. precPrime 130] [Prime 101,Prime 103,Prime 107,Prime 109,Prime 113,Prime 127]
➕ Add the Hurwitz zeta function on non-negative integer arguments (#126).
👀 Implement efficient tests of n-freeness: pointwise and in interval. See
isNFree
andnFreesBlock
(#145).Generate preimages of the totient and the sum-of-divisors functions (#142):
> inverseTotient 120 :: [Integer] [155,310,183,366,225,450,175,350,231,462,143,286,244,372,396,308,248]
- Generate coefficients of Faulhaber polynomials
faulhaberPoly
(#70).
🔄 Changed
👌 Support Gaussian and Eisenstein integers in smooth numbers (#138).
🔄 Change types of
primes
,primeList
,sieveFrom
,nthPrime
, etc., to usePrime
newtype.✅
Math.NumberTheory.Primes.{Factorisation,Testing,Counting,Sieve}
are no longer re-exported fromMath.NumberTheory.Primes
. MergeMath.NumberTheory.UniqueFactorisation
intoMath.NumberTheory.Primes
(#135, #153).From now on
Math.NumberTheory.Primes.Factorisation.factorise
and similar functions return[(Integer, Word)]
instead of[(Integer, Int)]
.sbcFunctionOnPrimePower
now acceptsPrime Word
instead ofWord
.👍 Better precision for exact values of Riemann zeta and Dirichlet beta functions (#123).
Speed up certain cases of modular multiplication (#160).
Extend Chinese theorem to non-coprime moduli (#71).
🗄 Deprecated
- 🗄 Deprecate
Math.NumberTheory.Recurrencies.*
. UseMath.NumberTheory.Recurrences.*
instead (#146).
✂ Removed
✂ Remove
Prime
type family.✂ Remove deprecated
Math.NumberTheory.GCD
andMath.NumberTheory.GCD.LowLevel
.
- Introduce
-
v0.8.0.0 Changes
➕ Added
A new interface for
Math.NumberTheory.Moduli.Sqrt
, more robust and type safe (#87, #108).Implement Ramanujan tau function (#112):
> map ramanujan [1..10] [1,-24,252,-1472,4830,-6048,-16744,84480,-113643,-115920]
- Implement partition function (#115):
> take 10 partition [1,1,2,3,5,7,11,15,22,30]
- ➕ Add the Dirichlet beta function on non-negative integer arguments (#120). E. g.,
> take 5 $ Math.NumberTheory.Zeta.Dirichlet.betas 1e-15 [0.5,0.7853981633974483,0.9159655941772191,0.9689461462593693,0.9889445517411055]
Solve linear and quadratic congruences (#129).
👌 Support Eisenstein integers (#121).
Implement discrete logarithm (#88).
🔄 Changed
Stop reporting units (1, -1, i, -i) as a part of factorisation for integers and Gaussian integers (#101). Now
factorise (-2)
is[(2, 1)]
and not[(-1, 1), (2, 1)]
.🚚 Move
splitIntoCoprimes
toMath.NumberTheory.Euclidean.Coprimes
.🔄 Change types of
splitIntoCoprimes
,fromFactors
andprefFactors
using newtypeCoprimes
(#89).Sort Gaussian primes by norm (#124).
👉 Make return type of
primes
andprimeList
polymorphic instead of being limited toInteger
only (#109).Speed up factorisation of Gaussian integers (#116).
Speed up computation of primitive roots for prime powers (#127).
🗄 Deprecated
🗄 Deprecate an old interface of
Math.NumberTheory.Moduli.Sqrt
.🗄 Deprecate
Math.NumberTheory.GCD
andMath.NumberTheory.GCD.LowLevel
(#80). UseMath.NumberTheory.Euclidean
instead (#128).🗄 Deprecate
jacobi'
(#103).🗄 Deprecate
Math.NumberTheory.GaussianIntegers
in favor ofMath.NumberTheory.Quadratic.GaussianIntegers
.
-
v0.7.0.0 Changes
March 14, 2018➕ Added
- A general framework for bulk evaluation of arithmetic functions (#77):
> runFunctionOverBlock carmichaelA 1 10 [1,1,2,2,4,2,6,2,6,4]
- Implement a sublinear algorithm for Mertens function (#90):
> map (mertens . (10 ^)) [0..9] [1,-1,1,2,-23,-48,212,1037,1928,-222]
➕ Add basic support for cyclic groups and primitive roots (#86).
Implement an efficient modular exponentiation (#86).
Write routines for lazy generation of smooth numbers (#91).
> smoothOverInRange (fromJust (fromList [3,5,7])) 1000 2000 [1029,1125,1215,1225,1323,1575,1701,1715,1875]
🔄 Changed
Now
moebius
returns not a number, but a value ofMoebius
type (#90).Now factorisation of large integers and Gaussian integers produces factors as lazy as possible (#72, #76).
🗄 Deprecated
🗄 Deprecate
Math.NumberTheory.Primes.Heap
. UseMath.NumberTheory.Primes.Sieve
instead.🗄 Deprecate
FactorSieve
,TotientSieve
,CarmichaelSieve
and accompanying functions. Use new general approach for bulk evaluation of arithmetic functions instead (#77).
✂ Removed
- ✂ Remove
Math.NumberTheory.Powers.Integer
, deprecated in 0.5.0.0.
-
v0.6.0.1 Changes
December 19, 2017🔄 Changed
- Switch to
smallcheck-1.1.3
.
- Switch to
-
v0.6.0.0 Changes
September 16, 2017➕ Added
Brand new
Math.NumberTheory.Moduli.Class
(#56), providing flexible and type safe modular arithmetic. Due to use of GMP built-ins it is also significantly faster.🆕 New function
divisorsList
, which is lazier thandivisors
and does not requireOrd
constraint (#64). Thus, it can be used forGaussianInteger
.
🔄 Changed
Math.NumberTheory.Moduli
was split intoMath.NumberTheory.Moduli.{Chinese,Class,Jacobi,Sqrt}
.Functions
jacobi
andjacobi'
returnJacobiSymbol
instead ofInt
.Speed up factorisation over elliptic curve up to 15x (#65).
Polymorphic
fibonacci
andlucas
functions, which previously were restricted toInteger
only (#63). This is especially useful for modular computations, e. g.,map fibonacci [1..10] :: [Mod 7]
.👉 Make
totientSum
more robust and idiomatic (#58).
✂ Removed
- 🚚 Functions
invertMod
,powerMod
andpowerModInteger
were removed, as well as their unchecked counterparts. Use new interface to modular computations, provided byMath.NumberTheory.Moduli.Class
.
-
v0.5.0.1 Changes
July 01, 2017🔄 Changed
Switch to
QuickCheck-2.10
.