login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Biquaternion Calculus Domain

D. Cyganski and Bill Page - July 2007

This version is implemented as a new domain in SPAD.

\begin{spad} )abbrev domain BIQ BiQuaternion BiQuaternion(R:Join(OrderedSet,CommutativeRing)): Exports == Implementation where C==>Complex Expression R Exports ==> QuaternionCategory(C) with qlist: List C -> % -- takes a complex list (parameter l) into a quaternion listq: % -> List C -- takes a quaternion into a list matrixq: % -> SquareMatrix(2,C) -- takes a quaternion into a matrix sig0: ()->% sig1: ()->% sig2: ()->% sig3: ()->% siglist: % -> List C -- Pauli basis representation of the biquaternion if C has PartialDifferentialRing(Symbol) then D: (%,Symbol,Symbol,Symbol) -> % -- quaternion derivative if C has RadicalCategory and C has Field and C has TranscendentalFunctionCategory then abs: % -> C rot: (C,%) -> % exp: % -> % -- biquaternion rotation _/: (%,%) -> % _/: (C,%) -> % _/: (%,C) -> % coerce: Complex R -> %

Implementation ==> Quaternion C add import C

coerce(z:Complex R):% == import Expression(R),ComplexFunctions2(R,Expression R) map(coerce,z)::%

-- Define a function that takes a complex list (parameter l) into a quaternion qlist(l:List C):%== import Integer quatern(l 1,l 2,l 3,l 4) -- Define a function that takes a quaternion into a list listq(x:%):List C == [real x, imagI x, imagJ x, imagK x] -- Define a function that takes a biquat into a matrix matrixq(x:%):SquareMatrix(2,C) == import List List C matrix [[real x + imaginary()imagI(x), imagJ x + imaginary()imagK(x)], [-imagJ(x) + imaginary()imagK(x), real x - imaginary()imagI(x)]] -- Define a function that produces the Pauli basis representation of the biquaternion siglist(x:%):List C == [real x, -imaginary()imagK(x),-imaginary()imagJ(x),imaginary()imagI(x)] sig0():% == quatern(1,0,0,0) sig1():% == imaginary() quatern(0,0,0,1) sig2():% == imaginary() quatern(0,0,1,0) sig3():% == -imaginary() quatern(0,1,0,0) -- Define the quaternion derivative (Morgan, 2001, Eq. 2) if C has PartialDifferentialRing(Symbol) then D(q:%,x:Symbol,y:Symbol,z:Symbol):% == sig1()D(q,x)+sig2()D(q,y)+sig3()D(q,z) -- Define a biquaternion rotation operator that takes a biquat through a rotation -- of theta radians about the axis defined by the unit q biquat (Morgan 2001, Eq 3). if C has RadicalCategory and C has Field and C has TranscendentalFunctionCategory then rot(theta:C,q:%):% == import Integer, SparseMultivariatePolynomial(Integer, Kernel(C)) cos(theta/2::C)::% - imaginary()qsin(theta/2::C) ((x:%) / (y:%)):% == xinv(y)$% ((x:C) / (y:%)):% == (x::%)inv(y) ((x:%) / (y:C)):% == xinv(y::%) abs(q:%):C == sqrt(retract(qconjugate(q))) exp(q:%):% == import Integer, SparseMultivariatePolynomial(Integer, Kernel(C)) q-conjugate(q)=0 => exp(retract(q+conjugate(q))/2::C)sig0() exp(retract(q+conjugate(q))/2::C) (sig0()cos(abs(q)) + (q-conjugate(q))/abs(q-conjugate(q)) * sin(abs(q))) \end{spad}

\begin{axiom} )show BiQuaternion \end{axiom}

\begin{axiom} Q := BiQuaternion Integer q:Q := quatern(q0,q1,q2,q3) \end{axiom}

For testing the derivative we define this set of operators \begin{axiom} Ft:=operator 'Ft; Fx:=operator 'Fx; Fy:=operator 'Fy; Fz:=operator 'Fz; \end{axiom}

Now form a general quaternion which is a function of x,y,z \begin{axiom} F:Q:=Ft(x,y,z)sig0()+Fx(x,y,z)sig1()+Fy(x,y,z)sig2()+Fz(x,y,z)sig3() \end{axiom}

In the Pauli basis the derivative of this biquat should produce (Morgan 2001, eq 1):

  D(Ft+F.sigma)=div(F)+(grad(Ft)+%i*curl(F)).sigma

which it does \begin{axiom} siglist(D(F,x,y,z)) \end{axiom}

Test

(comment out this test later)

