login  home  contents  what's new  discussion  bug reports help  links  subscribe  changes  refresh  edit
 Topics FrontPage SandBox SandBoxBiQuaternions SandBoxBiQuaternions2 SandBoxBiQuaternions3 <-- You are here. 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 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 /usr/local/lib/fricas/target/x86_64-linux-gnu/bin/fricas -nosman < /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.9 Timestamp: Sun Sep 17 04:15:23 PM CEST 2023 ----------------------------------------------------------------------------- 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) -> )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))) 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.05 SEC. compiling exported qlist : List Complex Expression R -> % Time: 0.01 SEC. compiling exported listq : % -> List Complex Expression R Time: 0.00 SEC. compiling exported matrixq : % -> SquareMatrix(2,Complex Expression R) Time: 0.01 SEC. compiling exported siglist : % -> List Complex Expression R Time: 0.00 SEC. compiling exported sig0 : () -> % Time: 0.00 SEC. compiling exported sig1 : () -> % Time: 0 SEC. compiling exported sig2 : () -> % Time: 0.00 SEC. compiling exported sig3 : () -> % Time: 0.00 SEC. compiling exported D : (%,Symbol,Symbol,Symbol) -> % Time: 0.02 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.04 SEC. compiling exported / : (%,%) -> % Time: 0.00 SEC. compiling exported / : (Complex Expression R,%) -> % Time: 0 SEC. compiling exported / : (%,Complex Expression R) -> % Time: 0 SEC. compiling exported abs : % -> Complex Expression R Time: 0 SEC. compiling exported exp : % -> % Time: 0.07 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: 30710) ;;; *** |BiQuaternion| REDEFINED ;;; *** |BiQuaternion| REDEFINED Time: 0.19 SEC. Cumulative Statistics for Constructor BiQuaternion Time: 0.40 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 19 SEP 2023 08:17:38 AM): ; wrote /var/aw/var/LatexWiki/BIQ.NRLIB/BIQ.fasl ; compilation finished in 0:00:00.052 ------------------------------------------------------------------------ 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 : % -> % 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 ?? : (%, Integer) -> % if Complex(Expression(R)) has LINEXP(INT) ?? : (%, 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 elt : (%, 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 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)) plenaryPower : (%, PositiveInteger) -> % 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 pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Debian) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./6243234185980723709-16.0px.tex LaTeX2e <2022-11-01> patch level 1 L3 programming layer <2023-01-16> (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2022/07/02 v1.4n Standard LaTeX document class (/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo)) (/usr/share/texlive/texmf-dist/tex/latex/ucs/ucs.sty (/usr/share/texlive/texmf-dist/tex/latex/ucs/data/uni-global.def)) (/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty (/usr/share/texlive/texmf-dist/tex/latex/ucs/utf8x.def)) (/usr/share/texlive/texmf-dist/tex/latex/bbm-macros/bbm.sty) (/usr/share/texlive/texmf-dist/tex/latex/jknapltx/mathrsfs.sty) (/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty) (/usr/share/texlive/texmf-dist/tex/latex/pstricks/pstricks.sty (/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg) (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/dvips.def) (/usr/share/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx) (/usr/share/texlive/texmf-dist/tex/latex/graphics/dvipsnam.def)) (/usr/share/texlive/texmf-dist/tex/generic/xkeyval/pst-xkey.tex (/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty (/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex (/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex (/usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex))))) (/usr/share/texlive/texmf-dist/tex/generic/pstricks/pstricks.tex (/usr/share/texlive/texmf-dist/tex/generic/pstricks/pst-fp.tex pst-fp' v0.06, 2020/11/20 (hv)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex (/usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex))) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered .code.tex))) (/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code .tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet ric.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod e.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison .code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code .tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari thmetics.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex))) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex)) PSTricks' v3.18 <2022/11/28> (tvz,hv) --- We are running latex or xelatex --- (/usr/share/texlive/texmf-dist/tex/generic/pstricks/pstricks.con) (/usr/share/texlive/texmf-dist/tex/generic/pstricks/pstricks-color.tex) (/usr/share/texlive/texmf-dist/tex/generic/pstricks/pstricks-arrows.tex) (/usr/share/texlive/texmf-dist/tex/generic/pstricks/pstricks-dots.tex) (/usr/share/texlive/texmf-dist/tex/generic/pstricks/pstricks.con)) (/usr/share/texlive/texmf-dist/tex/generic/pstricks/pst-fp.tex pst-fp' v0.06, 2020/11/20 (hv))) (/usr/share/texlive/texmf-dist/tex/latex/graphics/epsfig.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty) (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg)))) (/usr/share/texlive/texmf-dist/tex/latex/pst-grad/pst-grad.sty (/usr/share/texlive/texmf-dist/tex/generic/pst-grad/pst-grad.tex pst-grad' v1.06, 2006/11/27 (tvz,dg,hv))) (/usr/share/texlive/texmf-dist/tex/latex/pst-plot/pst-plot.sty (/usr/share/texlive/texmf-dist/tex/latex/xkeyval/pst-xkey.sty) (/usr/share/texlive/texmf-dist/tex/latex/multido/multido.sty (/usr/share/texlive/texmf-dist/tex/generic/multido/multido.tex v1.42, 2010/05/14 )) (/usr/share/texlive/texmf-dist/tex/generic/pst-plot/pst-plot.tex (/usr/share/texlive/texmf-dist/tex/generic/pst-tools/pst-tools.tex PST-tools' v0.12, 2021/09/23 (hv)) (/usr/share/texlive/texmf-dist/tex/generic/pstricks-add/pstricks-add.tex (/usr/share/texlive/texmf-dist/tex/generic/pst-node/pst-node.tex v1.43, 2022/01/31) (/usr/share/texlive/texmf-dist/tex/generic/pst-arrow/pst-arrow.tex pst-arrow' v0.05, 2021/11/16 (dr,hv)) (/usr/share/texlive/texmf-dist/tex/generic/pst-3d/pst-3d.tex PST-3d' v1.11, 2010/02/14 (tvz)) (/usr/share/texlive/texmf-dist/tex/generic/pst-math/pst-math.tex pst-math' v0.66 , (CJ,hv)) pstricks-add' v3.93, 2022/11/21 (dr,hv)) v1.94, 2022/11/21 (tvz,hv))) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty (/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty) Package geometry Warning: lmargin' and rmargin' result in NEGATIVE (-108.405p t). width' should be shortened in length. ) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the ?' option. (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty) (/usr/share/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/usr/share/texlive/texmf-dist/tex/latex/setspace/setspace.sty) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xy.sty (/usr/share/texlive/texmf-dist/tex/generic/xypic/xy.tex Bootstrap'ing: catcodes, docmode, (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyrecat.tex ) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyidioms.tex) Xy-pic version 3.8.9 <2013/10/06> Copyright (c) 1991-2013 by Kristoffer H. Rose and others 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/texlive/texmf-dist/tex/generic/iftex/ifpdf.sty)) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyall.tex Xy-pic option: All features v.3.8 (/usr/share/texlive/texmf-dist/tex/generic/xypic/xycurve.tex Xy-pic option: Curve and Spline extension v.3.12 curve, circles, loaded) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyframe.tex Xy-pic option: Frame and Bracket extension v.3.14 loaded) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xycmtip.tex Xy-pic option: Computer Modern tip extension v.3.7 (/usr/share/texlive/texmf-dist/tex/generic/xypic/xytips.tex Xy-pic option: More Tips extension v.3.11 loaded) loaded) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyline.tex Xy-pic option: Line styles extension v.3.10 loaded) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyrotate.tex Xy-pic option: Rotate and Scale extension v.3.8 loaded) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xycolor.tex Xy-pic option: Colour extension v.3.11 loaded) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xymatrix.tex Xy-pic option: Matrix feature v.3.14 loaded) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyarrow.tex Xy-pic option: Arrow and Path feature v.3.9 path, \ar, loaded) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xygraph.tex Xy-pic option: Graph feature v.3.11 loaded) loaded) (/usr/share/texlive/texmf-dist/tex/latex/tools/verbatim.sty) (/usr/share/texlive/texmf-dist/tex/latex/graphviz/graphviz.sty (/usr/share/texlive/texmf-dist/tex/latex/psfrag/psfrag.sty)) (/usr/share/texmf/tex/latex/sagetex.sty Writing sage input file 6243234185980723709-16.0px.sage ) (/usr/share/texlive/texmf-dist/tex/latex/gnuplottex/gnuplottex.sty (/usr/share/texlive/texmf-dist/tex/latex/moreverb/moreverb.sty) (/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty) (/usr/share/texlive/texmf-dist/tex/generic/catchfile/catchfile.sty (/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty) (/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty) (/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty)) Package gnuplottex Warning: Shell escape not enabled. (gnuplottex) You'll need to convert the graphs yourself. ) (/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-dvips.def) No file 6243234185980723709-16.0px.aux. (/usr/share/texlive/texmf-dist/tex/latex/ucs/ucsencs.def) geometry driver: auto-detecting geometry detected driver: dvips Missing $inserted.$ l.147 _ /: (%,%) -> % (/usr/share/texlive/texmf-dist/tex/latex/jknapltx/ursfs.fd) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) Missing $inserted.$ l.151 Overfull \hbox (20.18788pt too wide) in paragraph at lines 123--151 []\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/texlive/texmf-dist/tex/latex/base/t1cmtt.fd) LaTeX Warning: Characters dropped after \end{axiom}' on input line 197. LaTeX Warning: Characters dropped after \end{axiom}' on input line 201. LaTeX Warning: Characters dropped after \end{axiom}' on input line 204. LaTeX Warning: Characters dropped after \end{axiom}' on input line 207. LaTeX Warning: Characters dropped after \end{axiom}' on input line 210. LaTeX Warning: Characters dropped after \end{axiom}' on input line 216. LaTeX Warning: Characters dropped after \end{axiom}' on input line 221. LaTeX Warning: Characters dropped after \end{axiom}' on input line 224. [2] LaTeX Warning: Characters dropped after \end{axiom}' on input line 229. LaTeX Warning: Characters dropped after \end{axiom}' on input line 232. [3] [4] [5] Overfull \hbox (296.77309pt too wide) detected at line 317 [] [6] (./6243234185980723709-16.0px.aux) ) (see the transcript file for additional information) Output written on 6243234185980723709-16.0px.dvi (6 pages, 7032 bytes). Transcript written on 6243234185980723709-16.0px.log. `

 Subject:   Be Bold !! ( 15 subscribers )