Package edu.jas.arith
Class BigQuaternion
- java.lang.Object
-
- edu.jas.arith.BigQuaternion
-
- All Implemented Interfaces:
AbelianGroupElem<BigQuaternion>,Element<BigQuaternion>,GcdRingElem<BigQuaternion>,MonoidElem<BigQuaternion>,RingElem<BigQuaternion>,StarRingElem<BigQuaternion>,java.io.Serializable,java.lang.Comparable<BigQuaternion>
- Direct Known Subclasses:
BigQuaternionInteger
public class BigQuaternion extends java.lang.Object implements StarRingElem<BigQuaternion>, GcdRingElem<BigQuaternion>
BigQuaternion class based on BigRational implementing the RingElem interface and with the familiar MAS static method names. Objects of this class are immutable. The integer quaternion methods are implemented after https://de.wikipedia.org/wiki/Hurwitzquaternion see also https://en.wikipedia.org/wiki/Hurwitz_quaternion- Author:
- Heinz Kredel
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description BigRationalimImaginary part i of the data structure.BigRationaljmImaginary part j of the data structure.BigRationalkmImaginary part k of the data structure.protected static java.util.RandomrandomBigRationalreReal part of the data structure.BigQuaternionRingringCorresponding BigQuaternion ring.
-
Constructor Summary
Constructors Constructor Description BigQuaternion(BigQuaternionRing fac)Constructor for a BigQuaternion with no arguments.BigQuaternion(BigQuaternionRing fac, long r)Constructor for a BigQuaternion from long.BigQuaternion(BigQuaternionRing fac, BigComplex r)Constructor for a BigQuaternion from BigComplex.BigQuaternion(BigQuaternionRing fac, BigRational r)Constructor for a BigQuaternion from BigRationals.BigQuaternion(BigQuaternionRing fac, BigRational r, BigRational i)Constructor for a BigQuaternion from BigRationals.BigQuaternion(BigQuaternionRing fac, BigRational r, BigRational i, BigRational j)Constructor for a BigQuaternion from BigRationals.BigQuaternion(BigQuaternionRing fac, BigRational r, BigRational i, BigRational j, BigRational k)Constructor for a BigQuaternion from BigRationals.BigQuaternion(BigQuaternionRing fac, java.lang.String s)The BigQuaternion string constructor accepts the following formats: empty string, "rational", or "rat i rat j rat k rat" with no blanks around i, j or k if used as polynoial coefficient.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description BigQuaternionabs()Quaternion number absolute value.longbitLength()Returns the number of bits in the representation of this BigQuaternion, including a sign bit.BigQuaternionceil()BigQuaternion ceiling, component wise.intcompareTo(BigQuaternion b)Since quaternion numbers are unordered, we use lexicographical order of re, im, jm and km.BigQuaternionconjugate()BigQuaternion conjugate.BigQuaternioncopy()Clone this.BigQuaterniondivide(BigQuaternion b)BigQuaternion right divide.BigQuaterniondivide(BigRational b)BigQuaternion divide.BigQuaternion[]egcd(BigQuaternion S)BigQuaternion extended greatest common divisor.booleanequals(java.lang.Object b)Comparison with any other object.BigQuaternionRingfactory()Get the corresponding element factory.BigQuaternionfloor()BigQuaternion floor, component wise.BigQuaterniongcd(BigQuaternion S)Quaternion number greatest common divisor.BigRationalgetIm()Get the imaginary part im.BigRationalgetJm()Get the imaginary part jm.BigRationalgetKm()Get the imaginary part km.BigRationalgetRe()Get the real part.inthashCode()Hash code for this BigQuaternion.BigQuaternioninverse()BigQuaternion inverse.booleanisEntier()Is BigQuaternion entier element.booleanisIMAG()Is BigQuaternion imaginary one.booleanisONE()Is BigQuaternion number one.static booleanisQONE(BigQuaternion A)Is BigQuaternion number one.static booleanisQZERO(BigQuaternion A)Is Quaternion number zero.booleanisUnit()Is BigQuaternion unit element.booleanisZERO()Is BigQuaternion number zero.BigQuaternionleftDivide(BigQuaternion b)BigQuaternion left divide.BigQuaternionleftGcd(BigQuaternion S)Quaternion number greatest common divisor.BigQuaternionmultiply(BigQuaternion B)BigQuaternion multiply.BigQuaternionmultiply(BigRational b)BigQuaternion multiply with BigRational.BigQuaternionnegate()BigQuaternion number negative.BigQuaternionnorm()Quaternion number norm.static BigRationalQABS(BigQuaternion A)Quaternion number absolute value.static BigQuaternionQCON(BigQuaternion A)Quaternion number conjugate.static BigQuaternionQDIF(BigQuaternion A, BigQuaternion B)Quaternion number difference.static BigQuaternionQINV(BigQuaternion A)Quaternion number inverse.static BigQuaternionQNEG(BigQuaternion A)Quaternion number negative.static BigQuaternionQPROD(BigQuaternion A, BigQuaternion B)Quaternion number product.static BigQuaternionQQ(BigQuaternion A, BigQuaternion B)Quaternion number quotient.static BigQuaternionQSUM(BigQuaternion A, BigQuaternion B)Quaternion number sum.BigQuaternion[]quotientRemainder(BigQuaternion S)Quotient and remainder by division of this by S.BigQuaternionremainder(BigQuaternion S)BigQuaternion remainder.BigQuaternionrightDivide(BigQuaternion b)BigQuaternion right divide.BigQuaternionrightGcd(BigQuaternion S)Quaternion number greatest common divisor.BigQuaternionIntegerroundToHurwitzian()BigQuaternion round to next Hurwitz integer.BigQuaternionIntegerroundToLipschitzian()BigQuaternion round to next Lipschitz integer.intsignum()Since quaternion numbers are unordered, we use lexicographical order of re, im, jm and km.BigQuaternionsubtract(BigQuaternion B)BigQuaternion subtraction.BigQuaternionsum(BigQuaternion B)BigQuaternion summation.java.lang.StringtoScript()Get a scripting compatible string representation.java.lang.StringtoScriptFactory()Get a scripting compatible string representation of the factory.java.lang.StringtoString()Get the string representation.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface edu.jas.structure.MonoidElem
leftRemainder, power, rightRemainder, twosidedDivide, twosidedRemainder
-
-
-
-
Field Detail
-
re
public final BigRational re
Real part of the data structure.
-
im
public final BigRational im
Imaginary part i of the data structure.
-
jm
public final BigRational jm
Imaginary part j of the data structure.
-
km
public final BigRational km
Imaginary part k of the data structure.
-
ring
public final BigQuaternionRing ring
Corresponding BigQuaternion ring.
-
random
protected static final java.util.Random random
-
-
Constructor Detail
-
BigQuaternion
public BigQuaternion(BigQuaternionRing fac, BigRational r, BigRational i, BigRational j, BigRational k)
Constructor for a BigQuaternion from BigRationals.- Parameters:
fac- BigQuaternionRing.r- BigRational.i- BigRational.j- BigRational.k- BigRational.
-
BigQuaternion
public BigQuaternion(BigQuaternionRing fac, BigRational r, BigRational i, BigRational j)
Constructor for a BigQuaternion from BigRationals.- Parameters:
fac- BigQuaternionRing.r- BigRational.i- BigRational.j- BigRational.
-
BigQuaternion
public BigQuaternion(BigQuaternionRing fac, BigRational r, BigRational i)
Constructor for a BigQuaternion from BigRationals.- Parameters:
fac- BigQuaternionRing.r- BigRational.i- BigRational.
-
BigQuaternion
public BigQuaternion(BigQuaternionRing fac, BigRational r)
Constructor for a BigQuaternion from BigRationals.- Parameters:
fac- BigQuaternionRing.r- BigRational.
-
BigQuaternion
public BigQuaternion(BigQuaternionRing fac, BigComplex r)
Constructor for a BigQuaternion from BigComplex.- Parameters:
fac- BigQuaternionRing.r- BigComplex.
-
BigQuaternion
public BigQuaternion(BigQuaternionRing fac, long r)
Constructor for a BigQuaternion from long.- Parameters:
fac- BigQuaternionRing.r- long.
-
BigQuaternion
public BigQuaternion(BigQuaternionRing fac)
Constructor for a BigQuaternion with no arguments.- Parameters:
fac- BigQuaternionRing.
-
BigQuaternion
public BigQuaternion(BigQuaternionRing fac, java.lang.String s) throws java.lang.NumberFormatException
The BigQuaternion string constructor accepts the following formats: empty string, "rational", or "rat i rat j rat k rat" with no blanks around i, j or k if used as polynoial coefficient.- Parameters:
fac- BigQuaternionRing.s- String.- Throws:
java.lang.NumberFormatException
-
-
Method Detail
-
factory
public BigQuaternionRing factory()
Get the corresponding element factory.- Specified by:
factoryin interfaceElement<BigQuaternion>- Returns:
- factory for this Element.
- See Also:
Element.factory()
-
copy
public BigQuaternion copy()
Clone this.- Specified by:
copyin interfaceElement<BigQuaternion>- Returns:
- Creates and returns a copy of this Element.
- See Also:
Object.clone()
-
getRe
public BigRational getRe()
Get the real part.- Returns:
- re.
-
getIm
public BigRational getIm()
Get the imaginary part im.- Returns:
- im.
-
getJm
public BigRational getJm()
Get the imaginary part jm.- Returns:
- jm.
-
getKm
public BigRational getKm()
Get the imaginary part km.- Returns:
- km.
-
toString
public java.lang.String toString()
Get the string representation. Is compatible with the string constructor.- Overrides:
toStringin classjava.lang.Object- See Also:
Object.toString()
-
toScript
public java.lang.String toScript()
Get a scripting compatible string representation.- Specified by:
toScriptin interfaceElement<BigQuaternion>- Returns:
- script compatible representation for this Element.
- See Also:
Element.toScript()
-
toScriptFactory
public java.lang.String toScriptFactory()
Get a scripting compatible string representation of the factory.- Specified by:
toScriptFactoryin interfaceElement<BigQuaternion>- Returns:
- script compatible representation for this ElemFactory.
- See Also:
Element.toScriptFactory()
-
isQZERO
public static boolean isQZERO(BigQuaternion A)
Is Quaternion number zero.- Parameters:
A- BigQuaternion.- Returns:
- true if A is 0, else false.
-
isZERO
public boolean isZERO()
Is BigQuaternion number zero.- Specified by:
isZEROin interfaceAbelianGroupElem<BigQuaternion>- Returns:
- true if this is 0, else false.
- See Also:
AbelianGroupElem.isZERO()
-
isQONE
public static boolean isQONE(BigQuaternion A)
Is BigQuaternion number one.- Parameters:
A- is a quaternion number.- Returns:
- true if A is 1, else false.
-
isONE
public boolean isONE()
Is BigQuaternion number one.- Specified by:
isONEin interfaceMonoidElem<BigQuaternion>- Returns:
- true if this is 1, else false.
- See Also:
MonoidElem.isONE()
-
isIMAG
public boolean isIMAG()
Is BigQuaternion imaginary one.- Returns:
- true if this is i, else false.
-
isUnit
public boolean isUnit()
Is BigQuaternion unit element.- Specified by:
isUnitin interfaceMonoidElem<BigQuaternion>- Returns:
- If this is a unit then true is returned, else false.
- See Also:
MonoidElem.isUnit()
-
isEntier
public boolean isEntier()
Is BigQuaternion entier element.- Returns:
- If this is an integer Hurwitz element then true is returned, else false.
-
equals
public boolean equals(java.lang.Object b)
Comparison with any other object.- Specified by:
equalsin interfaceElement<BigQuaternion>- Overrides:
equalsin classjava.lang.Object- Returns:
- true if this is equal to b, else false.
- See Also:
Object.equals(java.lang.Object)
-
hashCode
public int hashCode()
Hash code for this BigQuaternion.- Specified by:
hashCodein interfaceElement<BigQuaternion>- Overrides:
hashCodein classjava.lang.Object- Returns:
- the hashCode.
- See Also:
Object.hashCode()
-
compareTo
public int compareTo(BigQuaternion b)
Since quaternion numbers are unordered, we use lexicographical order of re, im, jm and km.- Specified by:
compareToin interfacejava.lang.Comparable<BigQuaternion>- Specified by:
compareToin interfaceElement<BigQuaternion>- Parameters:
b- BigQuaternion.- Returns:
- 0 if b is equal to this, 1 if this is greater b and -1 else.
-
signum
public int signum()
Since quaternion numbers are unordered, we use lexicographical order of re, im, jm and km.- Specified by:
signumin interfaceAbelianGroupElem<BigQuaternion>- Returns:
- 0 if this is equal to 0; 1 if re > 0, or re == 0 and im > 0, or ...; -1 if re < 0, or re == 0 and im < 0, or ...
- See Also:
AbelianGroupElem.signum()
-
sum
public BigQuaternion sum(BigQuaternion B)
BigQuaternion summation.- Specified by:
sumin interfaceAbelianGroupElem<BigQuaternion>- Parameters:
B- BigQuaternion.- Returns:
- this+B.
-
QSUM
public static BigQuaternion QSUM(BigQuaternion A, BigQuaternion B)
Quaternion number sum.- Parameters:
A- BigQuaternion.B- BigQuaternion.- Returns:
- A+B.
-
QDIF
public static BigQuaternion QDIF(BigQuaternion A, BigQuaternion B)
Quaternion number difference.- Parameters:
A- BigQuaternion.B- BigQuaternion.- Returns:
- A-B.
-
subtract
public BigQuaternion subtract(BigQuaternion B)
BigQuaternion subtraction.- Specified by:
subtractin interfaceAbelianGroupElem<BigQuaternion>- Parameters:
B- BigQuaternion.- Returns:
- this-B.
-
QNEG
public static BigQuaternion QNEG(BigQuaternion A)
Quaternion number negative.- Parameters:
A- is a quaternion number- Returns:
- -A.
-
negate
public BigQuaternion negate()
BigQuaternion number negative.- Specified by:
negatein interfaceAbelianGroupElem<BigQuaternion>- Returns:
- -this.
- See Also:
AbelianGroupElem.negate()
-
QCON
public static BigQuaternion QCON(BigQuaternion A)
Quaternion number conjugate.- Parameters:
A- is a quaternion number.- Returns:
- the quaternion conjugate of A.
-
conjugate
public BigQuaternion conjugate()
BigQuaternion conjugate.- Specified by:
conjugatein interfaceStarRingElem<BigQuaternion>- Returns:
- conjugate(this).
-
norm
public BigQuaternion norm()
Quaternion number norm.- Specified by:
normin interfaceStarRingElem<BigQuaternion>- Returns:
- ||this||.
- See Also:
StarRingElem.norm()
-
abs
public BigQuaternion abs()
Quaternion number absolute value.- Specified by:
absin interfaceAbelianGroupElem<BigQuaternion>- Returns:
- |this|.
- See Also:
AbelianGroupElem.abs()
-
QABS
public static BigRational QABS(BigQuaternion A)
Quaternion number absolute value.- Parameters:
A- is a quaternion number.- Returns:
- the absolute value of A, a rational number. Note: The square root is not jet implemented.
-
QPROD
public static BigQuaternion QPROD(BigQuaternion A, BigQuaternion B)
Quaternion number product.- Parameters:
A- BigQuaternion.B- BigQuaternion.- Returns:
- A*B.
-
multiply
public BigQuaternion multiply(BigRational b)
BigQuaternion multiply with BigRational.- Parameters:
b- BigRational.- Returns:
- this*b.
-
multiply
public BigQuaternion multiply(BigQuaternion B)
BigQuaternion multiply.- Specified by:
multiplyin interfaceMonoidElem<BigQuaternion>- Parameters:
B- BigQuaternion.- Returns:
- this*B.
-
QINV
public static BigQuaternion QINV(BigQuaternion A)
Quaternion number inverse.- Parameters:
A- is a non-zero quaternion number.- Returns:
- S with S * A = A * S = 1.
-
inverse
public BigQuaternion inverse()
BigQuaternion inverse.- Specified by:
inversein interfaceMonoidElem<BigQuaternion>- Returns:
- S with S * this = this * S = 1.
- See Also:
MonoidElem.inverse()
-
remainder
public BigQuaternion remainder(BigQuaternion S)
BigQuaternion remainder.- Specified by:
remainderin interfaceMonoidElem<BigQuaternion>- Parameters:
S- BigQuaternion.- Returns:
- 0.
-
QQ
public static BigQuaternion QQ(BigQuaternion A, BigQuaternion B)
Quaternion number quotient.- Parameters:
A- BigQuaternion.B- BigQuaternion.- Returns:
- R/S.
-
divide
public BigQuaternion divide(BigQuaternion b)
BigQuaternion right divide.- Specified by:
dividein interfaceMonoidElem<BigQuaternion>- Parameters:
b- BigQuaternion.- Returns:
- this * b**(-1).
-
rightDivide
public BigQuaternion rightDivide(BigQuaternion b)
BigQuaternion right divide.- Specified by:
rightDividein interfaceMonoidElem<BigQuaternion>- Parameters:
b- BigQuaternion.- Returns:
- this * b**(-1).
-
leftDivide
public BigQuaternion leftDivide(BigQuaternion b)
BigQuaternion left divide.- Specified by:
leftDividein interfaceMonoidElem<BigQuaternion>- Parameters:
b- BigQuaternion.- Returns:
- b**(-1) * this.
-
divide
public BigQuaternion divide(BigRational b)
BigQuaternion divide.- Parameters:
b- BigRational.- Returns:
- this/b.
-
quotientRemainder
public BigQuaternion[] quotientRemainder(BigQuaternion S)
Quotient and remainder by division of this by S.- Specified by:
quotientRemainderin interfaceMonoidElem<BigQuaternion>- Parameters:
S- a quaternion number- Returns:
- [this*S**(-1), this - (this*S**(-1))*S].
-
gcd
public BigQuaternion gcd(BigQuaternion S)
Quaternion number greatest common divisor.- Specified by:
gcdin interfaceRingElem<BigQuaternion>- Parameters:
S- BigQuaternion.- Returns:
- gcd(this,S).
-
leftGcd
public BigQuaternion leftGcd(BigQuaternion S)
Quaternion number greatest common divisor.- Specified by:
leftGcdin interfaceRingElem<BigQuaternion>- Parameters:
S- BigQuaternion.- Returns:
- leftCcd(this,S).
-
rightGcd
public BigQuaternion rightGcd(BigQuaternion S)
Quaternion number greatest common divisor.- Specified by:
rightGcdin interfaceRingElem<BigQuaternion>- Parameters:
S- BigQuaternion.- Returns:
- rightCcd(this,S).
-
egcd
public BigQuaternion[] egcd(BigQuaternion S)
BigQuaternion extended greatest common divisor.- Specified by:
egcdin interfaceRingElem<BigQuaternion>- Parameters:
S- BigQuaternion.- Returns:
- [ gcd(this,S), a, b ] with a*this + b*S = gcd(this,S).
-
bitLength
public long bitLength()
Returns the number of bits in the representation of this BigQuaternion, including a sign bit. It is equivalent tore.bitLength()+im.bitLength()+jm.bitLength()+km.bitLength().)- Returns:
- number of bits in the representation of this BigQuaternion, including a sign bit.
-
ceil
public BigQuaternion ceil()
BigQuaternion ceiling, component wise.- Returns:
- ceiling of this.
-
floor
public BigQuaternion floor()
BigQuaternion floor, component wise.- Returns:
- floor of this.
-
roundToLipschitzian
public BigQuaternionInteger roundToLipschitzian()
BigQuaternion round to next Lipschitz integer. BigQuaternion with all integer components.- Returns:
- Lipschitz integer of this.
-
roundToHurwitzian
public BigQuaternionInteger roundToHurwitzian()
BigQuaternion round to next Hurwitz integer. BigQuaternion with all integer or all 1/2 times integer components.- Returns:
- Hurwitz integer near this.
-
-