\begin{axiom} %i::Q abs(%i::Q) abs(q) cos(abs(%i::Q)) \end{axiom}

If I've defined these correctly, then the rotation about the x axis defined by qx below by 2 radians should give the same answer as exponentiation to -%i*qx (not a very complete test) \begin{axiom} qx:Q:=sig1() siglist(rot(2,qx)) siglist(exp(-%i::Q*qx)) \end{axiom}

which it does \begin{axiom} (%%(-1)=%%(-2))@Boolean \end{axiom}

I would love to express a proof of equality such as:

   rot(theta,q) = exp((-theta/2)*%i*q)

for arbitrary real $\theta$ and biquaternion q as I would in Maple.

\begin{axiom} theta:Complex Expression Integer := _\theta map(simplify, siglist( rot(theta,q) - exp((-%itheta/2) q)))::List Expression Complex Integer \end{axiom}

\begin{axiom} map(simplify,siglist(rot(2,qx))) \end{axiom}


Some or all expressions may not have rendered properly, because Axiom returned the following error:
Error: export FRICAS=/usr/local/lib/fricas/target/x86_64-linux-gnu; export ALDORROOT=/usr/local/aldor/linux/1.1.0; export PATH=$ALDORROOT/bin:$PATH; export HOME=/var/zope2/var/LatexWiki; ulimit -t 600; export LD_LIBRARY_PATH=/usr/local/lib/fricas/target/x86_64-linux-gnu/lib; LANG=en_US.UTF-8 $FRICAS/bin/FRICASsys < /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/405825799807838506-25px.axm
Killed

Checking for foreign routines FRICAS="/usr/local/lib/fricas/target/x86_64-linux-gnu" spad-lib="/usr/local/lib/fricas/target/x86_64-linux-gnu/lib/libspad.so" foreign routines found openServer result -2 FriCAS Computer Algebra System Version: FriCAS 1.3.8 Timestamp: Thu Jun 23 16:21:37 UTC 2022 ----------------------------------------------------------------------------- Issue )copyright to view copyright notices. Issue )summary for a summary of useful system commands. Issue )quit to leave FriCAS and return to shell. -----------------------------------------------------------------------------

(1) -> (1) -> (1) -> (1) -> (1) -> (1) -> <spad> )abbrev domain BIQ BiQuaternion BiQuaternion(R:Join(OrderedSet,CommutativeRing)): Exports == Implementation where C==>Complex Expression R Exports ==> QuaternionCategory(C) with qlist: List C -> % -- takes a complex list (parameter l) into a quaternion listq: % -> List C -- takes a quaternion into a list matrixq: % -> SquareMatrix(2,C) -- takes a quaternion into a matrix sig0: ()->% sig1: ()->% sig2: ()->% sig3: ()->% siglist: % -> List C -- Pauli basis representation of the biquaternion if C has PartialDifferentialRing(Symbol) then D: (%,Symbol,Symbol,Symbol) -> % -- quaternion derivative if C has RadicalCategory and C has Field and C has TranscendentalFunctionCategory then abs: % -> C rot: (C,%) -> % exp: % -> % -- biquaternion rotation /: (%,%) -> % /: (C,%) -> % _/: (%,C) -> % coerce: Complex R -> %

Implementation ==> Quaternion C add import C

coerce(z:Complex R):% == import Expression(R),ComplexFunctions2(R,Expression R) map(coerce,z)::%

