axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] Re: [Axiom-mail] finding source code


From: Tim Daly
Subject: [Axiom-developer] Re: [Axiom-mail] finding source code
Date: Thu, 29 Oct 2009 13:09:54 -0500
User-agent: Thunderbird 2.0.0.21 (Windows/20090302)

Martin Baker wrote:
May I ask how you found out about Axiom? What version did you
actually install on your computer?

Ralf,

I have been looking for an open source computer algebra system for some time although I did not try any, I came across Axiom in lists of such systems but I did not try it because (for some reason) I was put off when it said that it was based on LISP.

Having tried it now it works well and it seems very good (I wish I had done so earlier). At first sight the user language reminds me a bit of 'Scala' in that the type is given after the variable if required, also the way that brackets can sometimes be omitted for what looks to me like function calls.

I loaded the binary from this page:
http://www.axiom-developer.org/axiom-website/download.html
(suse,May2009)

I recorded what I did on my web page here:
http://www.euclideanspace.com/maths/standards/program/

As you can see the program seems to work except the draw function which seems to fail with:

System error:
Unknown bfd format

The only other problem is capturing the output to put on a web page, you can see what I mean about 2/3 of the way down this screen:

http://www.euclideanspace.com/maths/algebra/equations/polynomial/cubic/

Apart from being too big for the page, not all the LaTeX seemed to be recognised (I cut and pasted from Axiom to Lyx and then did a screen shot).

So, that's my experience so far, apart from these small problems it looks like a very useful program.

Martin


_______________________________________________
Axiom-mail mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/axiom-mail

Martin,

It appears that you have an interest in documenting the use of mathematics.
Axiom is being rewritten into literate form, which means that the source code
is now taken directly from the books, such as bookvol10.3 which contains the
sources for the Axiom domains.

You may also find interesting examples in several places in Axiom.

1) EXAMPLES OF FUNCTION CALLS

First, there is documentation of example code use. You can type
 )display operation makeprod
and you will see the "Mappings" and some example code. In the case
of the "makeprod" function the example will look like:

 Examples of makeprod from Product

 f:(x:INT):INT +-> 3*x
 g:(x:INT):INT +-> x^3
 h(x:INT):Product(INT,INT) == makeprod(f x,g x)
 h(3)

This gives you sample input for the makeprod command.


2) FUNCTIONS FROM A DOMAIN

You have also expressed an interest in Quaternions. You can see
what functions are available for Quaternions by typing
  )show Quaternion
which gives the output shown below.


3) HELP FUNCTION

For some domains you can also type
  )help Quaternion
and see a help page for that domain with the output shown below.

Axiom is in the process of documenting all of the code. If you
would like to help, either with examples or with explanations of
areas like Quaternions that would be greatly appreciated.


4) INPUT FILES

The directory $AXIOM/input contains a large number of files
which can be read into Axiom and executed. There are examples
of quite a few domains.

5) HYPERDOC

Clearly you cannot get hyperdoc running. I am not sure what
the problem might be but if you send me email we can discuss
it further.

Tim Daly
Elder of the Internet





                       AXIOM Computer Algebra System
                      Version: Axiom (September 2009)
             Timestamp: Thursday October 29, 2009 at 06:43:59
-----------------------------------------------------------------------------
  Issue )copyright to view copyright notices.
  Issue )summary for a summary of useful system commands.
  Issue )quit to leave AXIOM and return to shell.
-----------------------------------------------------------------------------

  Re-reading compress.daase   Re-reading interp.daase
  Re-reading operation.daase
  Re-reading category.daase
  Re-reading browse.daase
(1) ->
(1) -> )display operation makeprod

There is one unexposed function called makeprod :
  [1] (D1,D2) -> Product(D1,D2) from Product(D1,D2)
           if D1 has SETCAT and D2 has SETCAT

Examples of makeprod from Product

f:=(x:INT):INT +-> 3*x
g:=(x:INT):INT +-> x^3
h(x:INT):Product(INT,INT) == makeprod(f x, g x)
h(3)

