Package edu.jas.arith
Class BigDecimal
java.lang.Object
edu.jas.arith.BigDecimal
- All Implemented Interfaces:
Rational
,AbelianGroupElem<BigDecimal>
,AbelianGroupFactory<BigDecimal>
,Element<BigDecimal>
,ElemFactory<BigDecimal>
,GcdRingElem<BigDecimal>
,MonoidElem<BigDecimal>
,MonoidFactory<BigDecimal>
,RingElem<BigDecimal>
,RingFactory<BigDecimal>
,Serializable
,Comparable<BigDecimal>
public final class BigDecimal
extends Object
implements GcdRingElem<BigDecimal>, RingFactory<BigDecimal>, Rational
BigDecimal class to make java.math.BigDecimal available with RingElem
interface. Objects of this class are immutable. Experimental, use with care,
compareTo is some times hacked.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionfinal MathContext
static final MathContext
static final int
static final boolean
If true, then use equals from java.math.BigDecimal, else use hacked approximate compareTo().static final BigDecimal
The constant 1.private static final Random
final BigDecimal
The data structure.static final BigDecimal
The constant 0. -
Constructor Summary
ConstructorsConstructorDescriptionConstructor for BigDecimal without parameters.BigDecimal
(double a) Constructor for BigDecimal from double.BigDecimal
(double a, MathContext mc) Constructor for BigDecimal from double and a context.BigDecimal
(long a) Constructor for BigDecimal from long.BigDecimal
(long a, MathContext mc) Constructor for BigDecimal from long and a context.Constructor for BigDecimal from BigRational.BigDecimal
(BigRational a, MathContext mc) Constructor for BigDecimal from BigRational.BigDecimal
(String s) Constructor for BigDecimal from String.BigDecimal
(String s, MathContext mc) Constructor for BigDecimal from String.Constructor for BigDecimal from math.BigDecimal.BigDecimal
(BigDecimal a, MathContext mc) Constructor for BigDecimal from math.BigDecimal.Constructor for BigDecimal from java.math.BigInteger.BigDecimal
(BigInteger a, MathContext mc) Constructor for BigDecimal from java.math.BigInteger. -
Method Summary
Modifier and TypeMethodDescriptionabs()
Absolute value of this.long
Returns the number of bits in the representation of this BigDecimal, including a sign bit.Characteristic of this ring.int
Compare to BigDecimal b.int
Compare absolute to BigDecimal b.int
Compare to relative BigDecimal b.copy()
Clone this.copy
(BigDecimal c) Copy BigDecimal element c.divide
(BigDecimal S) BigDecimal divide.double
Get this decimal as a double.egcd
(BigDecimal S) BigDecimal extended greatest common divisor.boolean
Comparison with any other object.factory()
Get the corresponding element factory.fromInteger
(long a) Get a BigDecimal element from long.Get a BigDecimal element from a math.BigDecimal.gcd
(BigDecimal S) BigDecimal greatest common divisor.Get a list of the generating elements.Get the decimal representation.getONE()
Get the one element.Get the rational representation.getZERO()
Get the zero element.int
hashCode()
Hash code for this BigDecimal.inverse()
Integer inverse.boolean
Query if this ring is associative.boolean
Query if this ring is commutative.boolean
isField()
Query if this ring is a field.boolean
isFinite()
Is this structure finite or infinite.boolean
isONE()
Is BigDecimal number one.boolean
isUnit()
Is BigDecimal number unit.boolean
isZERO()
Is BigDecimal number zero.BigDecimal multiply.negate()
Negate this.BigDecimal parse from Reader.BigDecimal parse from String.BigDecimal compute quotient and remainder.random
(int n) BigDecimal random.random
(int n, int e) BigDecimal random.BigDecimal random.BigDecimal random.BigDecimal remainder.int
signum()
signum.BigDecimal subtract.sum
(BigDecimal S) BigDecimal summation.toScript()
Get a scripting compatible string representation.Get a scripting compatible string representation of the factory.toString()
Get the String representation.static BigDecimal
valueOf
(long a) Get a BigDecimal element from long.static BigDecimal
Get a BigDecimal element from a math.BigDecimal.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface edu.jas.structure.ElemFactory
valueOf
Methods inherited from interface edu.jas.structure.MonoidElem
leftDivide, leftRemainder, power, rightDivide, rightRemainder, twosidedDivide, twosidedRemainder
-
Field Details
-
val
The data structure. -
context
-
DEFAULT_CONTEXT
-
DEFAULT_PRECISION
public static final int DEFAULT_PRECISION -
random
-
EXACT_EQUAL
public static final boolean EXACT_EQUALIf true, then use equals from java.math.BigDecimal, else use hacked approximate compareTo().- See Also:
-
ZERO
The constant 0. -
ONE
The constant 1.
-
-
Constructor Details
-
BigDecimal
Constructor for BigDecimal from math.BigDecimal.- Parameters:
a
- java.math.BigDecimal.
-
BigDecimal
Constructor for BigDecimal from math.BigDecimal.- Parameters:
a
- java.math.BigDecimal.mc
- MathContext.
-
BigDecimal
public BigDecimal(long a) Constructor for BigDecimal from long.- Parameters:
a
- long.
-
BigDecimal
Constructor for BigDecimal from long and a context.- Parameters:
a
- long.mc
- MathContext.
-
BigDecimal
public BigDecimal(double a) Constructor for BigDecimal from double.- Parameters:
a
- double.
-
BigDecimal
Constructor for BigDecimal from double and a context.- Parameters:
a
- double.mc
- MathContext.
-
BigDecimal
Constructor for BigDecimal from java.math.BigInteger.- Parameters:
a
- java.math.BigInteger.
-
BigDecimal
Constructor for BigDecimal from java.math.BigInteger.- Parameters:
a
- java.math.BigInteger.mc
- MathContext.
-
BigDecimal
Constructor for BigDecimal from BigRational.- Parameters:
a
- edu.jas.arith.BigRational.
-
BigDecimal
Constructor for BigDecimal from BigRational.- Parameters:
a
- edu.jas.arith.BigRational.mc
- MathContext.
-
BigDecimal
Constructor for BigDecimal from String.- Parameters:
s
- String.
-
BigDecimal
Constructor for BigDecimal from String.- Parameters:
s
- String.mc
- MathContext.
-
BigDecimal
public BigDecimal()Constructor for BigDecimal without parameters.
-
-
Method Details
-
factory
Get the corresponding element factory.- Specified by:
factory
in interfaceElement<BigDecimal>
- Returns:
- factory for this Element.
- See Also:
-
generators
Get a list of the generating elements.- Specified by:
generators
in interfaceElemFactory<BigDecimal>
- Returns:
- list of generators for the algebraic structure.
- See Also:
-
isFinite
public boolean isFinite()Is this structure finite or infinite.- Specified by:
isFinite
in interfaceElemFactory<BigDecimal>
- Returns:
- true if this structure is finite, else false.
- See Also:
-
copy
Clone this.- Specified by:
copy
in interfaceElement<BigDecimal>
- Returns:
- Creates and returns a copy of this Element.
- See Also:
-
copy
Copy BigDecimal element c.- Specified by:
copy
in interfaceElemFactory<BigDecimal>
- Parameters:
c
- BigDecimal.- Returns:
- a copy of c.
-
getZERO
Get the zero element.- Specified by:
getZERO
in interfaceAbelianGroupFactory<BigDecimal>
- Returns:
- 0.
-
getONE
Get the one element.- Specified by:
getONE
in interfaceMonoidFactory<BigDecimal>
- Returns:
- 1.
-
getDecimal
Get the decimal representation.- Returns:
- decimal.
-
getRational
Get the rational representation.- Specified by:
getRational
in interfaceRational
- Returns:
- rational number.
-
isCommutative
public boolean isCommutative()Query if this ring is commutative.- Specified by:
isCommutative
in interfaceMonoidFactory<BigDecimal>
- Returns:
- true.
-
isAssociative
public boolean isAssociative()Query if this ring is associative. Floating point number addition is not associative, but multiplication is.- Specified by:
isAssociative
in interfaceMonoidFactory<BigDecimal>
- Returns:
- true.
-
isField
public boolean isField()Query if this ring is a field.- Specified by:
isField
in interfaceRingFactory<BigDecimal>
- Returns:
- true.
-
characteristic
Characteristic of this ring.- Specified by:
characteristic
in interfaceRingFactory<BigDecimal>
- Returns:
- characteristic of this ring.
-
fromInteger
Get a BigDecimal element from a math.BigDecimal.- Specified by:
fromInteger
in interfaceElemFactory<BigDecimal>
- Parameters:
a
- math.BigDecimal.- Returns:
- a as BigDecimal.
-
valueOf
Get a BigDecimal element from a math.BigDecimal.- Parameters:
a
- math.BigDecimal.- Returns:
- a as BigDecimal.
-
fromInteger
Get a BigDecimal element from long.- Specified by:
fromInteger
in interfaceElemFactory<BigDecimal>
- Parameters:
a
- long.- Returns:
- a as BigDecimal.
-
valueOf
Get a BigDecimal element from long.- Parameters:
a
- long.- Returns:
- a as BigDecimal.
-
isZERO
public boolean isZERO()Is BigDecimal number zero.- Specified by:
isZERO
in interfaceAbelianGroupElem<BigDecimal>
- Returns:
- If this is 0 then true is returned, else false.
- See Also:
-
isONE
public boolean isONE()Is BigDecimal number one.- Specified by:
isONE
in interfaceMonoidElem<BigDecimal>
- Returns:
- true if this is 1, else false.
- See Also:
-
isUnit
public boolean isUnit()Is BigDecimal number unit.- Specified by:
isUnit
in interfaceMonoidElem<BigDecimal>
- Returns:
- true if this is a unit, else false.
- See Also:
-
toString
Get the String representation. -
doubleValue
public double doubleValue()Get this decimal as a double.- Returns:
- the decimal as a double
- See Also:
-
toScript
Get a scripting compatible string representation.- Specified by:
toScript
in interfaceElement<BigDecimal>
- Specified by:
toScript
in interfaceElemFactory<BigDecimal>
- Returns:
- script compatible representation for this Element.
- See Also:
-
toScriptFactory
Get a scripting compatible string representation of the factory.- Specified by:
toScriptFactory
in interfaceElement<BigDecimal>
- Returns:
- script compatible representation for this ElemFactory.
- See Also:
-
compareTo
Compare to BigDecimal b. Experimental, is hacked.- Specified by:
compareTo
in interfaceComparable<BigDecimal>
- Specified by:
compareTo
in interfaceElement<BigDecimal>
- Parameters:
b
- BigDecimal.- Returns:
- 0 if abs(this-b) < epsilon, 1 if this > b, -1 if this < b.
-
compareToAbsolute
Compare absolute to BigDecimal b. Experimental, is hacked.- Parameters:
b
- BigDecimal.- Returns:
- 0 if abs(this-b) < epsilon, 1 if this > b, -1 if this < b.
-
compareToRelative
Compare to relative BigDecimal b. Experimental, is hacked.- Parameters:
b
- BigDecimal.- Returns:
- 0 if abs(this-b)/max(this,b) < epsilon, 1 if this > b, -1 if this < b.
-
equals
Comparison with any other object.- Specified by:
equals
in interfaceElement<BigDecimal>
- Overrides:
equals
in classObject
- Parameters:
b
-- Returns:
- true if this is equal to b, else false.
- See Also:
-
hashCode
public int hashCode()Hash code for this BigDecimal.- Specified by:
hashCode
in interfaceElement<BigDecimal>
- Overrides:
hashCode
in classObject
- Returns:
- the hashCode.
- See Also:
-
abs
Absolute value of this.- Specified by:
abs
in interfaceAbelianGroupElem<BigDecimal>
- Returns:
- |this|.
- See Also:
-
negate
Description copied from interface:AbelianGroupElem
Negate this.- Specified by:
negate
in interfaceAbelianGroupElem<BigDecimal>
- Returns:
- - this.
-
signum
public int signum()signum.- Specified by:
signum
in interfaceAbelianGroupElem<BigDecimal>
- Returns:
- the sign of this.
- See Also:
-
subtract
BigDecimal subtract.- Specified by:
subtract
in interfaceAbelianGroupElem<BigDecimal>
- Parameters:
S
- BigDecimal.- Returns:
- this-S.
-
divide
BigDecimal divide.- Specified by:
divide
in interfaceMonoidElem<BigDecimal>
- Parameters:
S
- BigDecimal.- Returns:
- this/S.
-
inverse
Integer inverse. R is a non-zero integer. S=1/R if defined else 0.- Specified by:
inverse
in interfaceMonoidElem<BigDecimal>
- Returns:
- x with this * x = 1, if it exists.
- See Also:
-
remainder
BigDecimal remainder.- Specified by:
remainder
in interfaceMonoidElem<BigDecimal>
- Parameters:
S
- BigDecimal.- Returns:
- this - (this/S)*S.
-
quotientRemainder
BigDecimal compute quotient and remainder.- Specified by:
quotientRemainder
in interfaceMonoidElem<BigDecimal>
- Parameters:
S
- BigDecimal.- Returns:
- BigDecimal[] { q, r } with q = this/S and r = rem(this,S).
-
gcd
BigDecimal greatest common divisor.- Specified by:
gcd
in interfaceRingElem<BigDecimal>
- Parameters:
S
- BigDecimal.- Returns:
- gcd(this,S).
-
egcd
BigDecimal extended greatest common divisor.- Specified by:
egcd
in interfaceRingElem<BigDecimal>
- Parameters:
S
- BigDecimal.- Returns:
- [ gcd(this,S), a, b ] with a*this + b*S = gcd(this,S).
-
random
BigDecimal random.- Specified by:
random
in interfaceElemFactory<BigDecimal>
- Parameters:
n
- such that 0 ≤ val(r) ≤ (2n-1). 0 ≤ exp(r) ≤ (10-1).- Returns:
- r, a random BigDecimal.
-
random
BigDecimal random.- Specified by:
random
in interfaceElemFactory<BigDecimal>
- Parameters:
n
- such that 0 ≤ val(r) ≤ (2n-1). 0 ≤ exp(r) ≤ (10-1).rnd
- is a source for random bits.- Returns:
- r, a random BigDecimal.
-
random
BigDecimal random.- Parameters:
n
- such that 0 ≤ val(r) ≤ (2n-1).e
- such that 0 ≤ exp(r) ≤ (e-1).- Returns:
- r, a random BigDecimal.
-
random
BigDecimal random.- Parameters:
n
- such that 0 ≤ val(r) ≤ (2n-1).e
- such that 0 ≤ exp(r) ≤ (e-1).rnd
- is a source for random bits.- Returns:
- r, a random BigDecimal.
-
multiply
BigDecimal multiply.- Specified by:
multiply
in interfaceMonoidElem<BigDecimal>
- Parameters:
S
- BigDecimal.- Returns:
- this*S.
-
sum
BigDecimal summation.- Specified by:
sum
in interfaceAbelianGroupElem<BigDecimal>
- Parameters:
S
- BigDecimal.- Returns:
- this+S.
-
parse
BigDecimal parse from String.- Specified by:
parse
in interfaceElemFactory<BigDecimal>
- Parameters:
s
- String.- Returns:
- BigDecimal from s.
-
parse
BigDecimal parse from Reader.- Specified by:
parse
in interfaceElemFactory<BigDecimal>
- Parameters:
r
- Reader.- Returns:
- next BigDecimal from r.
-
bitLength
public long bitLength()Returns the number of bits in the representation of this BigDecimal, including a sign bit. For positive BigDecimal, this is equivalent toval.unscaledValue().bitLength()
.)- Returns:
- number of bits in the representation of this BigDecimal, including a sign bit.
-