-- Define a function that takes a complex list (parameter l) into a quaternion qlist(l:List C):%== import Integer quatern(l 1,l 2,l 3,l 4) -- Define a function that takes a quaternion into a list listq(x:%):List C == [real x, imagI x, imagJ x, imagK x] -- Define a function that takes a biquat into a matrix matrixq(x:%):SquareMatrix(2,C) == import List List C matrix [[real x + imaginary()imagI(x), imagJ x + imaginary()imagK(x)], [-imagJ(x) + imaginary()imagK(x), real x - imaginary()imagI(x)]] -- Define a function that produces the Pauli basis representation of the biquaternion siglist(x:%):List C == [real x, -imaginary()imagK(x),-imaginary()imagJ(x),imaginary()imagI(x)] sig0():% == quatern(1,0,0,0) sig1():% == imaginary() quatern(0,0,0,1) sig2():% == imaginary() quatern(0,0,1,0) sig3():% == -imaginary() quatern(0,1,0,0) -- Define the quaternion derivative (Morgan, 2001, Eq. 2) if C has PartialDifferentialRing(Symbol) then D(q:%,x:Symbol,y:Symbol,z:Symbol):% == sig1()D(q,x)+sig2()D(q,y)+sig3()D(q,z) -- Define a biquaternion rotation operator that takes a biquat through a rotation -- of theta radians about the axis defined by the unit q biquat (Morgan 2001, Eq 3). if C has RadicalCategory and C has Field and C has TranscendentalFunctionCategory then rot(theta:C,q:%):% == import Integer, SparseMultivariatePolynomial(Integer, Kernel(C)) cos(theta/2::C)::% - imaginary()qsin(theta/2::C) ((x:%) / (y:%)):% == xinv(y)$% ((x:C) / (y:%)):% == (x::%)inv(y) ((x:%) / (y:C)):% == xinv(y::%) abs(q:%):C == sqrt(retract(qconjugate(q))) exp(q:%):% == import Integer, SparseMultivariatePolynomial(Integer, Kernel(C)) q-conjugate(q)=0 => exp(retract(q+conjugate(q))/2::C)sig0() exp(retract(q+conjugate(q))/2::C) (sig0()cos(abs(q)) + (q-conjugate(q))/abs(q-conjugate(q)) sin(abs(q)))</spad> Compiling FriCAS source code from file /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/8384816125117043612-25px001.spad using old system compiler. BIQ abbreviates domain BiQuaternion ------------------------------------------------------------------------ initializing NRLIB BIQ for BiQuaternion compiling into NRLIB BIQ ***** Domain: R already in scope importing Complex Expression R compiling exported coerce : Complex R -> $ Time: 0.60 SEC.

compiling exported qlist : List Complex Expression R -> $ Time: 0.05 SEC.

compiling exported listq : $ -> List Complex Expression R Time: 0 SEC.

compiling exported matrixq : $ -> SquareMatrix(2,Complex Expression R) Time: 0.05 SEC.

compiling exported siglist : $ -> List Complex Expression R Time: 0.03 SEC.

compiling exported sig0 : () -> $ Time: 0.01 SEC.

compiling exported sig1 : () -> $ Time: 0 SEC.

compiling exported sig2 : () -> $ Time: 0.01 SEC.

compiling exported sig3 : () -> $ Time: 0 SEC.

compiling exported D : ($,Symbol,Symbol,Symbol) -> $ Time: 0.30 SEC.

**** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (RadicalCategory) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (Field) **** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (TranscendentalFunctionCategory) compiling exported rot : (Complex Expression R,$) -> $ Time: 0.55 SEC.

compiling exported / : ($,$) -> $ Time: 0 SEC.

compiling exported / : (Complex Expression R,$) -> $ Time: 0 SEC.

compiling exported / : ($,Complex Expression R) -> $ Time: 0.01 SEC.

compiling exported abs : $ -> Complex Expression R Time: 0.01 SEC.

compiling exported exp : $ -> $ Time: 1.06 SEC.

**** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (Field) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (RadicalCategory) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (TranscendentalFunctionCategory) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (CharacteristicNonZero) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (ConvertibleTo (InputForm)) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (DifferentialRing) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (Eltable (Complex (Expression R)) (Complex (Expression R))) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (EntireRing) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (Evalable (Complex (Expression R))) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (Field) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (InnerEvalable (Symbol) (Complex (Expression R))) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (IntegerNumberSystem) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (LinearlyExplicitOver (Integer)) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (OrderedSet) ** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (RetractableTo (Fraction (Integer))) **** Domain: (Complex (Expression R)) already in scope augmenting (Complex (Expression R)): (RetractableTo (Integer)) (time taken in buildFunctor: 870)

;;; *** |BiQuaternion| REDEFINED

;;; *** |BiQuaternion| REDEFINED Time: 2.14 SEC.

Cumulative Statistics for Constructor BiQuaternion Time: 4.82 seconds

finalizing NRLIB BIQ Processing BiQuaternion for Browser database: --->-->BiQuaternion(constructor): Not documented!!!! --->-->BiQuaternion((qlist (% (List (Complex (Expression R)))))): Not documented!!!! --->-->BiQuaternion((listq ((List (Complex (Expression R))) %))): Not documented!!!! --->-->BiQuaternion((matrixq ((SquareMatrix 2 (Complex (Expression R))) %))): Not documented!!!! --->-->BiQuaternion((sig0 (%))): Not documented!!!! --->-->BiQuaternion((sig1 (%))): Not documented!!!! --->-->BiQuaternion((sig2 (%))): Not documented!!!! --->-->BiQuaternion((sig3 (%))): Not documented!!!! --->-->BiQuaternion((siglist ((List (Complex (Expression R))) %))): Not documented!!!! --->-->BiQuaternion((D (% % (Symbol) (Symbol) (Symbol)))): Not documented!!!! --->-->BiQuaternion((abs ((Complex (Expression R)) %))): Not documented!!!! --->-->BiQuaternion((rot (% (Complex (Expression R)) %))): Not documented!!!! --->-->BiQuaternion((exp (% %))): Not documented!!!! --->-->BiQuaternion((/ (% % %))): Not documented!!!! --->-->BiQuaternion((/ (% (Complex (Expression R)) %))): Not documented!!!! --->-->BiQuaternion((/ (% % (Complex (Expression R))))): Not documented!!!! --->-->BiQuaternion((coerce (% (Complex R)))): Not documented!!!! --->-->BiQuaternion(): Missing Description ; compiling file "/var/aw/var/LatexWiki/BIQ.NRLIB/BIQ.lsp" (written 07 JUL 2023 01:31:41 AM):