(1) -> )show Quaternion
Quaternion R: CommutativeRing  is a domain constructor
Abbreviation for Quaternion is QUAT
This constructor is exposed in this frame.
Issue )edit bookvol10.3.spad.pamphlet to see algebra source code for QUAT

------------------------------- Operations --------------------------------
?*? : (R,%) -> %                      ?*? : (%,R) -> %
?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
?+? : (%,%) -> %                      ?-? : (%,%) -> %
-? : % -> %                           ?=? : (%,%) -> Boolean
D : (%,(R -> R)) -> %                 D : % -> % if R has DIFRING
1 : () -> %                           0 : () -> %
?^? : (%,PositiveInteger) -> %        abs : % -> R if R has RNS
coerce : R -> %                       coerce : Integer -> %
coerce : % -> OutputForm              conjugate : % -> %
hash : % -> SingleInteger             imagI : % -> R
imagJ : % -> R                        imagK : % -> R
inv : % -> % if R has FIELD           latex : % -> String
map : ((R -> R),%) -> %               norm : % -> R
one? : % -> Boolean                   quatern : (R,R,R,R) -> %
real : % -> R                         recip : % -> Union(%,"failed")
retract : % -> R                      sample : () -> %
zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
?*? : (Fraction Integer,%) -> % if R has FIELD
?*? : (%,Fraction Integer) -> % if R has FIELD
?*? : (NonNegativeInteger,%) -> %
?**? : (%,Integer) -> % if R has FIELD
?**? : (%,NonNegativeInteger) -> %
?<? : (%,%) -> Boolean if R has ORDSET
?<=? : (%,%) -> Boolean if R has ORDSET
?>? : (%,%) -> Boolean if R has ORDSET
?>=? : (%,%) -> Boolean if R has ORDSET
D : (%,(R -> R),NonNegativeInteger) -> %
D : (%,List Symbol,List NonNegativeInteger) -> % if R has PDRING SYMBOL
D : (%,Symbol,NonNegativeInteger) -> % if R has PDRING SYMBOL
D : (%,List Symbol) -> % if R has PDRING SYMBOL
D : (%,Symbol) -> % if R has PDRING SYMBOL
D : (%,NonNegativeInteger) -> % if R has DIFRING
?^? : (%,Integer) -> % if R has FIELD
?^? : (%,NonNegativeInteger) -> %
characteristic : () -> NonNegativeInteger
charthRoot : % -> Union(%,"failed") if R has CHARNZ
coerce : Fraction Integer -> % if R has FIELD or R has RETRACT FRAC INT
convert : % -> InputForm if R has KONVERT INFORM
differentiate : (%,(R -> R)) -> %
differentiate : (%,(R -> R),NonNegativeInteger) -> %
differentiate : (%,List Symbol,List NonNegativeInteger) -> % if R has PDRING SYMBOL
differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING SYMBOL
differentiate : (%,List Symbol) -> % if R has PDRING SYMBOL
differentiate : (%,Symbol) -> % if R has PDRING SYMBOL
differentiate : (%,NonNegativeInteger) -> % if R has DIFRING
differentiate : % -> % if R has DIFRING
?.? : (%,R) -> % if R has ELTAB(R,R)
eval : (%,Symbol,R) -> % if R has IEVALAB(SYMBOL,R)
eval : (%,List Symbol,List R) -> % if R has IEVALAB(SYMBOL,R)
eval : (%,List Equation R) -> % if R has EVALAB R
eval : (%,Equation R) -> % if R has EVALAB R
eval : (%,R,R) -> % if R has EVALAB R
eval : (%,List R,List R) -> % if R has EVALAB R
max : (%,%) -> % if R has ORDSET
min : (%,%) -> % if R has ORDSET
rational : % -> Fraction Integer if R has INS
rational? : % -> Boolean if R has INS
rationalIfCan : % -> Union(Fraction Integer,"failed") if R has INS
reducedSystem : Matrix % -> Matrix R
reducedSystem : (Matrix %,Vector %) -> Record(mat: Matrix R,vec: Vector R)
reducedSystem : (Matrix %,Vector %) -> Record(mat: Matrix Integer,vec: Vector Integer) if R has LINEXP INT
reducedSystem : Matrix % -> Matrix Integer if R has LINEXP INT
retract : % -> Fraction Integer if R has RETRACT FRAC INT
retract : % -> Integer if R has RETRACT INT
retractIfCan : % -> Union(R,"failed")
retractIfCan : % -> Union(Fraction Integer,"failed") if R has RETRACT FRAC INT
retractIfCan : % -> Union(Integer,"failed") if R has RETRACT INT
subtractIfCan : (%,%) -> Union(%,"failed")

