BaseComplex

com.phasmidsoftware.number.core.numerical.BaseComplex
See theBaseComplex companion object
abstract class BaseComplex(val real: Number, val imag: Number) extends Complex

Abstract base class which implements Complex.

Value parameters

imag

the imaginary component.

real

the real component.

Attributes

Companion
object
Graph
Supertypes
trait Complex
trait Multivariate
trait Field
trait Ordered[Field]
trait Comparable[Field]
trait Numerical
trait NumberLike
class Object
trait Matchable
class Any
Show all
Known subtypes

Members list

Value members

Abstract methods

def invert: Field

Yields the inverse of this Complex.

Yields the inverse of this Complex.

Attributes

Returns

the result of invoking power(-1).

def ln: Field

Computes the natural logarithm of this Field. For a real number x, this is equivalent to the logarithm base e: ln(x). For a complex number, this computes the multivalued complex logarithm.

Computes the natural logarithm of this Field. For a real number x, this is equivalent to the logarithm base e: ln(x). For a complex number, this computes the multivalued complex logarithm.

Attributes

Returns

the natural logarithm of this Field as a Field.

def make(a: Number, b: Number): BaseComplex

Instance method to make a Complex number from a real and an imaginary part.

Instance method to make a Complex number from a real and an imaginary part.

Value parameters

a

the real part.

b

the imaginary part.

Attributes

Returns

a Complex number, either ComplexCartesian or ComplexPolar

Method to compute the square of the modulus (magnitude) of this complex number.

Method to compute the square of the modulus (magnitude) of this complex number.

Attributes

Returns

the square of the modulus as a Number.

Concrete methods

def add(x: Field): Field

Add x to this Complex and return the result.

Add x to this Complex and return the result.

Value parameters

x

the addend.

Attributes

Returns

the sum.

def atan(y: Real): Field

Computes the arc tangent of the given real number y in the context of this Field. This implements atan2(y, x) where this represents the x coordinate.

Computes the arc tangent of the given real number y in the context of this Field. This implements atan2(y, x) where this represents the x coordinate.

Value parameters

y

the real number representing the y coordinate.

Attributes

Returns

a Field representing the arc tangent atan2(y, x).

def compare(that: Field): Int

Method to compare this BaseComplex with that Field. Required by implementing Ordered[Field]. NOTE if the difference is a Complex number, we try to do fuzzy comparison (with confidence of 0.5).

Method to compare this BaseComplex with that Field. Required by implementing Ordered[Field]. NOTE if the difference is a Complex number, we try to do fuzzy comparison (with confidence of 0.5).