; /var/aw/var/LatexWiki/BIQ.NRLIB/BIQ.fasl written ; compilation finished in 0:00:00.192 ------------------------------------------------------------------------ BiQuaternion is now explicitly exposed in frame initial BiQuaternion will be automatically loaded when needed from /var/aw/var/LatexWiki/BIQ.NRLIB/BIQ

(1) -> )show BiQuaternion

BiQuaternion(R: Join(OrderedSet,CommutativeRing)) is a domain constructor Abbreviation for BiQuaternion is BIQ This constructor is exposed in this frame. ------------------------------- Operations --------------------------------

?? : (Integer, %) -> % ?? : (%, %) -> % ?? : (PositiveInteger, %) -> % ?+? : (%, %) -> % -? : % -> % ?-? : (%, %) -> % ?=? : (%, %) -> Boolean 1 : () -> % 0 : () -> % ?^? : (%, PositiveInteger) -> % annihilate? : (%, %) -> Boolean antiCommutator : (%, %) -> % associator : (%, %, %) -> % coerce : Complex(R) -> % coerce : Integer -> % coerce : % -> OutputForm commutator : (%, %) -> % conjugate : % -> % hash : % -> SingleInteger latex : % -> String one? : % -> Boolean opposite? : (%, %) -> Boolean recip : % -> Union(%,"failed") sample : () -> % sig0 : () -> % sig1 : () -> % sig2 : () -> % sig3 : () -> % zero? : % -> Boolean ?~=? : (%, %) -> Boolean ?? : (Fraction(Integer), %) -> % if Complex(Expression(R)) has FIELD ?? : (%, Fraction(Integer)) -> % if Complex(Expression(R)) has FIELD ?? : (Complex(Expression(R)), %) -> % ?? : (%, Complex(Expression(R))) -> % ?? : (NonNegativeInteger, %) -> % ?/? : (%, Complex(Expression(R))) -> % if Complex(Expression(R)) has FIELD and Complex(Expression(R)) has RADCAT and Complex(Expression(R)) has TRANFUN ?/? : (Complex(Expression(R)), %) -> % if Complex(Expression(R)) has FIELD and Complex(Expression(R)) has RADCAT and Complex(Expression(R)) has TRANFUN ?/? : (%, %) -> % if Complex(Expression(R)) has FIELD and Complex(Expression(R)) has RADCAT and Complex(Expression(R)) has TRANFUN ?<? : (%, %) -> Boolean if Complex(Expression(R)) has ORDSET ?<=? : (%, %) -> Boolean if Complex(Expression(R)) has ORDSET ?>? : (%, %) -> Boolean if Complex(Expression(R)) has ORDSET ?>=? : (%, %) -> Boolean if Complex(Expression(R)) has ORDSET D : (%, Symbol, Symbol, Symbol) -> % if Complex(Expression(R)) has PDRING(SYMBOL) D : (%, (Complex(Expression(R)) -> Complex(Expression(R)))) -> % D : (%, (Complex(Expression(R)) -> Complex(Expression(R))), NonNegativeInteger) -> % D : (%, List(Symbol), List(NonNegativeInteger)) -> % if Complex(Expression(R)) has PDRING(SYMBOL) D : (%, Symbol, NonNegativeInteger) -> % if Complex(Expression(R)) has PDRING(SYMBOL) D : (%, List(Symbol)) -> % if Complex(Expression(R)) has PDRING(SYMBOL) D : (%, Symbol) -> % if Complex(Expression(R)) has PDRING(SYMBOL) D : (%, NonNegativeInteger) -> % if Complex(Expression(R)) has DIFRING D : % -> % if Complex(Expression(R)) has DIFRING ?^? : (%, Integer) -> % if Complex(Expression(R)) has FIELD ?^? : (%, NonNegativeInteger) -> % abs : % -> Complex(Expression(R)) if Complex(Expression(R)) has FIELD and Complex(Expression(R)) has RADCAT and Complex(Expression(R)) has TRANFUN or Complex(Expression(R)) has RNS associates? : (%, %) -> Boolean if Complex(Expression(R)) has ENTIRER characteristic : () -> NonNegativeInteger charthRoot : % -> Union(%,"failed") if Complex(Expression(R)) has CHARNZ coerce : Fraction(Integer) -> % if Complex(Expression(R)) has FIELD or Complex(Expression(R)) has RETRACT(FRAC(INT)) coerce : Complex(Expression(R)) -> % convert : % -> InputForm if Complex(Expression(R)) has KONVERT(INFORM) differentiate : (%, (Complex(Expression(R)) -> Complex(Expression(R)))) -> % differentiate : (%, (Complex(Expression(R)) -> Complex(Expression(R))), NonNegativeInteger) -> % differentiate : (%, List(Symbol), List(NonNegativeInteger)) -> % if Complex(Expression(R)) has PDRING(SYMBOL) differentiate : (%, Symbol, NonNegativeInteger) -> % if Complex(Expression(R)) has PDRING(SYMBOL) differentiate : (%, List(Symbol)) -> % if Complex(Expression(R)) has PDRING(SYMBOL) differentiate : (%, Symbol) -> % if Complex(Expression(R)) has PDRING(SYMBOL) differentiate : (%, NonNegativeInteger) -> % if Complex(Expression(R)) has DIFRING differentiate : % -> % if Complex(Expression(R)) has DIFRING ?.? : (%, Complex(Expression(R))) -> % if Complex(Expression(R)) has ELTAB(COMPLEX(EXPR(R)),COMPLEX(EXPR(R))) eval : (%, Symbol, Complex(Expression(R))) -> % if Complex(Expression(R)) has IEVALAB(SYMBOL,COMPLEX(EXPR(R))) eval : (%, List(Symbol), List(Complex(Expression(R)))) -> % if Complex(Expression(R)) has IEVALAB(SYMBOL,COMPLEX(EXPR(R))) eval : (%, List(Equation(Complex(Expression(R))))) -> % if Complex(Expression(R)) has EVALAB(COMPLEX(EXPR(R))) eval : (%, Equation(Complex(Expression(R)))) -> % if Complex(Expression(R)) has EVALAB(COMPLEX(EXPR(R))) eval : (%, Complex(Expression(R)), Complex(Expression(R))) -> % if Complex(Expression(R)) has EVALAB(COMPLEX(EXPR(R))) eval : (%, List(Complex(Expression(R))), List(Complex(Expression(R)))) -> % if Complex(Expression(R)) has EVALAB(COMPLEX(EXPR(R))) exp : % -> % if Complex(Expression(R)) has FIELD and Complex(Expression(R)) has RADCAT and Complex(Expression(R)) has TRANFUN exquo : (%, %) -> Union(%,"failed") if Complex(Expression(R)) has ENTIRER hashUpdate! : (HashState, %) -> HashState imagI : % -> Complex(Expression(R)) imagJ : % -> Complex(Expression(R)) imagK : % -> Complex(Expression(R)) inv : % -> % if Complex(Expression(R)) has FIELD leftPower : (%, NonNegativeInteger) -> % leftPower : (%, PositiveInteger) -> % leftRecip : % -> Union(%,"failed") listq : % -> List(Complex(Expression(R))) map : ((Complex(Expression(R)) -> Complex(Expression(R))), %) -> % matrixq : % -> SquareMatrix(2,Complex(Expression(R))) max : (%, %) -> % if Complex(Expression(R)) has ORDSET min : (%, %) -> % if Complex(Expression(R)) has ORDSET norm : % -> Complex(Expression(R)) qlist : List(Complex(Expression(R))) -> % quatern : (Complex(Expression(R)), Complex(Expression(R)), Complex(Expression(R)), Complex(Expression(R))) -> % rational : % -> Fraction(Integer) if Complex(Expression(R)) has INS rational? : % -> Boolean if Complex(Expression(R)) has INS rationalIfCan : % -> Union(Fraction(Integer),"failed") if Complex(Expression(R)) has INS real : % -> Complex(Expression(R)) reducedSystem : Matrix(%) -> Matrix(Complex(Expression(R))) reducedSystem : (Matrix(%), Vector(%)) -> Record(mat: Matrix(Complex(Expression(R))),vec: Vector(Complex(Expression(R)))) reducedSystem : (Matrix(%), Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if Complex(Expression(R)) has LINEXP(INT) reducedSystem : Matrix(%) -> Matrix(Integer) if Complex(Expression(R)) has LINEXP(INT) retract : % -> Complex(Expression(R)) retract : % -> Fraction(Integer) if Complex(Expression(R)) has RETRACT(FRAC(INT)) retract : % -> Integer if Complex(Expression(R)) has RETRACT(INT) retractIfCan : % -> Union(Complex(Expression(R)),"failed") retractIfCan : % -> Union(Fraction(Integer),"failed") if Complex(Expression(R)) has RETRACT(FRAC(INT)) retractIfCan : % -> Union(Integer,"failed") if Complex(Expression(R)) has RETRACT(INT) rightPower : (%, NonNegativeInteger) -> % rightPower : (%, PositiveInteger) -> % rightRecip : % -> Union(%,"failed") rot : (Complex(Expression(R)), %) -> % if Complex(Expression(R)) has FIELD and Complex(Expression(R)) has RADCAT and Complex(Expression(R)) has TRANFUN siglist : % -> List(Complex(Expression(R))) smaller? : (%, %) -> Boolean if Complex(Expression(R)) has ORDSET subtractIfCan : (%, %) -> Union(%,"failed") unit? : % -> Boolean if Complex(Expression(R)) has ENTIRER unitCanonical : % -> % if Complex(Expression(R)) has ENTIRER unitNormal : % -> Record(unit: %,canonical: %,associate: %) if Complex(Expression(R)) has ENTIRER

(1) -> Q := BiQuaternion Integer

$$ BiQuaternion(Integer) \leqno(1) $$

Type: Type q:Q := quatern(q0,q1,q2,q3)

$$ q0+{q1 \ i}+{q2 \ j}+{q3 \ k} \leqno(2) $$

Type: BiQuaternion(Integer) (3) -> Ft:=operator 'Ft; Fx:=operator 'Fx; Fy:=operator 'Fy; Fz:=operator 'Fz;

Type: BasicOperator (4) -> F:Q:=Ft(x,y,z)sig0()+Fx(x,y,z)sig1()+Fy(x,y,z)sig2()+Fz(x,y,z)sig3()

$$ {Ft \left( {x, \: y, \: z} \right)} -{{Fz \left( {x, \: y, \: z} \right)} \ i \ i}+{{Fy \left( {x, \: y, \: z} \right)} \ i \ j}+{{Fx \left( {x, \: y, \: z} \right)} \ i \ k} \leqno(4) $$

Type: BiQuaternion(Integer) (5) -> siglist(D(F,x,y,z))

$$ \left[ {{{Fz \sb {{,3}}} \left( {x, \: y, \: z} \right)}+{{Fy \sb {{,2}}} \left( {x, \: y, \: z} \right)}+{{Fx \sb {{,1}}} \left( {x, \: y, \: z} \right)}}, \: {{{Ft \sb {{,1}}} \left( {x, \: y, \: z} \right)}+{{\left( {{Fz \sb {{,2}}} \left( {x, \: y, \: z} \right)} -{{Fy \sb {{,3}}} \left( {x, \: y, \: z} \right)} \right)} \ i}}, \: {{{Ft \sb {{,2}}} \left( {x, \: y, \: z} \right)}+{{\left( -{{Fz \sb {{,1}}} \left( {x, \: y, \: z} \right)}+{{Fx \sb {{,3}}} \left( {x, \: y, \: z} \right)} \right)} \ i}}, \: {{{Ft \sb {{,3}}} \left( {x, \: y, \: z} \right)}+{{\left( {{Fy \sb {{,1}}} \left( {x, \: y, \: z} \right)} -{{Fx \sb {{,2}}} \left( {x, \: y, \: z} \right)} \right)} \ i}} \right] \leqno(5) $$

Type: List(Complex(Expression(Integer))) (6) -> %i::Q


Some or all expressions may not have rendered properly, because Latex returned the following error:
This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
 %&-line parsing enabled.
entering extended mode
(./25108833066137842-16.0px.tex
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, arabic, farsi, croatian, ukrainian, russian, bulgarian, czech, slov
ak, danish, dutch, finnish, basque, french, german, ngerman, ibycus, greek, mon
ogreek, ancientgreek, hungarian, italian, latin, mongolian, norsk, icelandic, i
nterlingua, turkish, coptic, romanian, welsh, serbian, slovenian, estonian, esp
eranto, uppersorbian, indonesian, polish, portuguese, spanish, catalan, galicia
n, swedish, ukenglish, pinyin, loaded.
(/usr/share/texmf-texlive/tex/latex/base/article.cls
Document Class: article 2005/09/16 v1.4f Standard LaTeX document class
(/usr/share/texmf-texlive/tex/latex/base/size12.clo))
(/usr/share/texmf-texlive/tex/latex/ucs/ucs.sty
(/usr/share/texmf-texlive/tex/latex/ucs/data/uni-global.def))
(/usr/share/texmf-texlive/tex/latex/base/inputenc.sty
(/usr/share/texmf-texlive/tex/latex/ucs/utf8x.def))
(/usr/share/texmf-texlive/tex/latex/bbm/bbm.sty)
(/usr/share/texmf-texlive/tex/latex/jknapltx/mathrsfs.sty)
(/usr/share/texmf-texlive/tex/latex/base/fontenc.sty
(/usr/share/texmf-texlive/tex/latex/base/t1enc.def))
(/usr/share/texmf-texlive/tex/latex/pstricks/pstricks.sty
(/usr/share/texmf-texlive/tex/generic/pstricks/pstricks.tex
`PSTricks' v1.15  <2006/12/22> (tvz)
(/usr/share/texmf-texlive/tex/generic/pstricks/pstricks.con))
(/usr/share/texmf/tex/latex/xcolor/xcolor.sty
(/etc/texmf/tex/latex/config/color.cfg)
(/usr/share/texmf-texlive/tex/latex/graphics/dvips.def)
(/usr/share/texmf-texlive/tex/latex/graphics/dvipsnam.def)))
(/usr/share/texmf-texlive/tex/latex/graphics/epsfig.sty
(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty)
(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty)
(/etc/texmf/tex/latex/config/graphics.cfg))))
(/usr/share/texmf-texlive/tex/latex/pst-grad/pst-grad.sty
(/usr/share/texmf-texlive/tex/generic/pst-grad/pst-grad.tex
(/usr/share/texmf-texlive/tex/latex/xkeyval/pst-xkey.tex
(/usr/share/texmf-texlive/tex/latex/xkeyval/xkeyval.sty
(/usr/share/texmf-texlive/tex/latex/xkeyval/xkeyval.tex)))
`pst-plot' v1.05, 2006/11/04 (tvz,dg,hv)))
(/usr/share/texmf-texlive/tex/latex/pstricks/pst-plot.sty
(/usr/share/texmf-texlive/tex/generic/pstricks/pst-plot.tex
 v97 patch 2, 1999/12/12
(/usr/share/texmf-texlive/tex/generic/multido/multido.tex
 v1.41, 2004/05/18 <tvz>)))
(/usr/share/texmf-texlive/tex/latex/geometry/geometry.sty
(/usr/share/texmf-texlive/tex/xelatex/xetexconfig/geometry.cfg)

Package geometry Warning: `lmargin' and `rmargin' result in NEGATIVE (-108.405p t). `width' should be shortened in length.

) (/usr/share/texmf-texlive/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `? option. (/usr/share/texmf-texlive/tex/latex/amsmath/amstext.sty (/usr/share/texmf-texlive/tex/latex/amsmath/amsgen.sty)) (/usr/share/texmf-texlive/tex/latex/amsmath/amsbsy.sty) (/usr/share/texmf-texlive/tex/latex/amsmath/amsopn.sty)) (/usr/share/texmf-texlive/tex/latex/amsfonts/amsfonts.sty) (/usr/share/texmf-texlive/tex/latex/amsfonts/amssymb.sty) (/usr/share/texmf-texlive/tex/latex/amscls/amsthm.sty) (/usr/share/texmf-texlive/tex/latex/setspace/setspace.sty Package: `setspace 6.7 <2000/12/01> ) (/usr/share/texmf-texlive/tex/generic/xypic/xy.sty (/usr/share/texmf-texlive/tex/generic/xypic/xy.tex Bootstrap'ing: catcodes, docmode, (/usr/share/texmf-texlive/tex/generic/xypic/xyrecat.tex) (/usr/share/texmf-texlive/tex/generic/xypic/xyidioms.tex)

Xy-pic version 3.7 <1999/02/16> Copyright (c) 1991-1998 by Kristoffer H. Rose <krisrose@ens-lyon.fr> Xy-pic is free software: see the User's Guide for details.

Loading kernel: messages; fonts; allocations: state, direction, utility macros; pictures: \xy, positions, objects, decorations; kernel objects: directionals, circles, text; options; algorithms: directions, edges, connections; Xy-pic loaded)) (/usr/share/texmf-texlive/tex/generic/xypic/xyall.tex Xy-pic option: All features v.3.3 (/usr/share/texmf-texlive/tex/generic/xypic/xycurve.tex Xy-pic option: Curve and Spline extension v.3.7 curve, circles, loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xyframe.tex Xy-pic option: Frame and Bracket extension v.3.7 loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xycmtip.tex Xy-pic option: Computer Modern tip extension v.3.3 (/usr/share/texmf-texlive/tex/generic/xypic/xytips.tex Xy-pic option: More Tips extension v.3.3 loaded) loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xyline.tex Xy-pic option: Line styles extension v.3.6 loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xyrotate.tex Xy-pic option: Rotate and Scale extension v.3.3 loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xycolor.tex Xy-pic option: Colour extension v.3.3 loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xymatrix.tex Xy-pic option: Matrix feature v.3.4 loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xyarrow.tex Xy-pic option: Arrow and Path feature v.3.5 path, \ar, loaded) (/usr/share/texmf-texlive/tex/generic/xypic/xygraph.tex Xy-pic option: Graph feature v.3.7 loaded) loaded) (/usr/share/texmf-texlive/tex/latex/tools/verbatim.sty) (/usr/share/texmf/tex/latex/graphviz/graphviz.sty (/usr/share/texmf-texlive/tex/latex/psfrag/psfrag.sty)) (/usr/share/texmf/tex/latex/sagetex.sty Writing sage input file 25108833066137842-16.0px.sage ) (/usr/share/texmf-texlive/tex/latex/gnuplottex/gnuplottex.sty (/usr/share/texmf-texlive/tex/latex/base/latexsym.sty) (/usr/share/texmf-texlive/tex/latex/moreverb/moreverb.sty) (/usr/share/texmf-texlive/tex/latex/base/ifthen.sty)

Package gnuplottex Warning: Shell escape not enabled. (gnuplottex) You'll need to convert the graphs yourself..

) (./25108833066137842-16.0px.aux) (/usr/share/texmf-texlive/tex/latex/ucs/ucsencs.def) Missing $ inserted. <inserted text> $ l.146 _ /: (%,%) -> % (/usr/share/texmf-texlive/tex/latex/jknapltx/ursfs.fd) (/usr/share/texmf-texlive/tex/latex/amsfonts/umsa.fd) (/usr/share/texmf-texlive/tex/latex/amsfonts/umsb.fd) (/usr/share/texmf-texlive/tex/latex/base/ulasy.fd) Missing $ inserted. <inserted text> $ l.150

Overfull \hbox (20.18788pt too wide) in paragraph at lines 122--150 []\T1/cmr/m/n/12 )abbrev do-main BIQ Bi-Quater-nion Bi-Quater-nion(R:Join(Order edSet,CommutativeRing)): Ex-ports == Im-ple-men-ta-tion where C==>Complex [1] (/usr/share/texmf-texlive/tex/latex/base/t1cmtt.fd)

LaTeX Warning: Characters dropped after `\end{axiom}' on input line 196.

LaTeX Warning: Characters dropped after `\end{axiom}' on input line 200.

LaTeX Warning: Characters dropped after `\end{axiom}' on input line 203.

LaTeX Warning: Characters dropped after `\end{axiom}' on input line 206.

LaTeX Warning: Characters dropped after `\end{axiom}' on input line 209.

LaTeX Warning: Characters dropped after `\end{axiom}' on input line 215.

LaTeX Warning: Characters dropped after `\end{axiom}' on input line 220.

LaTeX Warning: Characters dropped after `\end{axiom}' on input line 223.

[2]

LaTeX Warning: Characters dropped after `\end{axiom}' on input line 228.

LaTeX Warning: Characters dropped after `\end{axiom}' on input line 231.

[3] Misplaced alignment tab character &. l.233 $$,Symbol,Symbol,Symbol) -& gt; $$\newpage [4] Misplaced alignment tab character &. l.234 $$) -& gt; $$\newpage [5] [6] Misplaced alignment tab character &. l.236 $$) -& gt; $$\newpage [7] Misplaced alignment tab character &. l.237 $$,Complex Expression R) -& gt; $$\newpage [8] Misplaced alignment tab character &. l.238 $$ -& gt; $$\newpage [9] [10] [11] [12] Overfull \hbox (296.77309pt too wide) detected at line 323 [] [13] (./25108833066137842-16.0px.aux) ) (see the transcript file for additional information) Output written on 25108833066137842-16.0px.dvi (13 pages, 7832 bytes). Transcript written on 25108833066137842-16.0px.log.




  Subject:   Be Bold !!
  ( 15 subscribers )  
Please rate this page: