Skip to content

Commit 610e3ed

Browse files
authored
Merge pull request #1115 from armanbilge/update/algebra-2.7.0
Update to algebra 2.7.0
2 parents 4040b6e + 10f00ed commit 610e3ed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+358
-718
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ lazy val scalaCheckVersion = "1.15.4"
2020
lazy val munit = "0.7.29"
2121
lazy val munitDiscipline = "1.0.9"
2222

23-
lazy val algebraVersion = "2.2.3"
23+
lazy val algebraVersion = "2.7.0"
2424

2525
lazy val apfloatVersion = "1.10.1"
2626
lazy val jscienceVersion = "4.3.1"

core/src/main/scala-2/spire/macros/Auto.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,12 @@ abstract class AutoAlgebra extends AutoOps { ops =>
162162
def EuclideanRing[A: c.WeakTypeTag](z: c.Expr[A], o: c.Expr[A])(ev: c.Expr[Eq[A]]): c.Expr[EuclideanRing[A]] = {
163163
c.universe.reify {
164164
new EuclideanRing[A] { self =>
165-
// default implementations from EuclideanRing.WithEuclideanAlgorithm
165+
// default implementations from EuclideanRing
166166
@tailrec final def euclid(a: A, b: A)(implicit ev: Eq[A]): A =
167167
if (isZero(b)) a else euclid(b, emod(a, b))
168-
def gcd(a: A, b: A)(implicit ev: Eq[A]): A =
168+
override def gcd(a: A, b: A)(implicit ev: Eq[A]): A =
169169
euclid(a, b)(ev)
170-
def lcm(a: A, b: A)(implicit ev: Eq[A]): A =
170+
override def lcm(a: A, b: A)(implicit ev: Eq[A]): A =
171171
if (isZero(a) || isZero(b)) zero else times(equot(a, gcd(a, b)), b)
172172

173173
def zero: A = z.splice
@@ -186,7 +186,7 @@ abstract class AutoAlgebra extends AutoOps { ops =>
186186
def Field[A: c.WeakTypeTag](z: c.Expr[A], o: c.Expr[A])(ev: c.Expr[Eq[A]]): c.Expr[Field[A]] = {
187187
c.universe.reify {
188188
new Field[A] {
189-
// default implementations from Field.WithDefaultGCD
189+
// default implementations from Field
190190
override def gcd(a: A, b: A)(implicit eqA: Eq[A]): A =
191191
if (isZero(a) && isZero(b)) zero else one
192192
override def lcm(a: A, b: A)(implicit eqA: Eq[A]): A = times(a, b)

core/src/main/scala-3/spire/syntax/Ops.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ final class SignedOps[A](a: A)(using s: Signed[A]):
8383
def isSignNonNegative: Boolean = s.isSignNonNegative(a)
8484

8585
final class TruncatedDivisionOps[A](lhs: A)(using ev: TruncatedDivision[A]):
86-
def toBigIntOpt: Opt[BigInt] = ev.toBigIntOpt(lhs)
86+
// def toBigIntOpt: Opt[BigInt] = ev.toBigIntOpt(lhs) // TODO port to algebra?
8787
def tquot(rhs: A): A = ev.tquot(lhs, rhs)
8888
def tmod(rhs: A): A = ev.tmod(lhs, rhs)
8989
def tquotmod(rhs: A): (A, A) = ev.tquotmod(lhs, rhs)

core/src/main/scala/spire/algebra/Action.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,15 @@ trait MultiplicativeAction[@sp(Int) P, G] extends Any { self =>
100100
def gtimesl(g: G, p: P): P
101101
def gtimesr(p: P, g: G): P
102102
}
103+
104+
object MultiplicativeAction {
105+
implicit def SignAction[A](implicit A: AdditiveGroup[A]): MultiplicativeAction[A, Sign] =
106+
new MultiplicativeAction[A, Sign] {
107+
def gtimesl(s: Sign, a: A): A = s match {
108+
case Signed.Positive => a
109+
case Signed.Negative => A.negate(a)
110+
case Signed.Zero => A.zero
111+
}
112+
def gtimesr(a: A, s: Sign): A = gtimesl(s, a)
113+
}
114+
}

core/src/main/scala/spire/algebra/DivisionRing.scala

Lines changed: 0 additions & 30 deletions
This file was deleted.

core/src/main/scala/spire/algebra/EuclideanRing.scala

Lines changed: 0 additions & 68 deletions
This file was deleted.

core/src/main/scala/spire/algebra/Field.scala

Lines changed: 0 additions & 81 deletions
This file was deleted.

core/src/main/scala/spire/algebra/GCDRing.scala

Lines changed: 0 additions & 59 deletions
This file was deleted.

core/src/main/scala/spire/algebra/IsReal.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import spire.math.{Algebraic, Rational, Real}
2121
/**
2222
* A simple type class for numeric types that are a subset of the reals.
2323
*/
24-
trait IsReal[@sp A] extends Any with Signed[A] {
24+
trait IsReal[@sp A] extends Any with Order[A] with Signed[A] {
2525

2626
/**
2727
* Rounds `a` the nearest integer that is greater than or equal to `a`.

core/src/main/scala/spire/algebra/Sign.scala

Lines changed: 0 additions & 69 deletions
This file was deleted.

0 commit comments

Comments
 (0)