Changes

Release notes are now published on GitHub.

Version 0.16.1-SNAPSHOT (not released)

Version 0.16.0

This version implements major changes; most importantly, Scala 2.10 has been dropped. The commutative ring tower has been precised: Euclidean division has better semantics, and unique factorization domains have been introduced, generalizing spire.math.prime. Some species of division with remainder are now described by TruncatedDivision. An involution typeclass abstracts over complex conjugation. We also revised the use of commutative vs. noncommtutative rings, mostly in the construction of complex numbers/quaternions, and in the definition of modules.

Preliminary work has been done towards the modularization of Spire. A platform module abstracts over the JVM/JS differences, while Opt has been moved to the util module. Other modules are not used yet (data, legacy) but will be in the future.

Version 0.15.0

This version upgrades dependencies to algebra 1.0.0 which supports the cats 1.0 release.

Version 0.14.1

This version add laws for gcd/lcm operations, and fixes corner cases for the standard types such as Rational.

Additions: * Law tests for gcd/lcm

Changes: * gcd/lcm are associative and commutative, the Rational gcd/lcm have been aligned to be compatible with the integer gcd/lcm. * Corner cases such as gcd(a, 0) are handled correctly

Version 0.14.0

This release is a major milestone for Spire.

First of all, it introduces a dependency on typelevel/algebra (and thus on typelevel/cats-kernel). This provides immediate compatibility with Cats and Algebird.

Second of all, Spire is now published to the org.typelevel organization (which was previously org.spire-math).

Additions: * Added GCDRing, part of the commutative ring hierarchy * Clarified the laws of EuclideanRing * Added DivisionRing, a ring in which division is possible (generalization of fields to the noncommutative case; used now by Spire's quaternions).

Changes: * Many type classes are now aliases to algebra's type classes * Algebra provides commutative rings and fields, but the intemediate structures (GCDRing/EuclideanRing) are added by Spire; thus Spire Field differs from algebra Field by extending GCDRing and EuclideanRing. * The EuclidenRing operations for Field have been corrected; in particular, Float, Double no longer perform truncated division but a /~ b = 0 for nonzero b, as a can always be divided by b in a field. * Signed now extends Order, thus IsReal only extends Signed. * IsReal has been replaced by Signed for some operations in e.g. Complex, making them more precise/general. * Many different efficiency improvements

Fixes: * Instances for Complex and Quaternion are more precise * Numeric[Complex[A]] is no longer provided * Many bug fixes

Version 0.13.0

Additions: * Added Eq[Bound[A]] instance * Added Interval#overlap and supporting machinery

Changes: * Improve Polynomial performance * Support negative roots for Real * Migrate to newer ScalaCheck

Fixes: * Fix bugs in root isolation/refinement for Algebraic * Speed up convergence for Rational#limitTo

Version 0.12.0

Additions: * IntervalSeq and IntervalTrie added to spire-extras * .toReal and .toAlgebraic methods on Rational

Changes: * Package restructuring and improvements * Make Interval serializable * Deprecate use of SecureJava.fromBytes

Fixes: * Numerous bug fixes

Version 0.11.0

Spire has two new core maintainers: Rüdiger Klaehn and Denis Rosset.

The spire-scalacheck-binding package has been renamed to spire-laws. The spire-extras package has been introduced, for types that are less widely-used (but still useful).

Additions: * Added spire.math.Merging for merging arrays * Added qcombine (for generic Monoids) * More benchmarks (Rational, SafeLong, ...) * Scalastyle plugin and code clean up * Scoverage plugin and coverage tracking * Type class instances for java.math.BigInteger * Useful .as syntax for converting literals

Changes: * Move FixedPoint into extras * Improve Rational implemenation (clearer structure, faster)

Fixes: * Improved equality (===) support * Lots of documentation bug fixes and typo correction * Fixed unary - for unsigned int/long * Clean up Arbitrary/Gen instances * Drastically-improved test coverage for SafeLong, Rational, etc. * Fixed bugs around ceil method

Version 0.10.1

(Version 0.10.0 was aborted due to errors during the release.)

Fixes:

Version 0.9.1

Version 0.9.0

The project now builds with Scala 2.11.4 by default.

This was a major update with many additions, changes, and bug fixes.

Additions:

Fixes:

Changes:

Version 0.8.2

The project now builds for 2.11.2 by default.

Additions:

Fixes:

Changes:

(Versions 0.8.0 and 0.8.1 were skipped due to release problems.)

Version 0.7.5

(Need to reconstruct these notes for versions 0.7.5 and earlier.)