Trait/Object

spire.algebra

EuclideanRing

Related Docs: object EuclideanRing | package algebra

Permalink

trait EuclideanRing[A] extends GCDRing[A]

EuclideanRing implements a Euclidean domain.

The formal definition says that every euclidean domain A has (at least one) euclidean function f: A -> N (the natural numbers) where:

(for every x and non-zero y) x = yq + r, and r = 0 or f(r) < f(y).

This generalizes the Euclidean division of integers, where f represents a measure of length (or absolute value), and the previous equation represents finding the quotient and remainder of x and y. So:

quot(x, y) = q mod(x, y) = r

Linear Supertypes
GCDRing[A], CommutativeRing[A], CommutativeRng[A], CommutativeRig[A], MultiplicativeCommutativeMonoid[A], CommutativeSemiring[A], MultiplicativeCommutativeSemigroup[A], algebra.ring.Ring[A], algebra.ring.Rng[A], AdditiveCommutativeGroup[A], algebra.ring.AdditiveGroup[A], algebra.ring.Rig[A], algebra.ring.MultiplicativeMonoid[A], algebra.ring.Semiring[A], algebra.ring.MultiplicativeSemigroup[A], AdditiveCommutativeMonoid[A], AdditiveCommutativeSemigroup[A], algebra.ring.AdditiveMonoid[A], algebra.ring.AdditiveSemigroup[A], Serializable, Serializable, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. EuclideanRing
  2. GCDRing
  3. CommutativeRing
  4. CommutativeRng
  5. CommutativeRig
  6. MultiplicativeCommutativeMonoid
  7. CommutativeSemiring
  8. MultiplicativeCommutativeSemigroup
  9. Ring
  10. Rng
  11. AdditiveCommutativeGroup
  12. AdditiveGroup
  13. Rig
  14. MultiplicativeMonoid
  15. Semiring
  16. MultiplicativeSemigroup
  17. AdditiveCommutativeMonoid
  18. AdditiveCommutativeSemigroup
  19. AdditiveMonoid
  20. AdditiveSemigroup
  21. Serializable
  22. Serializable
  23. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def euclideanFunction(a: A): BigInt

    Permalink
  2. abstract def gcd(a: A, b: A)(implicit ev: Eq[A]): A

    Permalink
    Definition Classes
    GCDRing
  3. abstract def getClass(): Class[_]

    Permalink
    Definition Classes
    Any
  4. abstract def lcm(a: A, b: A)(implicit ev: Eq[A]): A

    Permalink
    Definition Classes
    GCDRing
  5. abstract def mod(a: A, b: A): A

    Permalink
  6. abstract def negate(x: A): A

    Permalink
    Definition Classes
    AdditiveGroup
  7. abstract def one: A

    Permalink
    Definition Classes
    MultiplicativeMonoid
  8. abstract def plus(x: A, y: A): A

    Permalink
    Definition Classes
    AdditiveSemigroup
  9. abstract def quot(a: A, b: A): A

    Permalink
  10. abstract def times(x: A, y: A): A

    Permalink
    Definition Classes
    MultiplicativeSemigroup
  11. abstract def zero: A

    Permalink
    Definition Classes
    AdditiveMonoid

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    Any
  4. def additive: CommutativeGroup[A]

    Permalink
    Definition Classes
    AdditiveCommutativeGroup → AdditiveCommutativeMonoid → AdditiveCommutativeSemigroup → AdditiveGroup → AdditiveMonoid → AdditiveSemigroup
  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    Any
  7. def fromBigInt(n: BigInt): A

    Permalink
    Definition Classes
    Ring
  8. def fromInt(n: Int): A

    Permalink
    Definition Classes
    Ring
  9. def hashCode(): Int

    Permalink
    Definition Classes
    Any
  10. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  11. def isOne(a: A)(implicit ev: algebra.Eq[A]): Boolean

    Permalink
    Definition Classes
    MultiplicativeMonoid
  12. def isZero(a: A)(implicit ev: algebra.Eq[A]): Boolean

    Permalink
    Definition Classes
    AdditiveMonoid
  13. def minus(x: A, y: A): A

    Permalink
    Definition Classes
    AdditiveGroup
  14. def multiplicative: CommutativeMonoid[A]

    Permalink
    Definition Classes
    MultiplicativeCommutativeMonoid → MultiplicativeCommutativeSemigroup → MultiplicativeMonoid → MultiplicativeSemigroup
  15. def positivePow(a: A, n: Int): A

    Permalink
    Attributes
    protected[this]
    Definition Classes
    MultiplicativeSemigroup
  16. def positiveSumN(a: A, n: Int): A

    Permalink
    Attributes
    protected[this]
    Definition Classes
    AdditiveSemigroup
  17. def pow(a: A, n: Int): A

    Permalink
    Definition Classes
    MultiplicativeMonoid → MultiplicativeSemigroup
  18. def product(as: TraversableOnce[A]): A

    Permalink
    Definition Classes
    MultiplicativeMonoid
  19. def quotmod(a: A, b: A): (A, A)

    Permalink
  20. def sum(as: TraversableOnce[A]): A

    Permalink
    Definition Classes
    AdditiveMonoid
  21. def sumN(a: A, n: Int): A

    Permalink
    Definition Classes
    AdditiveGroup → AdditiveMonoid → AdditiveSemigroup
  22. def toString(): String

    Permalink
    Definition Classes
    Any
  23. def tryProduct(as: TraversableOnce[A]): Option[A]

    Permalink
    Definition Classes
    MultiplicativeMonoid → MultiplicativeSemigroup
  24. def trySum(as: TraversableOnce[A]): Option[A]

    Permalink
    Definition Classes
    AdditiveMonoid → AdditiveSemigroup

Inherited from GCDRing[A]

Inherited from CommutativeRing[A]

Inherited from CommutativeRng[A]

Inherited from CommutativeRig[A]

Inherited from MultiplicativeCommutativeMonoid[A]

Inherited from CommutativeSemiring[A]

Inherited from MultiplicativeCommutativeSemigroup[A]

Inherited from algebra.ring.Ring[A]

Inherited from algebra.ring.Rng[A]

Inherited from AdditiveCommutativeGroup[A]

Inherited from algebra.ring.AdditiveGroup[A]

Inherited from algebra.ring.Rig[A]

Inherited from algebra.ring.MultiplicativeMonoid[A]

Inherited from algebra.ring.Semiring[A]

Inherited from algebra.ring.MultiplicativeSemigroup[A]

Inherited from AdditiveCommutativeMonoid[A]

Inherited from AdditiveCommutativeSemigroup[A]

Inherited from algebra.ring.AdditiveMonoid[A]

Inherited from algebra.ring.AdditiveSemigroup[A]

Inherited from Serializable

Inherited from Serializable

Inherited from Any

Ungrouped