(1) -> )help Quaternion
====================================================================
Quaternion examples
====================================================================

The domain constructor Quaternion implements quaternions over
commutative rings.

The basic operation for creating quaternions is quatern.  This is a
quaternion over the rational numbers.

 q := quatern(2/11,-8,3/4,1)
    2        3
   -- - 8i + - j + k
   11        4
                       Type: Quaternion Fraction Integer

The four arguments are the real part, the i imaginary part, the j
imaginary part, and the k imaginary part, respectively.

 [real q, imagI q, imagJ q, imagK q]
     2     3
   [--,- 8,-,1]
    11     4
                       Type: List Fraction Integer

Because q is over the rationals (and nonzero), you can invert it.

 inv q
     352     15488      484       1936
   ------ + ------ i - ----- j - ------ k
   126993   126993     42331     126993
                       Type: Quaternion Fraction Integer

The usual arithmetic (ring) operations are available

 q^6
     2029490709319345   48251690851     144755072553     48251690851
   - ---------------- - ----------- i + ------------ j + ----------- k
        7256313856        1288408         41229056         10307264
                       Type: Quaternion Fraction Integer

 r := quatern(-2,3,23/9,-89); q + r
     20        119
   - -- - 5i + --- j - 88k
     11         36
                       Type: Quaternion Fraction Integer

In general, multiplication is not commutative.

 q * r - r * q
     2495             817
   - ---- i - 1418j - --- k
      18               18
                        Type: Quaternion Fraction Integer

There are no predefined constants for the imaginary i, j, and k parts,
but you can easily define them.

 i:=quatern(0,1,0,0)
   i
                        Type: Quaternion Integer

 j:=quatern(0,0,1,0)
   j
                        Type: Quaternion Integer

 k:=quatern(0,0,0,1)
   k
                        Type: Quaternion Integer

These satisfy the normal identities.

 [i*i, j*j, k*k, i*j, j*k, k*i, q*i]
                            2         3
    [- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
                           11         4
                         Type: List Quaternion Fraction Integer

The norm is the quaternion times its conjugate.

 norm q
   126993
   ------
    1936
                         Type: Fraction Integer

 conjugate q
     2        3
    -- + 8i - - j - k
    11        4
                         Type: Quaternion Fraction Integer

 q * %
    126993
    ------
     1936
                         Type: Quaternion Fraction Integer

See Also:
o )help Octonion
o )help Complex
o )help CliffordAlgebra
o )show Quaternion

(1) -> )sys cat int/input/Quaternion.output
Starts dribbling to Quaternion.output (2009/10/29, 7:36:17).
)set message test on

)set message auto off

)clear all

--S 1 of 13
q := quatern(2/11,-8,3/4,1)


        2        3
  (1)  -- - 8i + - j + k
       11        4
Type: Quaternion Fraction Integer
--R
--R
--R         2        3
--R   (1)  -- - 8i + - j + k
--R        11        4
--R Type: Quaternion Fraction Integer
--E 1

--S 2 of 13
[real q, imagI q, imagJ q, imagK q]


         2     3
  (2)  [--,- 8,-,1]
        11     4
