edu.jas.arith
Class BigQuaternion

java.lang.Object
  extended by edu.jas.arith.BigQuaternion
All Implemented Interfaces:
AbelianGroupElem<BigQuaternion>, AbelianGroupFactory<BigQuaternion>, Element<BigQuaternion>, ElemFactory<BigQuaternion>, GcdRingElem<BigQuaternion>, MonoidElem<BigQuaternion>, MonoidFactory<BigQuaternion>, RingElem<BigQuaternion>, RingFactory<BigQuaternion>, StarRingElem<BigQuaternion>, java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<BigQuaternion>

public final class BigQuaternion
extends java.lang.Object
implements StarRingElem<BigQuaternion>, GcdRingElem<BigQuaternion>, RingFactory<BigQuaternion>

BigQuaternion class based on BigRational implementing the RingElem interface and with the familiar MAS static method names. Objects of this class are immutable.

Author:
Heinz Kredel
See Also:
Serialized Form

Field Summary
static BigQuaternion I
          The constant i.
 BigRational im
          Imaginary part i of the data structure.
static BigQuaternion J
          The constant j.
 BigRational jm
          Imaginary part j of the data structure.
static BigQuaternion K
          The constant k.
 BigRational km
          Imaginary part k of the data structure.
static BigQuaternion ONE
          The constant 1.
 BigRational re
          Real part of the data structure.
static BigQuaternion ZERO
          The constant 0.
 
Constructor Summary
BigQuaternion()
          Constructor for a BigQuaternion with no arguments.
BigQuaternion(BigComplex r)
          Constructor for a BigQuaternion from BigComplex.
BigQuaternion(BigRational r)
          Constructor for a BigQuaternion from BigRationals.
BigQuaternion(BigRational r, BigRational i)
          Constructor for a BigQuaternion from BigRationals.
BigQuaternion(BigRational r, BigRational i, BigRational j)
          Constructor for a BigQuaternion from BigRationals.
BigQuaternion(BigRational r, BigRational i, BigRational j, BigRational k)
          Constructor for a BigQuaternion from BigRationals.
BigQuaternion(long r)
          Constructor for a BigQuaternion from long.
