Package org.ojalgo.scalar
Class RationalNumber
java.lang.Object
org.ojalgo.scalar.RationalNumber
- All Implemented Interfaces:
Comparable<RationalNumber>
,Field<Scalar<RationalNumber>>
,Group
,Group.Additive<Scalar<RationalNumber>>
,Group.Multiplicative<Scalar<RationalNumber>>
,NormedVectorSpace<Scalar<RationalNumber>,
,RationalNumber> Operation
,Operation.Addition<Scalar<RationalNumber>>
,Operation.Division<Scalar<RationalNumber>>
,Operation.Multiplication<Scalar<RationalNumber>>
,Operation.Subtraction<Scalar<RationalNumber>>
,Ring<Scalar<RationalNumber>>
,ScalarOperation
,ScalarOperation.Addition<Scalar<RationalNumber>,
,RationalNumber> ScalarOperation.Division<Scalar<RationalNumber>,
,RationalNumber> ScalarOperation.Multiplication<Scalar<RationalNumber>,
,RationalNumber> ScalarOperation.Subtraction<Scalar<RationalNumber>,
,RationalNumber> VectorSpace<Scalar<RationalNumber>,
,RationalNumber> Scalar<RationalNumber>
,SelfDeclaringScalar<RationalNumber>
,AccessScalar<RationalNumber>
,Tensor<RationalNumber,
,Scalar<RationalNumber>> NumberContext.Enforceable<RationalNumber>
,NumberDefinition
-
Nested Class Summary
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.scalar.Scalar
Scalar.Factory<N extends Comparable<N>>
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
FieldsModifier and TypeFieldDescriptionprivate static final String
static final Scalar.Factory
<RationalNumber> private static final String
private static final int
static final RationalNumber
static final RationalNumber
private BigDecimal
private final long
private final long
static final RationalNumber
static final RationalNumber
static final RationalNumber
static final RationalNumber
static final RationalNumber
private static final String
private static final long
static final RationalNumber
static final RationalNumber
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionadd
(double arg) add
(RationalNumber arg) private static RationalNumber
add
(RationalNumber arg1, RationalNumber arg2) int
compareTo
(RationalNumber reference) This method will (most likely) be moved to some other interface in the future! Just have to figure out where it fits...divide
(double arg) divide
(RationalNumber arg) private static RationalNumber
divide
(RationalNumber arg1, RationalNumber arg2) double
enforce
(NumberContext context) boolean
float
private static RationalNumber
fromLong
(long d) private static long
gcd
(long a, long b) Greatest Common Denominatorget()
(package private) long
(package private) long
int
hashCode()
int
intValue()
invert()
The multiplicative inverse.boolean
static boolean
isAbsolute
(RationalNumber value) private boolean
static boolean
isInfinite
(RationalNumber value) private boolean
isNaN()
static boolean
isNaN
(RationalNumber value) boolean
isSmall
(double comparedTo) static boolean
isSmall
(double comparedTo, RationalNumber value) long
multiply
(double arg) multiply
(RationalNumber arg) private static RationalNumber
multiply
(RationalNumber arg1, RationalNumber arg2) negate()
The additive inverse of this.double
norm()
this == this.signum().multiply(this.norm())
static RationalNumber
of
(long numerator, long denominator) private static RationalNumber
of
(BigInteger numer, BigInteger denom) static RationalNumber
parse
(CharSequence plainNumberString) power
(int power) Multiply by itselfpower
times.static RationalNumber
rational
(double d) private static RationalNumber
rational
(double d, double error, int depthLimit) private int
sign()
signum()
this == this.signum().multiply(this.norm())
private long
size()
subtract
(double arg) subtract
(RationalNumber arg) private static RationalNumber
subtract
(RationalNumber arg1, RationalNumber arg2) private BigDecimal
toBigDecimal
(MathContext context) toString()
private static String
toString
(RationalNumber aNmbr) toString
(NumberContext context) static RationalNumber
valueOf
(double value) static RationalNumber
valueOf
(long value) static RationalNumber
valueOf
(Comparable<?> number) Methods inherited from class java.lang.Object
clone, finalize, getClass, 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
-
FACTORY
-
MAX_VALUE
-
MIN_VALUE
-
NaN
-
NEG
-
NEGATIVE_INFINITY
-
ONE
-
POSITIVE_INFINITY
-
TWO
-
ZERO
-
DIVIDE
- See Also:
-
LEFT
- See Also:
-
MAX_BITS
private static final int MAX_BITS -
RIGHT
- See Also:
-
SAFE_LIMIT
private static final long SAFE_LIMIT -
myDecimal
-
myDenominator
private final long myDenominator -
myNumerator
private final long myNumerator
-
-
Constructor Details
-
RationalNumber
public RationalNumber() -
RationalNumber
private RationalNumber(long numerator, long denominator)
-
-
Method Details
-
isAbsolute
-
isInfinite
-
isNaN
-
isSmall
-
of
-
parse
-
rational
-
valueOf
-
valueOf
-
valueOf
-
add
-
divide
-
fromLong
-
gcd
private static long gcd(long a, long b) Greatest Common DenominatorIt uses Python-style gcd, with the sign of gcd equal to sign of b; that enables us to simplify fractions in one step
-
multiply
-
of
-
rational
-
subtract
-
toString
-
add
- Specified by:
add
in interfaceScalarOperation.Addition<Scalar<RationalNumber>,
RationalNumber> - Specified by:
add
in interfaceSelfDeclaringScalar<RationalNumber>
- Returns:
this + scalarAddend
.
-
add
- Specified by:
add
in interfaceScalarOperation.Addition<Scalar<RationalNumber>,
RationalNumber> - Specified by:
add
in interfaceSelfDeclaringScalar<RationalNumber>
- Returns:
this + scalarAddend
.
-
compareTo
- Specified by:
compareTo
in interfaceComparable<RationalNumber>
-
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<RationalNumber>
- Specified by:
conjugate
in interfaceVectorSpace<Scalar<RationalNumber>,
RationalNumber>
-
divide
- Specified by:
divide
in interfaceScalarOperation.Division<Scalar<RationalNumber>,
RationalNumber> - Specified by:
divide
in interfaceSelfDeclaringScalar<RationalNumber>
- Returns:
this / scalarDivisor
.
-
divide
- Specified by:
divide
in interfaceScalarOperation.Division<Scalar<RationalNumber>,
RationalNumber> - Specified by:
divide
in interfaceSelfDeclaringScalar<RationalNumber>
- Returns:
this / scalarDivisor
.
-
doubleValue
public double doubleValue()- Specified by:
doubleValue
in interfaceNumberDefinition
-
enforce
- Specified by:
enforce
in interfaceNumberContext.Enforceable<RationalNumber>
-
equals
-
floatValue
public float floatValue()- Specified by:
floatValue
in interfaceNumberDefinition
-
get
- Specified by:
get
in interfaceAccessScalar<RationalNumber>
-
hashCode
public int hashCode() -
intValue
public int intValue()- Specified by:
intValue
in interfaceNumberDefinition
-
invert
Description copied from interface:Group.Multiplicative
The multiplicative inverse.- Specified by:
invert
in interfaceGroup.Multiplicative<Scalar<RationalNumber>>
- Specified by:
invert
in interfaceSelfDeclaringScalar<RationalNumber>
- Returns:
IDENTITY / this
.
-
isAbsolute
public boolean isAbsolute()- Specified by:
isAbsolute
in interfaceScalar<RationalNumber>
- 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 boolean isSmall(double comparedTo) - Specified by:
isSmall
in interfaceNormedVectorSpace<Scalar<RationalNumber>,
RationalNumber> - Parameters:
comparedTo
- What to compare with- Returns:
- true if this is small compared to the magnitude of the input reference value.
-
longValue
public long longValue()- Specified by:
longValue
in interfaceNumberDefinition
-
multiply
- Specified by:
multiply
in interfaceScalarOperation.Multiplication<Scalar<RationalNumber>,
RationalNumber> - Specified by:
multiply
in interfaceSelfDeclaringScalar<RationalNumber>
- Returns:
this * scalarMultiplicand
.
-
multiply
- Specified by:
multiply
in interfaceScalarOperation.Multiplication<Scalar<RationalNumber>,
RationalNumber> - Specified by:
multiply
in interfaceSelfDeclaringScalar<RationalNumber>
- Returns:
this * multiplicand
.
-
negate
Description copied from interface:Group.Additive
The additive inverse of this.- Specified by:
negate
in interfaceGroup.Additive<Scalar<RationalNumber>>
- Specified by:
negate
in interfaceSelfDeclaringScalar<RationalNumber>
- Returns:
-this
.
-
norm
public double norm()Description copied from interface:NormedVectorSpace
this == this.signum().multiply(this.norm())
- Specified by:
norm
in interfaceNormedVectorSpace<Scalar<RationalNumber>,
RationalNumber> - Returns:
- The norm
-
power
Description copied from interface:Operation.Multiplication
Multiply by itselfpower
times.- Specified by:
power
in interfaceOperation.Multiplication<Scalar<RationalNumber>>
- Specified by:
power
in interfaceSelfDeclaringScalar<RationalNumber>
-
signum
Description copied from interface:NormedVectorSpace
this == this.signum().multiply(this.norm())
- Specified by:
signum
in interfaceNormedVectorSpace<Scalar<RationalNumber>,
RationalNumber> - Specified by:
signum
in interfaceSelfDeclaringScalar<RationalNumber>
- Returns:
- A unit "vector"
-
subtract
- Specified by:
subtract
in interfaceScalarOperation.Subtraction<Scalar<RationalNumber>,
RationalNumber> - Specified by:
subtract
in interfaceSelfDeclaringScalar<RationalNumber>
- Returns:
this - scalarSubtrahend
.
-
subtract
- Specified by:
subtract
in interfaceScalarOperation.Subtraction<Scalar<RationalNumber>,
RationalNumber> - Specified by:
subtract
in interfaceSelfDeclaringScalar<RationalNumber>
- Returns:
this - scalarSubtrahend
.
-
toBigDecimal
- Specified by:
toBigDecimal
in interfaceScalar<RationalNumber>
-
toString
-
toString
- Specified by:
toString
in interfaceScalar<RationalNumber>
-
isInfinite
private boolean isInfinite() -
isNaN
private boolean isNaN() -
sign
private int sign() -
size
private long size() -
toBigDecimal
-
getDenominator
long getDenominator() -
getNumerator
long getNumerator()
-