Type: List Fraction Integer
--R
--R
--R          2     3
--R   (2)  [--,- 8,-,1]
--R         11     4
--R Type: List Fraction Integer
--E 2

--S 3 of 13
inv q


         352     15488      484       1936
  (3)  ------ + ------ i - ----- j - ------ k
       126993   126993     42331     126993
Type: Quaternion Fraction Integer
--R
--R
--R          352     15488      484       1936
--R   (3)  ------ + ------ i - ----- j - ------ k
--R        126993   126993     42331     126993
--R Type: Quaternion Fraction Integer
--E 3

--S 4 of 13
q^6


         2029490709319345   48251690851     144755072553     48251690851
  (4)  - ---------------- - ----------- i + ------------ j + ----------- k
            7256313856        1288408         41229056         10307264
Type: Quaternion Fraction Integer
--R
--R
--R          2029490709319345   48251690851     144755072553     48251690851
--R (4) - ---------------- - ----------- i + ------------ j + ----------- k
--R             7256313856        1288408         41229056         10307264
--R Type: Quaternion Fraction Integer
--E 4

--S 5 of 13
r := quatern(-2,3,23/9,-89); q + r


         20        119
  (5)  - -- - 5i + --- j - 88k
         11         36
Type: Quaternion Fraction Integer
--R
--R
--R          20        119
--R   (5)  - -- - 5i + --- j - 88k
--R          11         36
--R Type: Quaternion Fraction Integer
--E 5

--S 6 of 13
q * r - r * q


         2495             817
  (6)  - ---- i - 1418j - --- k
          18               18
Type: Quaternion Fraction Integer
--R
--R
--R          2495             817
--R   (6)  - ---- i - 1418j - --- k
--R           18               18
--R Type: Quaternion Fraction Integer
--E 6

--S 7 of 13
i:=quatern(0,1,0,0)


  (7)  i
Type: Quaternion Integer
--R
--R
--R   (7)  i
--R Type: Quaternion Integer
--E 7

--S 8 of 13
j:=quatern(0,0,1,0)


  (8)  j
Type: Quaternion Integer
--R
--R
--R   (8)  j
--R Type: Quaternion Integer
--E 8

--S 9 of 13
k:=quatern(0,0,0,1)


  (9)  k
Type: Quaternion Integer
--R
--R
--R   (9)  k
--R Type: Quaternion Integer
--E 9

--S 10 of 13
[i*i, j*j, k*k, i*j, j*k, k*i, q*i]


                                2         3
  (10)  [- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
                               11         4
Type: List Quaternion Fraction Integer
--R
--R
--R                                 2         3
--R   (10)  [- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
--R                                11         4
--R Type: List Quaternion Fraction Integer
--E 10

--S 11 of 13
norm q


        126993
  (11)  ------
         1936
Type: Fraction Integer
--R
--R
--R         126993
--R   (11)  ------
--R          1936
--R Type: Fraction Integer
--E 11

--S 12 of 13
conjugate q


         2        3
  (12)  -- + 8i - - j - k
        11        4
Type: Quaternion Fraction Integer
--R
--R
--R          2        3
--R   (12)  -- + 8i - - j - k
--R         11        4
--R Type: Quaternion Fraction Integer
--E 12

--S 13 of 13
q * %


        126993
  (13)  ------
         1936
Type: Quaternion Fraction Integer
--R
--R
--R         126993
--R   (13)  ------
--R          1936
--R Type: Quaternion Fraction Integer
--E 13
)spool

(1) ->

                       AXIOM Computer Algebra System
                      Version: Axiom (September 2009)
             Timestamp: Thursday October 29, 2009 at 06:43:59
-----------------------------------------------------------------------------
  Issue )copyright to view copyright notices.
  Issue )summary for a summary of useful system commands.
  Issue )quit to leave AXIOM and return to shell.
-----------------------------------------------------------------------------

  Re-reading compress.daase   Re-reading interp.daase
  Re-reading operation.daase
  Re-reading category.daase
  Re-reading browse.daase