TODO Complex should not implement compare (that's to say Field should not extend Ordering).

Value parameters

that

(a Field).

Attributes

Returns

the comparison.

def divide(x: Field): Field

Divide this Complex by x and return the result. See * and invert for more detail.

Divide this Complex by x and return the result. See * and invert for more detail.

Value parameters

x

the divisor.

Attributes

Returns

the quotient.

def isSame(x: Numerical, confidence: Double = ...): Boolean

Method to determine if this Field is equivalent to another Field (x).

Method to determine if this Field is equivalent to another Field (x).

Value parameters

x

the other field.

Attributes

Returns

true if they are the same, otherwise false.

def multiply(x: Field): Field

Multiply this Complex by x and return the result.

Multiply this Complex by x and return the result.

  • @param x the multiplicand.
  • @return the product.

Attributes

def power(n: Number): Complex

Computes the result of raising this number (field element) to the given power n.

Computes the result of raising this number (field element) to the given power n.

Value parameters

n

The exponent as a Number to which this field element will be raised. Can represent integer, rational, or other numerical values.

Attributes

Returns

A new Field instance that is the result of performing the power operation.

def power(p: Field): Field

Raise this Complex to the power p.

Raise this Complex to the power p.

Value parameters

p

a Number.

Attributes

Returns

this Number raised to power p.

def product(multiplicand: Complex): Complex

Method to multiply this by the given parameter (a Polar).

Method to multiply this by the given parameter (a Polar).

Value parameters

multiplicand

the complex multiplicand.

Attributes

Returns

the product of this and multiplicand.

def sum(addend: Complex): Complex

Method to add this to the given parameter (a Cartesian).

Method to add this to the given parameter (a Cartesian).

Value parameters

addend

the complex addend.

Attributes

Returns

the sum of this and addend.

Inherited methods

infix def *(x: Field): Field

Multiply this Field by the given Field and return the result.

Multiply this Field by the given Field and return the result.

Value parameters

x

the multiplicand, an instance of Field.

Attributes

Returns

the product of this Field and the given Field.

Inherited from:
Field
infix def +(x: Field): Field

Synonym for add.

Synonym for add.

Value parameters

x

the addend.

Attributes

Returns

the result.

Inherited from:
Field
infix def -(x: Field): Field

Synonym for subtract.

Synonym for subtract.

Value parameters

x

the subtrahend.

Attributes

Returns

this - x.

Inherited from:
Field
def <(that: Field): Boolean

Returns true if this is less than that

Returns true if this is less than that

Value parameters

that

the instance to compare against

Attributes

Inherited from:
Ordered
def <=(that: Field): Boolean

Returns true if this is less than or equal to that.

Returns true if this is less than or equal to that.

Attributes

Inherited from:
Ordered
def >(that: Field): Boolean

Returns true if this is greater than that.

Returns true if this is greater than that.

Value parameters

that

the instance to compare against

Attributes

Inherited from:
Ordered
def >=(that: Field): Boolean

Returns true if this is greater than or equal to that.

Returns true if this is greater than or equal to that.

Attributes

Inherited from:
Ordered
def approximation: Option[Real]

Computes an approximation of the field as a real number, if possible. This method attempts to map the underlying numerical representation to a real value.

Computes an approximation of the field as a real number, if possible. This method attempts to map the underlying numerical representation to a real value.

Attributes

Returns

an Option containing the Real representation of this field if it can be approximated, or None if the approximation is not possible.

Inherited from:
Field
def asJavaNumber: Option[Number]

Converts this NumberLike object into an optional java.lang.Number provided that the conversion can be performed without loss of precision.

Converts this NumberLike object into an optional java.lang.Number provided that the conversion can be performed without loss of precision.

The method determines whether the current NumberLike object can be represented as a java.lang.Number by leveraging the asNumber method and further evaluating certain conditions:

  • If the NumberLike object is an ExactNumber and its factor is PureNumber, the result is converted using Value.asJavaNumber.
  • If the NumberLike object is a FuzzyNumber with a wiggle value below a specified tolerance, the result is also converted using Value.asJavaNumber.
  • In all other cases, None is returned.

Attributes

Returns

an optional java.lang.Number representation of this object. The result is Some(java.lang.Number) if the conversion is successful under the stated conditions; otherwise, None.

Inherited from:
NumberLike
def compareTo(that: Field): Int

Result of comparing this with operand that.

Result of comparing this with operand that.

Value parameters

that

the instance to compare against

Attributes

Inherited from:
Ordered
def maybeFactor: Option[Factor]

Method to determine what Factor, if there is such, this NumberLike object is based on.

Method to determine what Factor, if there is such, this NumberLike object is based on.

TODO it's more complicated than this! CONSIDER having a Complex sub-type of Factor.

Attributes

Returns

an optional Factor.

Inherited from:
Complex
def memberOf(set: NumberSet): Boolean

Method to determine if this NumberLike object is a member of the given set.

Method to determine if this NumberLike object is a member of the given set.

Value parameters

set

the candidate NumberSet.

Attributes

Returns

true if this is exact and belongs to set.

Inherited from:
NumberLike
def memberOf: Option[NumberSet]

Method to determine the NumberSet, if any, to which this NumberLike object belongs. NOTE that we don't yet support H, the quaternions.

Method to determine the NumberSet, if any, to which this NumberLike object belongs. NOTE that we don't yet support H, the quaternions.

Attributes

Returns

Some(numberSet) or None if it doesn't belong to any (for example, it is fuzzy).

Inherited from:
NumberLike
infix def power(p: Int): Field

Raise this Field to the power p.

Raise this Field to the power p.

Value parameters

p

an Int.

Attributes

Returns

this Field raised to power p.

Inherited from:
Field
def show: String

Method to show this NumberLike in a human-friendly manner. Subclasses may override for prettier output (vulgar fractions, dropped trailing zeros, etc.). The default falls back to render.

Method to show this NumberLike in a human-friendly manner. Subclasses may override for prettier output (vulgar fractions, dropped trailing zeros, etc.). The default falls back to render.

Attributes

Returns

a String

Inherited from:
NumberLike
infix def subtract(x: Field): Field

Subtract x from this Field and return the result.

Subtract x from this Field and return the result.

Value parameters

x

the subtrahend.

Attributes

Returns

the difference of this - x.

Inherited from:
Field
def toRational: Option[Rational]

Converts this Field instance to its equivalent rational representation if it is real-valued.

Converts this Field instance to its equivalent rational representation if it is real-valued.

Attributes

Returns

an Option containing the rational representation of this Field if it is real-valued; otherwise, None.

Inherited from:
Field

Inherited and Abstract methods

def abs: Numerical

Computes the absolute value of this Numerical instance. The result is a Numerical object representing a non-negative magnitude of this instance.

Computes the absolute value of this Numerical instance. The result is a Numerical object representing a non-negative magnitude of this instance.

Attributes

Returns

a Numerical object representing the absolute value of this instance.

Inherited from:
Numerical

Method to determine the argument (angle) of this Complex number.

Method to determine the argument (angle) of this Complex number.

Attributes

Returns

a Number (in radians).

Inherited from:
Complex
def asReal: Option[Real]

Method to return this Field as a Real, if possible. If this is a Real number x, return Some(x) otherwise, return None.

Method to return this Field as a Real, if possible. If this is a Real number x, return Some(x) otherwise, return None.

Attributes

Returns

an Option[Real].

Inherited from:
Numerical
def doAdd(complex: Complex): Complex

Method to add this Complex to another Complex.

Method to add this Complex to another Complex.

Value parameters

complex

the other Complex.

Attributes

Returns

the sum of the Complexes.

Inherited from:
Complex
def doMultiply(complex: Complex): Complex

Method to multiply this Complex by another Complex.

Method to multiply this Complex by another Complex.

Value parameters

complex

the other Complex.

Attributes

Returns

the product of the Complexes.

Inherited from:
Complex
def isExact: Boolean

Method to determine if this NumberLike object is exact. For instance, Number.pi is exact, although if you converted it into a PureNumber, it would no longer be exact.

Method to determine if this NumberLike object is exact. For instance, Number.pi is exact, although if you converted it into a PureNumber, it would no longer be exact.

Attributes

Returns

true if this NumberLike object is exact in the context of No factor, else false.

Inherited from:
NumberLike
def isImaginary: Boolean

Method to determine if this Field is imaginary-valued (i.e., the point lies on the imaginary axis).

Method to determine if this Field is imaginary-valued (i.e., the point lies on the imaginary axis).

Attributes

Returns

true if this is imaginary.

Inherited from:
Field
def isInfinite: Boolean

Method to determine if this Field has infinite magnitude.

Method to determine if this Field has infinite magnitude.

Attributes

Returns

true if the magnitude of this Field is infinite.

Inherited from:
Numerical
def isProbablyZero(confidence: Double = ...): Boolean

Determines whether the magnitude of this Numerical instance is probably zero based on a given probability threshold.

Determines whether the magnitude of this Numerical instance is probably zero based on a given probability threshold.

Value parameters

confidence

the probability threshold (default is oneSigma). A higher value increases the confidence needed to determine that the magnitude is zero.

Attributes

Returns

true if the magnitude is considered to be probably zero based on the probability threshold, false otherwise.

Inherited from:
Numerical
def isReal: Boolean

Method to determine if this Field is real-valued (i.e., the point lies on the real axis).

Method to determine if this Field is real-valued (i.e., the point lies on the real axis).

Attributes

Returns

true if not imaginary.

Inherited from:
Field
def isZero: Boolean

Method to determine if this Field has zero magnitude. Zero is the additive identity.

Method to determine if this Field has zero magnitude. Zero is the additive identity.

Attributes

Returns

true if the magnitude of this Field is zero.

Inherited from:
Numerical

Method to determine the modulus of this Complex number.

Method to determine the modulus of this Complex number.

Attributes

Returns

the modulus of this Complex.

Inherited from:
Complex

Method to "normalize" a field.

Method to "normalize" a field.

Attributes

Returns

a Field which is in canonical form.

Inherited from:
Numerical

Method to scale this Complex by a Number.

Method to scale this Complex by a Number.

Value parameters

n

the Number.

Attributes

Returns

a Complex with the same argument as this but a different magnitude.

Inherited from:
Complex
def render: String

Method to render this NumberLike in a presentable manner.

Method to render this NumberLike in a presentable manner.

Attributes

Returns

a String

Inherited from:
NumberLike

Rotate this Complex number by pi/2 counter-clockwise (i.e. multiply by i).

Rotate this Complex number by pi/2 counter-clockwise (i.e. multiply by i).

Attributes

Returns

the value of this * i.

Inherited from:
Complex
def signum: Int

Determine the "sign" of this field. For a real-valued quantity (Real or Number), we try to determine if it is to the right, left or at the origin. For a complex number, we get the signum of the real part.

Determine the "sign" of this field. For a real-valued quantity (Real or Number), we try to determine if it is to the right, left or at the origin. For a complex number, we get the signum of the real part.

Attributes

Returns

+1 if to the right of the origin, -1 if to the left, 0 if at the origin.

Inherited from:
Numerical
def square: Field

Squares this Field instance by multiplying it with itself.

Squares this Field instance by multiplying it with itself.

Attributes

Returns

the result of squaring this Field.

Inherited from:
Field
def unary_-: Field

Change the sign of this Field.

Change the sign of this Field.

Attributes

Inherited from:
Numerical

Concrete fields

lazy val asComplex: Complex

Method to return this Field as a Complex. If this is a Real number x, return ComplexPolar(x) otherwise, return this.

Method to return this Field as a Complex. If this is a Real number x, return ComplexPolar(x) otherwise, return this.

Attributes

Returns

a Complex.

lazy val asNumber: Option[Number]

Method to determine if this Field is actually a real (or imaginary) Number (i.e. not complex). NOTE: to force this as a Number, use convertToNumber in the companion Object.

Method to determine if this Field is actually a real (or imaginary) Number (i.e. not complex). NOTE: to force this as a Number, use convertToNumber in the companion Object.

Attributes

Returns

a Some(x) if this is a Number; otherwise return None.

lazy val conjugate: Complex

Method to determine the conjugate of this Complex number.

Method to determine the conjugate of this Complex number.

Attributes

Returns

the conjugate of this Complex.

lazy val cos: Field

Computes the cosine of this field element, interpreted in the context of a complex number. The cosine operation is defined mathematically and extended to work with complex values, leveraging the properties of exponential functions in the complex plane.

Computes the cosine of this field element, interpreted in the context of a complex number. The cosine operation is defined mathematically and extended to work with complex values, leveraging the properties of exponential functions in the complex plane.

Attributes

Returns

a Field representing the cosine of this field element.

lazy val cosh: Field

Computes the hyperbolic cosine (cosh) of this complex number.

Computes the hyperbolic cosine (cosh) of this complex number.

For a complex number expressed in Cartesian form (x + iy), the result is calculated using the formula: cosh(x + iy) = cosh(x)cos(y) + i·sinh(x)sin(y).

If the complex number is represented in polar form, it gets converted to Cartesian form, and the cosh is computed on the Cartesian representation.

Attributes

Returns

The hyperbolic cosine of this complex number as a Field.

lazy val exp: Field

Computes the exponential of this complex number.

Computes the exponential of this complex number.

Attributes

Returns

the exponential of this Field as a new Field instance.

val imag: Number
lazy val isUnity: Boolean

Determines if this complex number has a modulus of unity (magnitude of one). This is true if the modulus of the complex number, when subtracted by one, equals zero.

Determines if this complex number has a modulus of unity (magnitude of one). This is true if the modulus of the complex number, when subtracted by one, equals zero.

Attributes

Returns

true if the modulus of this complex number is unity (1), otherwise false.

val real: Number
lazy val sin: Field

Computes the sine of this complex number. The result is calculated in the context of complex numbers, applying the necessary formulas for the sine function on complex inputs.

Computes the sine of this complex number. The result is calculated in the context of complex numbers, applying the necessary formulas for the sine function on complex inputs.

Attributes

Returns

the sine of this complex number as an instance of Field.

lazy val sinh: Field

Computes the hyperbolic sine (sinh) of this Complex number.

Computes the hyperbolic sine (sinh) of this Complex number.

This method is defined for both Cartesian and Polar representations of complex numbers:

  • For a complex number in Cartesian form (x + i·y), the formula used is: sinh(x + i·y) = sinh(x)·cos(y) + i·cosh(x)·sin(y)

  • For a complex number in Polar form, it is first converted to Cartesian form and the computation is then performed using the Cartesian formula.

Attributes

Returns

A new ComplexCartesian instance representing the hyperbolic sine of this Complex number.

lazy val tan: Field

Computes the tangent of this complex number.

Computes the tangent of this complex number.

Attributes

Returns

The tangent of this complex number as a Field.

lazy val tanh: Field

Represents the hyperbolic tangent (tanh) function as a field element.

Represents the hyperbolic tangent (tanh) function as a field element.

Computed as the division of the hyperbolic sine (sinh) and the hyperbolic cosine (cosh).

This lazy value ensures the computation is deferred until the tanh field is accessed, improving efficiency in cases where it is not immediately required.

Attributes

Inherited fields

Attributes

Inherited from:
Complex
lazy val isAlgebraic: Boolean

Attributes

Returns

true.

Inherited from:
Multivariate
lazy val isComplex: Boolean

Attributes

Returns

true.

Inherited from:
Complex