Package org.ojalgo.scalar
Class ExactDecimal<S extends ExactDecimal<S>>
java.lang.Object
org.ojalgo.scalar.ExactDecimal<S>
- All Implemented Interfaces:
Comparable<S>
,Field<Scalar<S>>
,Group
,Group.Additive<Scalar<S>>
,Group.Multiplicative<Scalar<S>>
,NormedVectorSpace<Scalar<S>,
,S> Operation
,Operation.Addition<Scalar<S>>
,Operation.Division<Scalar<S>>
,Operation.Multiplication<Scalar<S>>
,Operation.Subtraction<Scalar<S>>
,Ring<Scalar<S>>
,ScalarOperation
,ScalarOperation.Addition<Scalar<S>,
,S> ScalarOperation.Division<Scalar<S>,
,S> ScalarOperation.Multiplication<Scalar<S>,
,S> ScalarOperation.Subtraction<Scalar<S>,
,S> VectorSpace<Scalar<S>,
,S> Scalar<S>
,SelfDeclaringScalar<S>
,AccessScalar<S>
,Tensor<S,
,Scalar<S>> NumberContext.Enforceable<S>
,NumberDefinition
public abstract class ExactDecimal<S extends ExactDecimal<S>>
extends Object
implements SelfDeclaringScalar<S>
To help implement exact decimal numbers with a fixed number of decimal places (fixed scale).
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
static interface
ExactDecimal.Factory<S extends ExactDecimal<S>>
Nested classes/interfaces inherited from interface org.ojalgo.algebra.Group
Group.Additive<T>, Group.Multiplicative<T>
Nested classes/interfaces inherited from interface org.ojalgo.algebra.Operation
Operation.Addition<T>, Operation.Division<T>, Operation.Multiplication<T>, Operation.Subtraction<T>
Nested classes/interfaces inherited from interface org.ojalgo.algebra.ScalarOperation
ScalarOperation.Addition<T,
N extends Comparable<N>>, ScalarOperation.Division<T, N extends Comparable<N>>, ScalarOperation.Multiplication<T, N extends Comparable<N>>, ScalarOperation.Subtraction<T, N extends Comparable<N>> -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal S
add
(double scalarAddend) final S
final int
final S
This method will (most likely) be moved to some other interface in the future! Just have to figure out where it fits...protected abstract ExactDecimal.Descriptor
final S
divide
(double scalarDivisor) final S
final double
final S
enforce
(NumberContext context) protected static long
extractUnscaledValue
(BigDecimal decimal, NumberContext cntxt) final float
final S
get()
final int
intValue()
final S
invert()
The multiplicative inverse.final boolean
final boolean
isSmall
(double comparedTo) final long
final S
multiply
(double scalarMultiplicand) final S
final S
negate()
The additive inverse of this.final double
norm()
this == this.signum().multiply(this.norm())
(package private) final long
power
(int power) Multiply by itselfpower
times.final S
signum()
this == this.signum().multiply(this.norm())
final S
subtract
(double scalarSubtrahend) final S
final BigDecimal
private final BigDecimal
toBigDecimal
(NumberContext context) final String
toString()
final String
toString
(NumberContext context) protected abstract S
wrap
(long numerator) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.ojalgo.type.NumberDefinition
booleanValue, byteValue, shortValue
Methods inherited from interface org.ojalgo.scalar.Scalar
add, dimensions, divide, multiply, rank, subtract, toPlainString
Methods inherited from interface org.ojalgo.scalar.SelfDeclaringScalar
add, divide, multiply, subtract
Methods inherited from interface org.ojalgo.tensor.Tensor
components, isSameShape
-
Field Details
-
myDecimal
-
myNumerator
private final long myNumerator
-
-
Constructor Details
-
ExactDecimal
protected ExactDecimal(long numerator)
-
-
Method Details
-
extractUnscaledValue
-
add
- Specified by:
add
in interfaceScalarOperation.Addition<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>> - Specified by:
add
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Returns:
this + scalarAddend
.
-
add
- Specified by:
add
in interfaceScalarOperation.Addition<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>> - Specified by:
add
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Returns:
this + scalarAddend
.
-
compareTo
- Specified by:
compareTo
in interfaceComparable<S extends ExactDecimal<S>>
-
conjugate
Description copied from interface:VectorSpace
This method will (most likely) be moved to some other interface in the future! Just have to figure out where it fits...
The conjugate transpose of a matrix and/or the conjugate of a scalar/field like ComplexNumber or Quaternion.
The conjugate transpose of a real matrix is simply its transpose.
- Specified by:
conjugate
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Specified by:
conjugate
in interfaceVectorSpace<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>>
-
divide
- Specified by:
divide
in interfaceScalarOperation.Division<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>> - Specified by:
divide
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Returns:
this / scalarDivisor
.
-
divide
- Specified by:
divide
in interfaceScalarOperation.Division<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>> - Specified by:
divide
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Returns:
this / scalarDivisor
.
-
doubleValue
public final double doubleValue()- Specified by:
doubleValue
in interfaceNumberDefinition
-
enforce
- Specified by:
enforce
in interfaceNumberContext.Enforceable<S extends ExactDecimal<S>>
-
floatValue
public final float floatValue()- Specified by:
floatValue
in interfaceNumberDefinition
-
get
- Specified by:
get
in interfaceAccessScalar<S extends ExactDecimal<S>>
-
intValue
public final int intValue()- Specified by:
intValue
in interfaceNumberDefinition
-
invert
Description copied from interface:Group.Multiplicative
The multiplicative inverse.- Specified by:
invert
in interfaceGroup.Multiplicative<S extends ExactDecimal<S>>
- Specified by:
invert
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Returns:
IDENTITY / this
.
-
isAbsolute
public final boolean isAbsolute()- Specified by:
isAbsolute
in interfaceScalar<S extends ExactDecimal<S>>
- Returns:
- true if this is equal to its own norm, modulus or absolute value (non-negative real part and no imaginary part); otherwise false.
- See Also:
-
isSmall
public final boolean isSmall(double comparedTo) - Specified by:
isSmall
in interfaceNormedVectorSpace<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>> - Parameters:
comparedTo
- What to compare with- Returns:
- true if this is small compared to the magnitude of the input reference value.
-
longValue
public final long longValue()- Specified by:
longValue
in interfaceNumberDefinition
-
multiply
- Specified by:
multiply
in interfaceScalarOperation.Multiplication<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>> - Specified by:
multiply
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Returns:
this * scalarMultiplicand
.
-
multiply
- Specified by:
multiply
in interfaceScalarOperation.Multiplication<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>> - Specified by:
multiply
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Returns:
this * multiplicand
.
-
negate
Description copied from interface:Group.Additive
The additive inverse of this.- Specified by:
negate
in interfaceGroup.Additive<S extends ExactDecimal<S>>
- Specified by:
negate
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Returns:
-this
.
-
norm
public final double norm()Description copied from interface:NormedVectorSpace
this == this.signum().multiply(this.norm())
- Specified by:
norm
in interfaceNormedVectorSpace<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>> - Returns:
- The norm
-
power
Description copied from interface:Operation.Multiplication
Multiply by itselfpower
times.- Specified by:
power
in interfaceOperation.Multiplication<S extends ExactDecimal<S>>
- Specified by:
power
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
-
signum
Description copied from interface:NormedVectorSpace
this == this.signum().multiply(this.norm())
- Specified by:
signum
in interfaceNormedVectorSpace<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>> - Specified by:
signum
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Returns:
- A unit "vector"
-
subtract
- Specified by:
subtract
in interfaceScalarOperation.Subtraction<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>> - Specified by:
subtract
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Returns:
this - scalarSubtrahend
.
-
subtract
- Specified by:
subtract
in interfaceScalarOperation.Subtraction<Scalar<S extends ExactDecimal<S>>,
S extends ExactDecimal<S>> - Specified by:
subtract
in interfaceSelfDeclaringScalar<S extends ExactDecimal<S>>
- Returns:
this - scalarSubtrahend
.
-
toBigDecimal
- Specified by:
toBigDecimal
in interfaceScalar<S extends ExactDecimal<S>>
-
toString
-
toString
- Specified by:
toString
in interfaceScalar<S extends ExactDecimal<S>>
-
toBigDecimal
-
descriptor
-
wrap
-
numerator
final long numerator()
-