(1) ->
(1) -> )display operation makeprod

There is one unexposed function called makeprod :
  [1] (D1,D2) -> Product(D1,D2) from Product(D1,D2)
           if D1 has SETCAT and D2 has SETCAT

Examples of makeprod from Product

f:=(x:INT):INT +-> 3*x
g:=(x:INT):INT +-> x^3
h(x:INT):Product(INT,INT) == makeprod(f x, g x)
h(3)

(1) -> )show Quaternion
Quaternion R: CommutativeRing  is a domain constructor
Abbreviation for Quaternion is QUAT
This constructor is exposed in this frame.
Issue )edit bookvol10.3.spad.pamphlet to see algebra source code for QUAT

------------------------------- Operations --------------------------------
?*? : (R,%) -> %                      ?*? : (%,R) -> %
?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
?+? : (%,%) -> %                      ?-? : (%,%) -> %
-? : % -> %                           ?=? : (%,%) -> Boolean
D : (%,(R -> R)) -> %                 D : % -> % if R has DIFRING
1 : () -> %                           0 : () -> %
?^? : (%,PositiveInteger) -> %        abs : % -> R if R has RNS
coerce : R -> %                       coerce : Integer -> %
coerce : % -> OutputForm              conjugate : % -> %
hash : % -> SingleInteger             imagI : % -> R
imagJ : % -> R                        imagK : % -> R
inv : % -> % if R has FIELD           latex : % -> String
map : ((R -> R),%) -> %               norm : % -> R
one? : % -> Boolean                   quatern : (R,R,R,R) -> %
real : % -> R                         recip : % -> Union(%,"failed")
retract : % -> R                      sample : () -> %
zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
?*? : (Fraction Integer,%) -> % if R has FIELD
?*? : (%,Fraction Integer) -> % if R has FIELD
?*? : (NonNegativeInteger,%) -> %
?**? : (%,Integer) -> % if R has FIELD
?**? : (%,NonNegativeInteger) -> %
?<? : (%,%) -> Boolean if R has ORDSET
?<=? : (%,%) -> Boolean if R has ORDSET
?>? : (%,%) -> Boolean if R has ORDSET
?>=? : (%,%) -> Boolean if R has ORDSET
D : (%,(R -> R),NonNegativeInteger) -> %
D : (%,List Symbol,List NonNegativeInteger) -> % if R has PDRING SYMBOL
D : (%,Symbol,NonNegativeInteger) -> % if R has PDRING SYMBOL
D : (%,List Symbol) -> % if R has PDRING SYMBOL
D : (%,Symbol) -> % if R has PDRING SYMBOL
D : (%,NonNegativeInteger) -> % if R has DIFRING
?^? : (%,Integer) -> % if R has FIELD
?^? : (%,NonNegativeInteger) -> %
characteristic : () -> NonNegativeInteger
charthRoot : % -> Union(%,"failed") if R has CHARNZ
coerce : Fraction Integer -> % if R has FIELD or R has RETRACT FRAC INT
convert : % -> InputForm if R has KONVERT INFORM
differentiate : (%,(R -> R)) -> %
differentiate : (%,(R -> R),NonNegativeInteger) -> %
differentiate : (%,List Symbol,List NonNegativeInteger) -> % if R has PDRING SYMBOL
differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING SYMBOL
differentiate : (%,List Symbol) -> % if R has PDRING SYMBOL
differentiate : (%,Symbol) -> % if R has PDRING SYMBOL
differentiate : (%,NonNegativeInteger) -> % if R has DIFRING
differentiate : % -> % if R has DIFRING
?.? : (%,R) -> % if R has ELTAB(R,R)
eval : (%,Symbol,R) -> % if R has IEVALAB(SYMBOL,R)
eval : (%,List Symbol,List R) -> % if R has IEVALAB(SYMBOL,R)
eval : (%,List Equation R) -> % if R has EVALAB R
eval : (%,Equation R) -> % if R has EVALAB R
eval : (%,R,R) -> % if R has EVALAB R
eval : (%,List R,List R) -> % if R has EVALAB R
max : (%,%) -> % if R has ORDSET
min : (%,%) -> % if R has ORDSET
rational : % -> Fraction Integer if R has INS
rational? : % -> Boolean if R has INS
rationalIfCan : % -> Union(Fraction Integer,"failed") if R has INS
reducedSystem : Matrix % -> Matrix R
reducedSystem : (Matrix %,Vector %) -> Record(mat: Matrix R,vec: Vector R)
reducedSystem : (Matrix %,Vector %) -> Record(mat: Matrix Integer,vec: Vector Integer) if R has LINEXP INT
reducedSystem : Matrix % -> Matrix Integer if R has LINEXP INT
retract : % -> Fraction Integer if R has RETRACT FRAC INT
retract : % -> Integer if R has RETRACT INT
retractIfCan : % -> Union(R,"failed")
retractIfCan : % -> Union(Fraction Integer,"failed") if R has RETRACT FRAC INT
retractIfCan : % -> Union(Integer,"failed") if R has RETRACT INT
subtractIfCan : (%,%) -> Union(%,"failed")

