All Versions
Latest Version
Avg Release Cycle
157 days
Latest Release

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.
  • 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 also binomialRotated, binomialLine and binomialDiagonal (#151). There are also factoriseFactorial and factoriseBinomial (#152).

    • โž• Add Semiring instance of SomeMod (#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, use Data.Euclidean instead.

    • ๐Ÿ—„ Deprecate chineseRemainder, chineseRemainder2, chineseCoprime, use chinese instead. Deprecate chineseCoprimeSomeMod, use chineseSomeMod.

    • ๐Ÿ—„ Deprecate Math.NumberTheory.Powers except Math.NumberTheory.Powers.Modular. Use Math.NumberTheory.Roots instead.

    • ๐Ÿ—„ Deprecate Math.NumberTheory.Moduli.Jacobi, use Math.NumberTheory.Moduli.Sqrt instead.

    • ๐Ÿ—„ Deprecate Math.NumberTheory.Moduli.{DiscreteLogarithm,PrimitiveRoot}, use Math.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 and Ring instances for Eisenstein and Gaussian integers.

    ๐Ÿ”„ Changed

    • Embrace the new Semiring -> GcdDomain -> Euclidean hierarchy of classes, refining Num and Integral 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 and sqrtsMod require an additional argument: a singleton linking a type-level modulo with a term-level factorisation (#169).

    • Generalize sieveBlock to handle any flavor of Vector (#164).

    ๐Ÿ—„ Deprecated

    • ๐Ÿ—„ Deprecate Math.NumberTheory.Primes.Factorisation, use Math.NumberTheory.Primes.factorise instead. Deprecate Math.NumberTheory.Primes.Sieve, use Enum instance instead.

    • ๐Ÿ—„ Deprecate Math.NumberTheory.Primes.Factorisation.Certified and Math.NumberTheory.Primes.Testing.Certificates.

    • ๐Ÿ—„ Deprecate Math.NumberTheory.MoebiusInversion.Int.

    • ๐Ÿ—„ Deprecate Math.NumberTheory.SmoothNumbers.{fromSet,fromSmoothUpperBound}. Use Math.NumberTheory.SmoothNumbers.fromList instead.

    • ๐Ÿ—„ Deprecate Math.NumberTheory.SmoothNumbers.smoothOverInRange in favor of smoothOver and Math.NumberTheory.SmoothNumbers.smoothOverInRange in favor of isSmooth.

    โœ‚ Removed

    • ๐Ÿ“ฆ Move Euclidean type class to semirings package (#168).

    • โœ‚ Remove deprecated earlier Math.NumberTheory.Recurrencies.* and Math.NumberTheory.UniqueFactorisation modules. Use Math.NumberTheory.Recurrences.* and Math.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 and precPrime. Implement an instance of Enum 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 and nFreesBlock (#145).

    • Generate preimages of the totient and the sum-of-divisors functions (#142):

      > inverseTotient 120 :: [Integer]
    • 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 use Prime newtype.

    • โœ… Math.NumberTheory.Primes.{Factorisation,Testing,Counting,Sieve} are no longer re-exported from Math.NumberTheory.Primes. Merge Math.NumberTheory.UniqueFactorisation into Math.NumberTheory.Primes (#135, #153).

    • From now on Math.NumberTheory.Primes.Factorisation.factorise and similar functions return [(Integer, Word)] instead of [(Integer, Int)].

    • sbcFunctionOnPrimePower now accepts Prime Word instead of Word.

    • ๐Ÿ‘ 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.*. Use Math.NumberTheory.Recurrences.* instead (#146).

    โœ‚ Removed

    • โœ‚ Remove Prime type family.

    • โœ‚ Remove deprecated Math.NumberTheory.GCD and Math.NumberTheory.GCD.LowLevel.

  • 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]
    • Implement partition function (#115):
      > take 10 partition
    • โž• Add the Dirichlet beta function on non-negative integer arguments (#120). E. g.,
      > take 5 $ Math.NumberTheory.Zeta.Dirichlet.betas 1e-15
    • 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 to Math.NumberTheory.Euclidean.Coprimes.

    • ๐Ÿ”„ Change types of splitIntoCoprimes, fromFactors and prefFactors using newtype Coprimes (#89).

    • Sort Gaussian primes by norm (#124).

    • ๐Ÿ‘‰ Make return type of primes and primeList polymorphic instead of being limited to Integer 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 and Math.NumberTheory.GCD.LowLevel (#80). Use Math.NumberTheory.Euclidean instead (#128).

    • ๐Ÿ—„ Deprecate jacobi' (#103).

    • ๐Ÿ—„ Deprecate Math.NumberTheory.GaussianIntegers in favor of Math.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
    • Implement a sublinear algorithm for Mertens function (#90):
      > map (mertens . (10 ^)) [0..9]
    • โž• 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

    ๐Ÿ”„ Changed

    • Now moebius returns not a number, but a value of Moebius type (#90).

    • Now factorisation of large integers and Gaussian integers produces factors as lazy as possible (#72, #76).

    ๐Ÿ—„ Deprecated

    • ๐Ÿ—„ Deprecate Math.NumberTheory.Primes.Heap. Use Math.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
  • v0.6.0.1 Changes

    December 19, 2017

    ๐Ÿ”„ Changed

    • Switch to smallcheck-1.1.3.
  • 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 than divisors and does not require Ord constraint (#64). Thus, it can be used for GaussianInteger.

    ๐Ÿ”„ Changed

    • Math.NumberTheory.Moduli was split into Math.NumberTheory.Moduli.{Chinese,Class,Jacobi,Sqrt}.

    • Functions jacobi and jacobi' return JacobiSymbol instead of Int.

    • Speed up factorisation over elliptic curve up to 15x (#65).

    • Polymorphic fibonacci and lucas functions, which previously were restricted to Integer 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 and powerModInteger were removed, as well as their unchecked counterparts. Use new interface to modular computations, provided by Math.NumberTheory.Moduli.Class.
  • v0.5.0.1 Changes

    July 01, 2017

    ๐Ÿ”„ Changed

    Switch to QuickCheck-2.10.