arithmoi v0.10.0.0 Release Notes

  • ➕ 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.