(1) -> )help Quaternion
====================================================================
Quaternion examples
====================================================================

The domain constructor Quaternion implements quaternions over
commutative rings.

The basic operation for creating quaternions is quatern.  This is a
quaternion over the rational numbers.

 q := quatern(2/11,-8,3/4,1)
    2        3
   -- - 8i + - j + k
   11        4
                       Type: Quaternion Fraction Integer

The four arguments are the real part, the i imaginary part, the j
imaginary part, and the k imaginary part, respectively.

 [real q, imagI q, imagJ q, imagK q]
     2     3
   [--,- 8,-,1]
    11     4
                       Type: List Fraction Integer

Because q is over the rationals (and nonzero), you can invert it.

 inv q
     352     15488      484       1936
   ------ + ------ i - ----- j - ------ k
   126993   126993     42331     126993
                       Type: Quaternion Fraction Integer

The usual arithmetic (ring) operations are available

 q^6
     2029490709319345   48251690851     144755072553     48251690851
   - ---------------- - ----------- i + ------------ j + ----------- k
        7256313856        1288408         41229056         10307264
                       Type: Quaternion Fraction Integer

 r := quatern(-2,3,23/9,-89); q + r
     20        119
   - -- - 5i + --- j - 88k
     11         36
                       Type: Quaternion Fraction Integer

In general, multiplication is not commutative.

 q * r - r * q
     2495             817
   - ---- i - 1418j - --- k
      18               18
                        Type: Quaternion Fraction Integer

There are no predefined constants for the imaginary i, j, and k parts,
but you can easily define them.

 i:=quatern(0,1,0,0)
   i
                        Type: Quaternion Integer

 j:=quatern(0,0,1,0)
   j
                        Type: Quaternion Integer

 k:=quatern(0,0,0,1)
   k
                        Type: Quaternion Integer

These satisfy the normal identities.

 [i*i, j*j, k*k, i*j, j*k, k*i, q*i]
                            2         3
    [- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
                           11         4
                         Type: List Quaternion Fraction Integer

The norm is the quaternion times its conjugate.

 norm q
   126993
   ------
    1936
                         Type: Fraction Integer

 conjugate q
     2        3
    -- + 8i - - j - k
    11        4
                         Type: Quaternion Fraction Integer

 q * %
    126993
    ------
     1936
                         Type: Quaternion Fraction Integer

See Also:
o )help Octonion
o )help Complex
o )help CliffordAlgebra
o )show Quaternion

(1) -> )sys cat int/input/Quaternion.output
Starts dribbling to Quaternion.output (2009/10/29, 7:36:17).
)set message test on

)set message auto off

)clear all

--S 1 of 13
q := quatern(2/11,-8,3/4,1)


        2        3
  (1)  -- - 8i + - j + k
       11        4