BigQuaternion(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
 BigQuaternion abs()
          Quaternion number absolute value.
 java.math.BigInteger characteristic()
          Characteristic of this ring.
 BigQuaternion clone()
          Clone this.
 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(BigQuaternion c)
          Copy BigQuaternion element c.
 BigQuaternion divide(BigQuaternion b)
          BigQuaternion 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.
 BigQuaternion factory()
          Get the corresponding element factory.
 BigQuaternion fromInteger(java.math.BigInteger a)
          Get a BigQuaternion element from a BigInteger.
 BigQuaternion fromInteger(long a)
          Get a BigQuaternion element from a long.
 BigQuaternion gcd(BigQuaternion S)
          Quaternion number greatest common divisor.
 java.util.List<BigQuaternion> generators()
          Get a list of the generating elements.
 BigRational getIm()
          Get the imaginary part im.
 BigRational getJm()
          Get the imaginary part jm.
 BigRational getKm()
          Get the imaginary part km.
 BigQuaternion getONE()
          Get the one element.
 BigRational getRe()
          Get the real part.
 BigQuaternion getZERO()
          Get the zero element.
 int hashCode()
          Hash code for this BigQuaternion.
 BigQuaternion inverse()
          BigQuaternion inverse.
 boolean isAssociative()
          Query if this ring is associative.
 boolean isCommutative()
          Query if this ring is commutative.
 boolean isField()
          Query if this ring is a field.
 boolean isFinite()
          Is this structure finite or infinite.
 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 multiply(BigQuaternion B)
          BigQuaternion multiply.
 BigQuaternion negate()
          BigQuaternion number negative.
 BigQuaternion norm()
          Quaternion number norm.
 BigQuaternion parse(java.io.Reader r)
          Parse quaternion number from Reader.
 BigQuaternion parse(java.lang.String s)
          Parse quaternion number from String.
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 QRAND(int n)
          Quaternion number, random.
static BigQuaternion QSUM(BigQuaternion A, BigQuaternion B)
          Quaternion number sum.
 BigQuaternion random(int n)
          BigQuaternion random.
 BigQuaternion random(int n, java.util.Random rnd)
          BigQuaternion random.
 BigQuaternion remainder(BigQuaternion S)
          BigQuaternion remainder.
 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
finalize, getClass, notify, notifyAll, wait, wait, wait
 

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.


ZERO

public static final BigQuaternion ZERO
The constant 0.


ONE

public static final BigQuaternion ONE
The constant 1.


I

public static final BigQuaternion I
The constant i.


J

public static final BigQuaternion J
The constant j.


K

public static final BigQuaternion K
The constant k.

Constructor Detail

BigQuaternion

public BigQuaternion(BigRational r,
                     BigRational i,
                     BigRational j,
                     BigRational k)
Constructor for a BigQuaternion from BigRationals.

Parameters:
r - BigRational.
i - BigRational.
j - BigRational.
k - BigRational.

BigQuaternion

public BigQuaternion(BigRational r,
                     BigRational i,
                     BigRational j)
Constructor for a BigQuaternion from BigRationals.

Parameters:
r - BigRational.
i - BigRational.
j - BigRational.

BigQuaternion

public BigQuaternion(BigRational r,
                     BigRational i)
Constructor for a BigQuaternion from BigRationals.

Parameters:
r - BigRational.
i - BigRational.

BigQuaternion

public BigQuaternion(BigRational r)
Constructor for a BigQuaternion from BigRationals.

Parameters:
r - BigRational.

BigQuaternion

public BigQuaternion(BigComplex r)
Constructor for a BigQuaternion from BigComplex.

Parameters:
r - BigComplex.

BigQuaternion

public BigQuaternion(long r)
Constructor for a BigQuaternion from long.

Parameters:
r - long.

BigQuaternion

public BigQuaternion()
Constructor for a BigQuaternion with no arguments.


BigQuaternion

public BigQuaternion(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:
s - String.
Throws:
java.lang.NumberFormatException
Method Detail

factory

public BigQuaternion factory()
Get the corresponding element factory.

Specified by:
factory in interface Element<BigQuaternion>
Returns:
factory for this Element.
See Also:
Element.factory()

generators

public java.util.List<BigQuaternion> generators()
Get a list of the generating elements.

Specified by:
generators in interface ElemFactory<BigQuaternion>
Returns:
list of generators for the algebraic structure.
See Also:
ElemFactory.generators()

isFinite

public boolean isFinite()
Is this structure finite or infinite.

Specified by:
isFinite in interface ElemFactory<BigQuaternion>
Returns:
true if this structure is finite, else false.
See Also:
ElemFactory.isFinite()

clone

public BigQuaternion clone()
Clone this.

Overrides:
clone in class java.lang.Object
See Also:
Object.clone()

copy

public BigQuaternion copy(BigQuaternion c)
Copy BigQuaternion element c.

Specified by:
copy in interface ElemFactory<BigQuaternion>
Parameters:
c - BigQuaternion.
Returns:
a copy of c.

getZERO

public BigQuaternion getZERO()
Get the zero element.

Specified by:
getZERO in interface AbelianGroupFactory<BigQuaternion>
Returns:
0 as BigQuaternion.

getONE

public BigQuaternion getONE()
Get the one element.

Specified by:
getONE in interface MonoidFactory<BigQuaternion>
Returns:
q as BigQuaternion.

isCommutative

public boolean isCommutative()
Query if this ring is commutative.

Specified by:
isCommutative in interface MonoidFactory<BigQuaternion>
Returns:
false.

isAssociative

public boolean isAssociative()
Query if this ring is associative.

Specified by:
isAssociative in interface MonoidFactory<BigQuaternion>
Returns:
true.

isField

public boolean isField()
Query if this ring is a field.

Specified by:
isField in interface RingFactory<BigQuaternion>
Returns:
true.

characteristic

public java.math.BigInteger characteristic()
Characteristic of this ring.

Specified by:
characteristic in interface RingFactory<BigQuaternion>
Returns:
characteristic of this ring.

fromInteger

public BigQuaternion fromInteger(java.math.BigInteger a)
Get a BigQuaternion element from a BigInteger.

Specified by:
fromInteger in interface ElemFactory<BigQuaternion>
Parameters:
a - BigInteger.
Returns:
a BigQuaternion.

fromInteger

public BigQuaternion fromInteger(long a)
Get a BigQuaternion element from a long.

Specified by:
fromInteger in interface ElemFactory<BigQuaternion>
Parameters:
a - long.
Returns:
a BigQuaternion.

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 class java.lang.Object
See Also:
Object.toString()

toScript

public java.lang.String toScript()
Get a scripting compatible string representation.

Specified by:
toScript in interface Element<BigQuaternion>
Specified by:
toScript in interface ElemFactory<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 interface Element<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 interface AbelianGroupElem<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 interface MonoidElem<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 interface MonoidElem<BigQuaternion>
Returns:
If this is a unit then true is returned, else false.
See Also:
MonoidElem.isUnit()

equals

public boolean equals(java.lang.Object b)
Comparison with any other object.

Specified by:
equals in interface Element<BigQuaternion>
Overrides:
equals in class java.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 interface Element<BigQuaternion>
Overrides:
hashCode in class java.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 interface Element<BigQuaternion>
Specified by:
compareTo in interface java.lang.Comparable<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 interface AbelianGroupElem<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 interface AbelianGroupElem<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 interface AbelianGroupElem<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 interface AbelianGroupElem<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 interface StarRingElem<BigQuaternion>
Returns:
conjugate(this).

norm

public BigQuaternion norm()
Quaternion number norm.

Specified by:
norm in interface StarRingElem<BigQuaternion>
Returns:
||this||.
See Also:
StarRingElem.norm()

abs

public BigQuaternion abs()
Quaternion number absolute value.

Specified by:
abs in interface AbelianGroupElem<BigQuaternion>
Returns:
|this|^2. Note: The square root is not jet implemented.
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(BigQuaternion B)
BigQuaternion multiply.

Specified by:
multiply in interface MonoidElem<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 = 1.

inverse

public BigQuaternion inverse()
BigQuaternion inverse.

Specified by:
inverse in interface MonoidElem<BigQuaternion>
Returns:
S with S * this = 1.
See Also:
MonoidElem.inverse()

remainder

public BigQuaternion remainder(BigQuaternion S)
BigQuaternion remainder.

Specified by:
remainder in interface MonoidElem<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 divide.

Specified by:
divide in interface MonoidElem<BigQuaternion>
Parameters:
b - BigQuaternion.
Returns:
this/b.

divide

public BigQuaternion divide(BigRational b)
BigQuaternion divide.

Parameters:
b - BigRational.
Returns:
this/b.

random

public BigQuaternion random(int n)
BigQuaternion random. Random rational numbers A, B, C and D are generated using random(n). Then R is the quaternion number with real part A and imaginary parts B, C and D.

Specified by:
random in interface ElemFactory<BigQuaternion>
Parameters:
n - such that 0 ≤ A, B, C, D ≤ (2n-1).
Returns:
R, a random BigQuaternion.

random

public BigQuaternion random(int n,
                            java.util.Random rnd)
BigQuaternion random. Random rational numbers A, B, C and D are generated using RNRAND(n). Then R is the quaternion number with real part A and imaginary parts B, C and D.

Specified by:
random in interface ElemFactory<BigQuaternion>
Parameters:
n - such that 0 ≤ A, B, C, D ≤ (2n-1).
rnd - is a source for random bits.
Returns:
R, a random BigQuaternion.

QRAND

public static BigQuaternion QRAND(int n)
Quaternion number, random. Random rational numbers A, B, C and D are generated using RNRAND(n). Then R is the quaternion number with real part A and imaginary parts B, C and D.

Parameters:
n - such that 0 ≤ A, B, C, D ≤ (2n-1).
Returns:
R, a random BigQuaternion.

parse

public BigQuaternion parse(java.lang.String s)
Parse quaternion number from String.

Specified by:
parse in interface ElemFactory<BigQuaternion>
Parameters:
s - String.
Returns:
BigQuaternion from s.

parse

public BigQuaternion parse(java.io.Reader r)
Parse quaternion number from Reader.

Specified by:
parse in interface ElemFactory<BigQuaternion>
Parameters:
r - Reader.
Returns:
next BigQuaternion from r.

gcd

public BigQuaternion gcd(BigQuaternion S)
Quaternion number greatest common divisor.

Specified by:
gcd in interface RingElem<BigQuaternion>
Parameters:
S - BigQuaternion.
Returns:
gcd(this,S).

egcd

public BigQuaternion[] egcd(BigQuaternion S)
BigQuaternion extended greatest common divisor.

Specified by:
egcd in interface RingElem<BigQuaternion>
Parameters:
S - BigQuaternion.
Returns:
[ gcd(this,S), a, b ] with a*this + b*S = gcd(this,S).