Field

trait Field[@specialized(Int, Long, Float, Double) A] extends Field[A] with EuclideanRing[A]

Field type class. While algebra already provides one, we provide one in Spire that integrates with the commutative ring hierarchy, in particular GCDRing and EuclideanRing.

On a field, all nonzero elements are invertible, so the remainder of the division is always 0. The Euclidean function can take an arbitrary value on nonzero elements (it is undefined for zero); for compatibility with the degree of polynomials, we use the constant 0.

The GCD and LCM are defined up to a unit; on a field, it means that either the GCD or LCM can be fixed arbitrarily. Some conventions with consistent defaults are provided in the spire.algebra.Field companion object.

Companion
object
trait EuclideanRing[A]
trait GCDRing[A]
trait Field[A]
trait MultiplicativeCommutativeGroup[A]
trait MultiplicativeGroup[A]
trait CommutativeRing[A]
trait CommutativeRng[A]
trait CommutativeRig[A]
trait MultiplicativeCommutativeMonoid[A]
trait CommutativeSemiring[A]
trait MultiplicativeCommutativeSemigroup[A]
trait Ring[A]
trait Rng[A]
trait AdditiveCommutativeGroup[A]
trait AdditiveGroup[A]
trait Rig[A]
trait MultiplicativeMonoid[A]
trait Semiring[A]
trait MultiplicativeSemigroup[A]
trait AdditiveCommutativeMonoid[A]
trait AdditiveCommutativeSemigroup[A]
trait AdditiveMonoid[A]
trait AdditiveSemigroup[A]
trait Serializable
class Any

Value members

Concrete methods

def emod(a: A, b: A): A
def equot(a: A, b: A): A
override
def equotmod(a: A, b: A): (A, A)
Definition Classes
def euclideanFunction(a: A): BigInt

Inherited methods

override
def additive: CommutativeGroup[A]
Definition Classes
AdditiveCommutativeGroup -> AdditiveCommutativeMonoid -> AdditiveCommutativeSemigroup -> AdditiveGroup -> AdditiveMonoid -> AdditiveSemigroup
Inherited from
AdditiveCommutativeGroup
def div(x: A, y: A): A
Inherited from
MultiplicativeGroup
def fromBigInt(n: BigInt): A

Convert the given BigInt to an instance of A.

Convert the given BigInt to an instance of A.

This is equivalent to n repeated summations of this ring's one, or -n summations of -one if n is negative.

Most type class instances should consider overriding this method for performance reasons.

Inherited from
Ring
def fromDouble(a: Double): A

This is implemented in terms of basic Field ops. However, this is probably significantly less efficient than can be done with a specific type. So, it is recommended that this method be overriden.

This is implemented in terms of basic Field ops. However, this is probably significantly less efficient than can be done with a specific type. So, it is recommended that this method be overriden.

This is possible because a Double is a rational number.

Inherited from
Field
def fromInt(n: Int): A

Convert the given integer to an instance of A.

Convert the given integer to an instance of A.

Defined to be equivalent to sumN(one, n).

That is, n repeated summations of this ring's one, or -n summations of -one if n is negative.

Most type class instances should consider overriding this method for performance reasons.

Inherited from
Ring
def gcd(a: A, b: A)(implicit ev: Eq[A]): A
Inherited from
GCDRing
def isOne(a: A)(implicit ev: Eq[A]): Boolean

Tests if a is one.

Tests if a is one.

Inherited from
MultiplicativeMonoid
def isZero(a: A)(implicit ev: Eq[A]): Boolean

Tests if a is zero.

Tests if a is zero.

Inherited from
AdditiveMonoid
def lcm(a: A, b: A)(implicit ev: Eq[A]): A
Inherited from
GCDRing
def minus(x: A, y: A): A
Inherited from
AdditiveGroup
override
def multiplicative: CommutativeGroup[A]
Definition Classes
MultiplicativeCommutativeGroup -> MultiplicativeCommutativeMonoid -> MultiplicativeCommutativeSemigroup -> MultiplicativeGroup -> MultiplicativeMonoid -> MultiplicativeSemigroup
Inherited from
MultiplicativeCommutativeGroup
def negate(x: A): A
Inherited from
AdditiveGroup
def one: A
Inherited from
MultiplicativeMonoid
def plus(x: A, y: A): A
Inherited from
AdditiveSemigroup
override
def pow(a: A, n: Int): A
Definition Classes
MultiplicativeGroup -> MultiplicativeMonoid -> MultiplicativeSemigroup
Inherited from
MultiplicativeGroup
def product(as: IterableOnce[A]): A

Given a sequence of as, compute the product.

Given a sequence of as, compute the product.

Inherited from
MultiplicativeMonoid
def reciprocal(x: A): A
Inherited from
MultiplicativeGroup
def sum(as: IterableOnce[A]): A

Given a sequence of as, compute the sum.

Given a sequence of as, compute the sum.

Inherited from
AdditiveMonoid
override
def sumN(a: A, n: Int): A
Definition Classes
AdditiveGroup -> AdditiveMonoid -> AdditiveSemigroup
Inherited from
AdditiveGroup
def times(x: A, y: A): A
Inherited from
MultiplicativeSemigroup
override
def tryProduct(as: IterableOnce[A]): Option[A]
Definition Classes
MultiplicativeMonoid -> MultiplicativeSemigroup
Inherited from
MultiplicativeMonoid
override
def trySum(as: IterableOnce[A]): Option[A]
Definition Classes
AdditiveMonoid -> AdditiveSemigroup
Inherited from
AdditiveMonoid
def zero: A
Inherited from
AdditiveMonoid