Type: Quaternion Fraction Integer
--R
--R
--R         2        3
--R   (1)  -- - 8i + - j + k
--R        11        4
--R Type: Quaternion Fraction Integer
--E 1

--S 2 of 13
[real q, imagI q, imagJ q, imagK q]


         2     3
  (2)  [--,- 8,-,1]
        11     4
Type: List Fraction Integer
--R
--R
--R          2     3
--R   (2)  [--,- 8,-,1]
--R         11     4
--R Type: List Fraction Integer
--E 2

--S 3 of 13
inv q


         352     15488      484       1936
  (3)  ------ + ------ i - ----- j - ------ k
       126993   126993     42331     126993
Type: Quaternion Fraction Integer
--R
--R
--R          352     15488      484       1936
--R   (3)  ------ + ------ i - ----- j - ------ k
--R        126993   126993     42331     126993
--R Type: Quaternion Fraction Integer
--E 3

--S 4 of 13
q^6


         2029490709319345   48251690851     144755072553     48251690851
  (4)  - ---------------- - ----------- i + ------------ j + ----------- k
            7256313856        1288408         41229056         10307264
Type: Quaternion Fraction Integer
--R
--R
--R          2029490709319345   48251690851     144755072553     48251690851
--R (4) - ---------------- - ----------- i + ------------ j + ----------- k
--R             7256313856        1288408         41229056         10307264
--R Type: Quaternion Fraction Integer
--E 4

--S 5 of 13
r := quatern(-2,3,23/9,-89); q + r


         20        119
  (5)  - -- - 5i + --- j - 88k
         11         36
Type: Quaternion Fraction Integer
--R
--R
--R          20        119
--R   (5)  - -- - 5i + --- j - 88k
--R          11         36
--R Type: Quaternion Fraction Integer
--E 5

--S 6 of 13
q * r - r * q


         2495             817
  (6)  - ---- i - 1418j - --- k
          18               18
Type: Quaternion Fraction Integer
--R
--R
--R          2495             817
--R   (6)  - ---- i - 1418j - --- k
--R           18               18
--R Type: Quaternion Fraction Integer
--E 6

--S 7 of 13
i:=quatern(0,1,0,0)


  (7)  i
Type: Quaternion Integer
--R
--R
--R   (7)  i
--R Type: Quaternion Integer
--E 7

--S 8 of 13
j:=quatern(0,0,1,0)


  (8)  j
Type: Quaternion Integer
--R
--R
--R   (8)  j
--R Type: Quaternion Integer
--E 8

--S 9 of 13
k:=quatern(0,0,0,1)


  (9)  k
Type: Quaternion Integer
--R
--R
--R   (9)  k
--R Type: Quaternion Integer
--E 9

--S 10 of 13
[i*i, j*j, k*k, i*j, j*k, k*i, q*i]


                                2         3
  (10)  [- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
                               11         4
Type: List Quaternion Fraction Integer
--R
--R
--R                                 2         3
--R   (10)  [- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
--R                                11         4
--R Type: List Quaternion Fraction Integer
--E 10

--S 11 of 13
norm q


        126993
  (11)  ------
         1936
Type: Fraction Integer
--R
--R
--R         126993
--R   (11)  ------
--R          1936
--R Type: Fraction Integer
--E 11

--S 12 of 13
conjugate q


         2        3
  (12)  -- + 8i - - j - k
        11        4
Type: Quaternion Fraction Integer
--R
--R
--R          2        3
--R   (12)  -- + 8i - - j - k
--R         11        4
--R Type: Quaternion Fraction Integer
--E 12

--S 13 of 13
q * %


        126993
  (13)  ------
         1936
Type: Quaternion Fraction Integer
--R
--R
--R         126993
--R   (13)  ------
--R          1936
--R Type: Quaternion Fraction Integer
--E 13
)spool

(1) ->





reply via email to

[Prev in Thread] Current Thread [Next in Thread]