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 BigRational
im
Imaginary part i of the data structure.BigRational
jm
Imaginary part j of the data structure.BigRational
km
Imaginary part k of the data structure.protected static java.util.Random
random
BigRational
re
Real part of the data structure.BigQuaternionRing
ring
Corresponding 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 BigQuaternion
abs()
Quaternion number absolute value.long
bitLength()
Returns the number of bits in the representation of this BigQuaternion, including a sign bit.BigQuaternion
ceil()
BigQuaternion ceiling, component wise.int
compareTo(BigQuaternion b)
Since quaternion numbers are unordered, we use lexicographical order of re, im, jm and km.BigQuaternion
conjugate()
BigQuaternion conjugate.BigQuaternion
copy()
Clone this.BigQuaternion
divide(BigQuaternion b)
BigQuaternion right divide.BigQuaternion
divide(BigRational b)
BigQuaternion divide.BigQuaternion[]
egcd(BigQuaternion S)
BigQuaternion extended greatest common divisor.boolean
equals(java.lang.Object b)
Comparison with any other object.BigQuaternionRing
factory()
Get the corresponding element factory.BigQuaternion
floor()
BigQuaternion floor, component wise.BigQuaternion
gcd(BigQuaternion S)
Quaternion number greatest common divisor.BigRational
getIm()
Get the imaginary part im.BigRational
getJm()
Get the imaginary part jm.BigRational
getKm()
Get the imaginary part km.BigRational
getRe()
Get the real part.int
hashCode()
Hash code for this BigQuaternion.BigQuaternion
inverse()
BigQuaternion inverse.boolean
isEntier()
Is BigQuaternion entier element.boolean
isIMAG()
Is BigQuaternion imaginary one.boolean
isONE()
Is BigQuaternion number one.static boolean
isQONE(BigQuaternion A)
Is BigQuaternion number one.static boolean
isQZERO(BigQuaternion A)
Is Quaternion number zero.boolean
isUnit()
Is BigQuaternion unit element.boolean
isZERO()
Is BigQuaternion number zero.BigQuaternion
leftDivide(BigQuaternion b)
BigQuaternion left divide.BigQuaternion
leftGcd(BigQuaternion S)
Quaternion number greatest common divisor.BigQuaternion
leftRemainder(BigQuaternion S)
BigQuaternion left remainder.BigQuaternion
multiply(BigQuaternion B)
BigQuaternion multiply.BigQuaternion
multiply(BigRational b)
BigQuaternion multiply with BigRational.BigQuaternion
multiplyLeft(BigQuaternion B)
BigQuaternion multiply left.BigQuaternion
negate()
BigQuaternion number negative.BigQuaternion
norm()
Quaternion number norm.static BigRational
QABS(BigQuaternion A)
Quaternion number absolute value.static BigQuaternion
QCON(BigQuaternion A)
Quaternion number conjugate.static BigQuaternion
QDIF(BigQuaternion A, BigQuaternion B)
Quaternion number difference.static BigQuaternion
QINV(BigQuaternion A)
Quaternion number inverse.static BigQuaternion
QNEG(BigQuaternion A)
Quaternion number negative.static BigQuaternion
QPROD(BigQuaternion A, BigQuaternion B)
Quaternion number product.static BigQuaternion
QQ(BigQuaternion A, BigQuaternion B)
Quaternion number quotient.static BigQuaternion
QSUM(BigQuaternion A, BigQuaternion B)
Quaternion number sum.BigQuaternion[]
quotientRemainder(BigQuaternion S)
Quotient and remainder by division of this by S.BigQuaternion
remainder(BigQuaternion S)
BigQuaternion (right) remainder.BigQuaternion
rightDivide(BigQuaternion b)
BigQuaternion right divide.BigQuaternion
rightGcd(BigQuaternion S)
Quaternion number greatest common divisor.BigQuaternion
rightRemainder(BigQuaternion S)
BigQuaternion right remainder.BigQuaternionInteger
roundToHurwitzian()
BigQuaternion round to next Hurwitz integer.BigQuaternionInteger
roundToLipschitzian()
BigQuaternion round to next Lipschitz integer.int
signum()
Since quaternion numbers are unordered, we use lexicographical order of re, im, jm and km.BigQuaternion
subtract(BigQuaternion B)
BigQuaternion subtraction.BigQuaternion
sum(BigQuaternion B)
BigQuaternion summation.java.lang.String
toScript()
Get a scripting compatible string representation.java.lang.String
toScriptFactory()
Get a scripting compatible string representation of the factory.java.lang.String
toString()
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
power, 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:
factory
in interfaceElement<BigQuaternion>
- Returns:
- factory for this Element.
- See Also:
Element.factory()
-
copy
public BigQuaternion copy()
Clone this.- Specified by:
copy
in 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:
toString
in classjava.lang.Object
- See Also:
Object.toString()
-
toScript
public java.lang.String toScript()
Get a scripting compatible string representation.- Specified by:
toScript
in 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:
toScriptFactory
in 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:
isZERO
in 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:
isONE
in 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:
isUnit
in 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:
equals
in interfaceElement<BigQuaternion>
- Overrides:
equals
in 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:
hashCode
in interfaceElement<BigQuaternion>
- Overrides:
hashCode
in 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:
compareTo
in interfacejava.lang.Comparable<BigQuaternion>
- Specified by:
compareTo
in 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:
signum
in 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:
sum
in 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:
subtract
in 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:
negate
in 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:
conjugate
in interfaceStarRingElem<BigQuaternion>
- Returns:
- conjugate(this).
-
norm
public BigQuaternion norm()
Quaternion number norm.- Specified by:
norm
in interfaceStarRingElem<BigQuaternion>
- Returns:
- ||this||.
- See Also:
StarRingElem.norm()
-
abs
public BigQuaternion abs()
Quaternion number absolute value.- Specified by:
abs
in 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:
multiply
in interfaceMonoidElem<BigQuaternion>
- Parameters:
B
- BigQuaternion.- Returns:
- this*B.
-
multiplyLeft
public BigQuaternion multiplyLeft(BigQuaternion B)
BigQuaternion multiply left.- Parameters:
B
- BigQuaternion.- Returns:
- B*this.
-
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:
inverse
in interfaceMonoidElem<BigQuaternion>
- Returns:
- S with S * this = this * S = 1.
- See Also:
MonoidElem.inverse()
-
rightRemainder
public BigQuaternion rightRemainder(BigQuaternion S)
BigQuaternion right remainder.- Specified by:
rightRemainder
in interfaceMonoidElem<BigQuaternion>
- Parameters:
S
- BigQuaternion.- Returns:
- 0.
-
remainder
public BigQuaternion remainder(BigQuaternion S)
BigQuaternion (right) remainder.- Specified by:
remainder
in interfaceMonoidElem<BigQuaternion>
- Parameters:
S
- BigQuaternion.- Returns:
- 0.
-
leftRemainder
public BigQuaternion leftRemainder(BigQuaternion S)
BigQuaternion left remainder.- Specified by:
leftRemainder
in 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:
divide
in interfaceMonoidElem<BigQuaternion>
- Parameters:
b
- BigQuaternion.- Returns:
- this * b**(-1).
-
rightDivide
public BigQuaternion rightDivide(BigQuaternion b)
BigQuaternion right divide.- Specified by:
rightDivide
in interfaceMonoidElem<BigQuaternion>
- Parameters:
b
- BigQuaternion.- Returns:
- q = this * b**(-1), such that q * b = this.
-
leftDivide
public BigQuaternion leftDivide(BigQuaternion b)
BigQuaternion left divide.- Specified by:
leftDivide
in interfaceMonoidElem<BigQuaternion>
- Parameters:
b
- BigQuaternion.- Returns:
- q = b**(-1) * this, such that b * q = 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:
quotientRemainder
in 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:
gcd
in interfaceRingElem<BigQuaternion>
- Parameters:
S
- BigQuaternion.- Returns:
- gcd(this,S).
-
leftGcd
public BigQuaternion leftGcd(BigQuaternion S)
Quaternion number greatest common divisor.- Specified by:
leftGcd
in interfaceRingElem<BigQuaternion>
- Parameters:
S
- BigQuaternion.- Returns:
- leftCcd(this,S).
-
rightGcd
public BigQuaternion rightGcd(BigQuaternion S)
Quaternion number greatest common divisor.- Specified by:
rightGcd
in interfaceRingElem<BigQuaternion>
- Parameters:
S
- BigQuaternion.- Returns:
- rightCcd(this,S).
-
egcd
public BigQuaternion[] egcd(BigQuaternion S)
BigQuaternion extended greatest common divisor.- Specified by:
egcd
in 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.
-
-