axiom-developer
[Top][All Lists]
Advanced

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

[Axiom-developer] 20080818.02.tpd.patch (new input files (Stumbo, Cygans


From: daly
Subject: [Axiom-developer] 20080818.02.tpd.patch (new input files (Stumbo, Cyganski, Hemmecke))
Date: Tue, 19 Aug 2008 00:50:23 -0500

Three new input files are added for regression testing
  biquat.input (David Cyganski)
  ifthenelse.input (Fabio Stumbo)
  sqrt3.input (Ralf Hemmecke)

Fabio Stumbo was added to the credits list in readme and setq.lisp
=======================================================================
diff --git a/changelog b/changelog
index 04a4914..377aa85 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,13 @@
+20080818 tpd src/input/Makefile biquat.input added
+20080818 dxc src/input/biquat.input added
+20080818 dxc "David Cyganski" (no known email)
+20080818 tpd src/input/Makefile ifthenelse.input added
+20080818 fxs src/input/ifthenelse.input added
+20080818 tpd src/interp/setq.lisp add Fabio Stumbo
+20080818 tpd readme add Fabio Stumbo
+20080818 fxs "Fabio Stumbo" (no known email)
+20080818 tpd src/input/Makefile sqrt3.input added
+20080818 rhx src/input/sqrt3.input added
 20080818 tpd src/input/Makefile typetower.input added
 20080818 rhx src/input/typetower.input added
 20080817 tpd src/algebra/vector.spad doc ravel from CartesianTensor
diff --git a/readme b/readme
index b2e20ab..7735016 100644
--- a/readme
+++ b/readme
@@ -240,8 +240,8 @@ at the axiom command prompt will prettyprint the list.
 "Gerhard Schneider      Martin Schoenert       Marshall Schor"
 "Frithjof Schulze       Fritz Schwarz          Nick Simicich"
 "William Sit            Elena Smirnova         Jonathan Steinbach"
-"Christine Sundaresan   Robert Sutor           Moss E. Sweedler"
-"Eugene Surowitz"
+"Fabio Stumbo           Christine Sundaresan   Robert Sutor"
+"Moss E. Sweedler       Eugene Surowitz"
 "Max Tegmark            James Thatcher         Balbir Thomas"
 "Mike Thomas            Dylan Thurston         Barry Trager"
 "Themos T. Tsikas"
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet
index e70b0d9..0d919d6 100644
--- a/src/input/Makefile.pamphlet
+++ b/src/input/Makefile.pamphlet
@@ -278,7 +278,8 @@ REGRES= algaggr.regress algbrbf.regress  algfacob.regress 
alist.regress  \
     arrows.regress    asinatan.regress asinhatanh.regress \
     assign.regress    atansqrt.regress \
     asec.regress      bags.regress     bbtree.regress   besselk.regress \
-    binary.regress    bop.regress      bstree.regress   bouquet.regress \
+    binary.regress    biquat.regress \
+    bop.regress       bstree.regress   bouquet.regress \
     bug100.regress    bug101.regress \
     bug103.regress    bug10069.regress \
     bugs.regress      bug10312.regress bug6357.regress  bug9057.regress \
@@ -315,7 +316,8 @@ REGRES= algaggr.regress algbrbf.regress  algfacob.regress 
alist.regress  \
     gstbl.regress     heap.regress     heat.regress     help.regress \
     herm.regress      heugcd.regress \
     hexadec.regress   ico.regress      ideal.regress \
-    ifact.regress     infprod.regress  intaf.regress    intbypart.regress \
+    ifact.regress     ifthenelse.regress \
+    infprod.regress  intaf.regress    intbypart.regress \
     intdeq.regress \
     intef2.regress    intef.regress    intg0.regress    intheory.regress \
     intmix2.regress   intmix.regress   int.regress      intrf.regress \
@@ -363,7 +365,8 @@ REGRES= algaggr.regress algbrbf.regress  algfacob.regress 
alist.regress  \
     series2.regress   series.regress   sersolve.regress set.regress \
     sincos.regress    sinhcosh.regress \
     sincosex.regress  sint.regress     skew.regress     slowint.regress \
-    solvetra.regress  space3.regress   sqmatrix.regress sregset.regress \
+    solvetra.regress  space3.regress   sqmatrix.regress sqrt3.regress \
+    sregset.regress \
     stbl.regress      stream2.regress  stream.regress   streams.regress \
     string.regress    strtbl.regress   summation.regress \
     symbol.regress    t111293.regress  table.regress    tancot.regress \
@@ -518,7 +521,8 @@ FILES= ${OUT}/algaggr.input  ${OUT}/algbrbf.input    
${OUT}/algfacob.input \
        ${OUT}/asec.input \
        ${OUT}/bags.input     ${OUT}/bbtree.input     ${OUT}/besselk.input \
        ${OUT}/bern.input \
-       ${OUT}/bernpoly.input ${OUT}/binary.input     ${OUT}/bop.input \
+       ${OUT}/bernpoly.input ${OUT}/binary.input     ${OUT}/biquat.input \
+       ${OUT}/bop.input \
        ${OUT}/bouquet.input  ${OUT}/bstree.input     ${OUT}/bug6357.input \
        ${OUT}/bug9057.input  ${OUT}/bug100.input     ${OUT}/bug101.input \
        ${OUT}/bug103.input \
@@ -574,6 +578,7 @@ FILES= ${OUT}/algaggr.input  ${OUT}/algbrbf.input    
${OUT}/algfacob.input \
        ${OUT}/herm.input     ${OUT}/heugcd.input \
        ${OUT}/hexadec.input    ${OUT}/huang.input \
        ${OUT}/ico.input      ${OUT}/ideal.input      ${OUT}/ifact.input \
+       ${OUT}/ifthenelse.input \
        ${OUT}/images1.input  ${OUT}/images1a.input   ${OUT}/images3a.input \
        ${OUT}/images3.input  ${OUT}/images6.input    ${OUT}/images6a.input \
        ${OUT}/images7.input  ${OUT}/images7a.input   ${OUT}/infprod.input \
@@ -652,7 +657,8 @@ FILES= ${OUT}/algaggr.input  ${OUT}/algbrbf.input    
${OUT}/algfacob.input \
        ${OUT}/sinsin2.input  ${OUT}/sint.input       ${OUT}/skew.input \
        ${OUT}/slowint.input  ${OUT}/solvetra.input   ${OUT}/space3.input \
        ${OUT}/spiral.input \
-       ${OUT}/sqmatrix.input ${OUT}/sregset.input    ${OUT}/stbl.input \
+       ${OUT}/sqmatrix.input ${OUT}/sqrt3.input \
+       ${OUT}/sregset.input  ${OUT}/stbl.input \
        ${OUT}/stream2.input  ${OUT}/stream.input     ${OUT}/streams.input \
        ${OUT}/string.input   ${OUT}/strtbl.input     ${OUT}/summation.input \
        ${OUT}/symbol.input \
@@ -722,6 +728,7 @@ DOCFILES= \
   ${DOC}/bbtree.input.dvi      ${DOC}/besselk.input.dvi    \
   ${DOC}/bern.input.dvi       \
   ${DOC}/bernpoly.input.dvi    ${DOC}/binary.input.dvi     \
+  ${DOC}/biquat.input.dvi \
   ${DOC}/bop.input.dvi         ${DOC}/bouquet.input.dvi    \
   ${DOC}/bstree.input.dvi      ${DOC}/bug10069.input.dvi   \
   ${DOC}/bug100.input.dvi      ${DOC}/bug101.input.dvi     \
@@ -860,6 +867,7 @@ DOCFILES= \
   ${DOC}/hexadec.input.dvi     ${DOC}/hilbert.as.dvi       \
   ${DOC}/huang.input.dvi       ${DOC}/ico.input.dvi        \
   ${DOC}/ideal.input.dvi       ${DOC}/ifact.input.dvi      \
+  ${DOC}/ifthenelse.input.dvi \
   ${DOC}/images1a.input.dvi    ${DOC}/images1.input.dvi    \
   ${DOC}/images2a.input.dvi    ${DOC}/images2.input.dvi    \
   ${DOC}/images3a.input.dvi    ${DOC}/images3.input.dvi    \
@@ -993,7 +1001,8 @@ DOCFILES= \
   ${DOC}/skew.input.dvi        ${DOC}/slowint.input.dvi    \
   ${DOC}/solvetra.input.dvi    ${DOC}/space3.input.dvi     \
   ${DOC}/spadprof.input.dvi    ${DOC}/spiral.input.dvi     \
-  ${DOC}/sqmatrix.input.dvi    ${DOC}/sregset.input.dvi    \
+  ${DOC}/sqmatrix.input.dvi    ${DOC}/sqrt3.input.dvi      \
+  ${DOC}/sregset.input.dvi    \
   ${DOC}/stbl.input.dvi        ${DOC}/stream2.input.dvi    \
   ${DOC}/stream.input.dvi      ${DOC}/streams.input.dvi    \
   ${DOC}/string.input.dvi      ${DOC}/strtbl.input.dvi     \
diff --git a/src/input/biquat.input.pamphlet b/src/input/biquat.input.pamphlet
new file mode 100644
index 0000000..bfb3165
--- /dev/null
+++ b/src/input/biquat.input.pamphlet
@@ -0,0 +1,790 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/input biquat.input}
+\author{D. Cyganski}
+\maketitle
+\begin{abstract}
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+@
+<<*>>=
+)spool biquat.output
+)set message test on
+)set message auto off
+)clear all
+ 
+@
+\section{Hamiltonian Biquaternions}
+
+Define the type $Q$ of Hamiltonian biquaternions (not to be confused with
+Clifford biquaternions which are an entirely different object)
+<<*>>=
+
+--S 1 of 43
+C:=Complex Expression Integer
+--R 
+--R
+--R   (1)  Complex Expression Integer
+--R                                                                 Type: 
Domain
+--E 1
+
+--S 2 of 43
+Q:=Quaternion C
+--R 
+--R
+--R   (2)  Quaternion Complex Expression Integer
+--R                                                                 Type: 
Domain
+--E 2
+
+--S 3 of 43
+q:Q:=quatern(q0,q1,q2,q3)
+--R 
+--R
+--R   (3)  q0 + q1 i + q2 j + q3 k
+--R                                  Type: Quaternion Complex Expression 
Integer
+--E 3
+
+@
+Define a function that takes a complex list (parameter l) into a 
+quaternion
+<<*>>=
+
+--S 4 of 43
+qlist(l:List C):Q==quatern(1.1,1.2,1.3,1.4)
+--R 
+--R   Function declaration qlist : List Complex Expression Integer -> 
+--R      Quaternion Complex Expression Integer has been added to 
+--R      workspace.
+--R                                                                   Type: 
Void
+--E 4
+
+@
+Define a function that takes a quaternion into a list
+<<*>>=
+
+--S 5 of 43
+listq(x:Q):List C == [real x, imagI x, imagJ x, imagK x]
+--R 
+--R   Function declaration listq : Quaternion Complex Expression Integer
+--R       -> List Complex Expression Integer has been added to workspace.
+--R                                                                   Type: 
Void
+--E 5
+
+@
+Define a function that takes a biquat into a matrix
+<<*>>=
+
+--S 6 of 43
+matrixq(x:Q):Matrix C == matrix _
+             [[real x + %i*imagI(x), imagJ x + %i*imagK(x)],_
+             [-imagJ(x) + %i*imagK(x), real x - %i*imagI(x)]]
+--R 
+--R   Function declaration matrixq : Quaternion Complex Expression Integer
+--R       -> Matrix Complex Expression Integer has been added to 
+--R      workspace.
+--R                                                                   Type: 
Void
+--E 6
+
+@
+\section{The Pauli basis Biquaternions}
+
+The quaternion package in axiom is based upon the Hamiltonian basis,
+i, j, k, in contrast to the Pauli basis used in the Morgan papers which
+make certain operations correspond more closely (in the sense of
+visualization as ordering of components is more natural so that 
+classical operations can be easily identified) to vector calculus
+functions and connect with more directly with various spinor QM
+formulations. To both follow these papers and obtain these visualization
+benefits, we will define and use the Pauli basis also.
+
+The Pauli basis in terms of the Hamiltonian quaternion basis
+<<*>>=
+
+--S 7 of 43
+sig0:=quatern(1,0,0,0)::Q
+--R 
+--R
+--R   (7)  1
+--R                                  Type: Quaternion Complex Expression 
Integer
+--E 7
+
+--S 8 of 43
+sig1:=%i*quatern(0,0,0,1)::Q
+--R 
+--R
+--R   (8)  %i k
+--R                                  Type: Quaternion Complex Expression 
Integer
+--E 8
+
+--S 9 of 43
+sig2:=%i*quatern(0,0,1,0)::Q
+--R 
+--R
+--R   (9)  %i j
+--R                                  Type: Quaternion Complex Expression 
Integer
+--E 9
+
+--S 10 of 43
+sig3:=-%i*quatern(0,1,0,0)::Q
+--R 
+--R
+--R   (10)  - %i i
+--R                                  Type: Quaternion Complex Expression 
Integer
+--E 10
+
+@
+For purposes of manipulation and display it would be best if we either
+\begin{enumerate}
+\item Copy the quaternion source code and edit it to use $\sigma_i$ as
+symbols for the basis rather than i, j, k and change the definition of
+multiplication to correspond to this Pauli basis so that all current
+display and entry functions are flipped to the new basis
+\item Use the $\sigma$ basis above with the existing package but define a
+new display function, say sigrep, that can show us the results in Pauli
+form at will, but otherwise show it in Hamiltonian basis
+\end{enumerate}
+
+While 2 is not as natural and convenient, it is easier to code and would
+automatically provide a development that could be seen in the visually 
+appealing Pauli form, or in the standard Hamiltonian form of biquaternions.
+
+After a quick review and finding no fast path to 2, and not wishing to get
+into the mechanics of compiling an axiom package instead of working on
+the physics, I have taken the yet easier path and simply defined the
+simplest display function that gives me access to seeing Pauli basis
+results: a list of the four Pauli basis coefficients.
+
+Define a function that produces the Pauli basis representation of the
+biquaternion.
+<<*>>=
+
+--S 11 of 43
+siglist(x:Q):List C == [real x, -imagK(x)*%i, -imagJ(x)*%i, %i*imagI(x)]
+--R 
+--R   Function declaration siglist : Quaternion Complex Expression Integer
+--R       -> List Complex Expression Integer has been added to workspace.
+--R                                                                   Type: 
Void
+--E 11
+
+@
+\section{Biquaternion Calculus}
+
+Define the quaternion derivative (Morgan, 2001, Eq. 2)
+<<*>>=
+
+--S 12 of 43
+D(q:Q,x:Symbol,y:Symbol,z:Symbol):Q==sig1*D(q,x)+sig2*D(q,y)+sig3*D(q,z)
+--R 
+--R   Function declaration D : (Quaternion Complex Expression Integer,
+--R      Symbol,Symbol,Symbol) -> Quaternion Complex Expression Integer 
+--R      has been added to workspace.
+--R                                                                   Type: 
Void
+--E 12
+
+@
+For testing the derivative we define this set of operators
+<<*>>=
+
+--S 13 of 43
+Ft:=operator 'Ft
+--R 
+--R
+--R   (13)  Ft
+--R                                                          Type: 
BasicOperator
+--E 13
+
+--S 14 of 43
+Fx:=operator 'Fx
+--R 
+--R
+--R   (14)  Fx
+--R                                                          Type: 
BasicOperator
+--E 14
+
+--S 15 of 43
+Fy:=operator 'Fy
+--R 
+--R
+--R   (15)  Fy
+--R                                                          Type: 
BasicOperator
+--E 15
+
+--S 16 of 43
+Fz:=operator 'Fz
+--R 
+--R
+--R   (16)  Fz
+--R                                                          Type: 
BasicOperator
+--E 16
+
+@
+Now form a general quaternion which is a function of x, y, z
+<<*>>=
+
+--S 17 of 43
+F:Q:=Ft(x,y,z)*sig0+Fx(x,y,z)*sig1+Fy(x,y,z)*sig2+Fz(x,y,z)*sig3
+--R 
+--R
+--R   (17)  Ft(x,y,z) - Fz(x,y,z)%i i + Fy(x,y,z)%i j + Fx(x,y,z)%i k
+--R                                  Type: Quaternion Complex Expression 
Integer
+--E 17
+
+@
+In the Pauli basis the derivative of this biquat should produce
+(Morgan 2001, eq 1):
+\begin{verbatim}
+  D(Ft+F.sigma)=div(F)+(grad(Ft)+%i*curl(F)).sigma
+\end{verbatim}
+<<*>>=
+
+--S 18 of 43
+siglist(D(F,x,y,z))
+--R 
+--R   Compiling function D with type (Quaternion Complex Expression 
+--R      Integer,Symbol,Symbol,Symbol) -> Quaternion Complex Expression 
+--R      Integer 
+--R   Compiling function siglist with type Quaternion Complex Expression 
+--R      Integer -> List Complex Expression Integer 
+--R
+--R   (18)
+--R   [Fz  (x,y,z) + Fy  (x,y,z) + Fx  (x,y,z),
+--R      ,3            ,2            ,1
+--R    Ft  (x,y,z) + (Fz  (x,y,z) - Fy  (x,y,z))%i,
+--R      ,1             ,2            ,3
+--R    Ft  (x,y,z) + (- Fz  (x,y,z) + Fx  (x,y,z))%i,
+--R      ,2               ,1            ,3
+--R    Ft  (x,y,z) + (Fy  (x,y,z) - Fx  (x,y,z))%i]
+--R      ,3             ,1            ,2
+--R                                        Type: List Complex Expression 
Integer
+--E 18
+
+@
+\section{Biquaternion Exponential}
+
+Define a function that evaluates the Biquat exponential by beginning
+with the biquat rotation.
+
+First let's introduce some refinement to the language we will use. In
+many texts and papers, the i, j, k or $\sigma_1$, $\sigma_2$, $\sigma_3$
+components of the biquaternion are called the imaginary components while
+the scalar or $\sigma_0$ component are called real. This introduces vast
+confusion when dealing with biquaternions in which there is a ``true''
+imaginary unit, \%i being used. We will adopt a variation on the language
+used by Gsponer and others. A biquat $[{\bf a}, {\bf b}, {\bf c}, {\bf d}]$
+has scalar component ${\bf a}$ which may have itself an imaginary component.
+The component $[{\bf 0}, {\bf b}, {\bf c}, {\bf d}]$ is its vector 
+component which again may be complex:
+\begin{verbatim}
+ [0,b,c,d]=[0,Re(b),Re(c),Re(d)]+[0,Im(b),Im(c),Im(d)]=Re(Vec(q))+Im(Vec(q))
+\end{verbatim}
+Thus, for us, a ``real quaternion'' has real scalar and vector components
+and does not refer to a quaternion with only a scalar component as it would
+in the language adopted by the quatern package in Axiom.
+
+The rotation is a function of real number, theta and a unit norm, real
+vector quaternion. It's form is that of a simple complex quaternion
+exponential, R($\theta$,q)=$e^a$ where $a$ is an Imaginary Vector quaternions
+are like exponentials of pure imaginary numbers, resulting in each case in a
+unit norm object of the same type. For many of our purposes in the
+representation of relativistic and quantum mechanics it is the only type
+of quaternion for which we will have to evaluate the exponential.
+
+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).
+<<*>>=
+
+--S 19 of 43
+rot(theta:Expression Integer,q:Q):Q==cos(theta/2)-%i::Q*q*sin(theta/2)
+--R 
+--R   Function declaration rot : (Expression Integer,Quaternion Complex 
+--R      Expression Integer) -> Quaternion Complex Expression Integer has 
+--R      been added to workspace.
+--R                                                                   Type: 
Void
+--E 19
+
+@
+The rotation is a basis for defining the general exponential, since we
+can always extract the unit vector corresponding to a given biquaternion,
+all we need is the biquaternion abs operation, not provided by axiom
+(note, many texts and papers label the abs which is a complex valued
+$norm^2$ by the name ``norm'' -- very bad form -- I've adopted abs as
+the name to avoid this confusion.
+<<*>>=
+
+--S 20 of 43
+((x:Q)/(y:Q)):Q == x*inv(y)
+--R 
+--R   Function declaration ?/? : (Quaternion Complex Expression Integer,
+--R      Quaternion Complex Expression Integer) -> Quaternion Complex 
+--R      Expression Integer has been added to workspace.
+--R                                                                   Type: 
Void
+--E 20
+
+--S 21 of 43
+abs(q:Q):C == sqrt((q*conjugate(q))::C)
+--R 
+--R   Function declaration abs : Quaternion Complex Expression Integer -> 
+--R      Complex Expression Integer has been added to workspace.
+--R                                                                   Type: 
Void
+--E 21
+
+--S 22 of 43
+exp(q:Q):Q == (_
+  q-conjugate(q)=0 => exp( (q+conjugate(q))::C/2)$C * sig0; _
+  exp( (q+conjugate(q))::C/2)$C * (sig0*cos(abs(q)) +_
+  (q-conjugate(q))/abs(q-conjugate(q))*sin(abs(q))) )
+--R 
+--R   Function declaration exp : Quaternion Complex Expression Integer -> 
+--R      Quaternion Complex Expression Integer has been added to 
+--R      workspace.
+--R                                                                   Type: 
Void
+--E 22
+
+@
+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 of \%i*qx (not a very complete test).
+<<*>>=
+
+--S 23 of 43
+qx:=sig1
+--R 
+--R
+--R   (23)  %i k
+--R                                  Type: Quaternion Complex Expression 
Integer
+--E 23
+
+--S 24 of 43
+mm:=siglist(rot(2,qx))
+--R 
+--R   Compiling function / with type (Quaternion Complex Expression 
+--R      Integer,Quaternion Complex Expression Integer) -> Quaternion 
+--R      Complex Expression Integer 
+--R   There are 2 exposed and 6 unexposed library operations named cos 
+--R      having 1 argument(s) but none was determined to be applicable. 
+--R      Use HyperDoc Browse, or issue
+--R                               )display op cos
+--R      to learn more about the available operations. Perhaps 
+--R      package-calling the operation or using coercions on the arguments
+--R      will allow you to apply the operation.
+--R   Cannot find a definition or applicable library operation named cos 
+--R      with argument type(s) 
+--R                    Quaternion Complex Expression Integer
+--R      
+--R      Perhaps you should use "@" to indicate the required return type, 
+--R      or "$" to specify which version of the function you need.
+--R   AXIOM will attempt to step through and interpret the code.
+--R   Compiling function rot with type (Expression Integer,Quaternion 
+--R      Complex Expression Integer) -> Quaternion Complex Expression 
+--R      Integer 
+--R
+--R   (24)
+--R                2         3                  3          2
+--R    cos(1)sin(1)  + cos(1)  + cos(1)   sin(1)  + (cos(1)  - 1)sin(1)
+--R   [-------------------------------- + ----------------------------- %i,
+--R                  2          2                     2          2
+--R           2sin(1)  + 2cos(1)               2sin(1)  + 2cos(1)
+--R                  2         3                    3            2
+--R    - cos(1)sin(1)  - cos(1)  + cos(1)   - sin(1)  + (- cos(1)  - 1)sin(1)
+--R    ---------------------------------- + --------------------------------- 
%i,
+--R                   2          2                        2          2
+--R            2sin(1)  + 2cos(1)                  2sin(1)  + 2cos(1)
+--R    0, 0]
+--R                                        Type: List Complex Expression 
Integer
+--E 24
+
+--S 25 of 43
+nn:=siglist(exp(-%i::Q*qx))
+--R 
+--R   There are 2 exposed and 7 unexposed library operations named exp 
+--R      having 1 argument(s) but none was determined to be applicable. 
+--R      Use HyperDoc Browse, or issue
+--R                               )display op exp
+--R      to learn more about the available operations. Perhaps 
+--R      package-calling the operation or using coercions on the arguments
+--R      will allow you to apply the operation.
+--R   Cannot find a definition or applicable library operation named exp 
+--R      with argument type(s) 
+--R                    Quaternion Complex Expression Integer
+--R      
+--R      Perhaps you should use "@" to indicate the required return type, 
+--R      or "$" to specify which version of the function you need.
+--R   AXIOM will attempt to step through and interpret the code.
+--R   Compiling function exp with type Quaternion Complex Expression 
+--R      Integer -> Quaternion Complex Expression Integer 
+--R   Compiling function abs with type Quaternion Complex Expression 
+--R      Integer -> Complex Expression Integer 
+--R
+--R   (25)
+--R                2         3                  3          2
+--R    cos(1)sin(1)  + cos(1)  + cos(1)   sin(1)  + (cos(1)  - 1)sin(1)
+--R   [-------------------------------- + ----------------------------- %i,
+--R                  2          2                     2          2
+--R           2sin(1)  + 2cos(1)               2sin(1)  + 2cos(1)
+--R                  2         3                    3            2
+--R    - cos(1)sin(1)  - cos(1)  + cos(1)   - sin(1)  + (- cos(1)  - 1)sin(1)
+--R    ---------------------------------- + --------------------------------- 
%i,
+--R                   2          2                        2          2
+--R            2sin(1)  + 2cos(1)                  2sin(1)  + 2cos(1)
+--R    0, 0]
+--R                                        Type: List Complex Expression 
Integer
+--E 25
+
+--S 26 of 43
+(mm=nn)@Boolean
+--R 
+--R
+--R   (26)  true
+--R                                                                Type: 
Boolean
+--E 26
+
+@
+To express a proof of equality such as:
+\begin{verbatim}
+  rot(theta,q) = exp((-theta/2)*%i*q)
+\end{verbatim}
+for arbitrary real $\theta$ and biquaternion real using vector $q$ as one 
+would in Maple, we need to express the fact that $q$ is a vector quantity
+with real coefficients in the Pauli basis representing a unit magnitude
+vector. One way to represent this is to create a quaternion called $qnv$,
+representing a general normalized (unit length) vector part only biquat with
+two independent variables $q1$ and $q2$ representing its only degrees of
+freedom.
+<<*>>=
+
+--S 27 of 43
+qnv:=q1*sig1+q2*sig2+sqrt(1-q1^2-q2^2)*sig3
+--R 
+--R
+--R            +---------------+
+--R            |    2     2
+--R   (27)  - \|- q2  - q1  + 1 %i i + q2 %i j + q1 %i k
+--R                                  Type: Quaternion Complex Expression 
Integer
+--E 27
+
+@
+\section{Assumptions about Variables}
+
+Now, in the equations that will result, we will obtain subexpressions of the
+form $\sqrt{\theta^2}$. The positive root will always be appropriate in
+this formula and one way to get it (in other computer algebra systems) 
+would be to restrict $\theta$ to positive values so as to avoid branches
+that would otherwise have to be properly selected to get an equality. Thus,
+one means to get the desired simplification is to perform the restriction
+of $\theta$ to positive values. My current understanding is: Axiom does not
+support variables with properties in the sense that Maple does (the 
+*assume* facility).
+
+\section{Problems}
+
+Returning to the case at hand, let's expand a test of equality to the
+four biquat components and seek a way to prove that each component 
+is zero.
+<<*>>=
+
+--S 28 of 43
+theta:=_\theta
+--R 
+--R
+--R   (28)  \theta
+--R                                                        Type: Variable 
\theta
+--E 28
+
+--S 29 of 43
+testqeq:=map(simplify,siglist(rot(theta,qnv)-exp((-theta/2)*%i*qnv)))_
+         ::List Expression Complex Integer
+--R 
+--R
+--R   (29)
+--R           +-------+
+--R           |      2
+--R          \|\theta          \theta
+--R   [- cos(----------) + cos(------),
+--R               2               2
+--R                        +-------+
+--R          +-------+     |      2
+--R          |      2     \|\theta                       \theta
+--R    %i q1\|\theta  sin(----------) - %i \theta q1 sin(------)
+--R                            2                            2
+--R    ---------------------------------------------------------,
+--R                              \theta
+--R                        +-------+
+--R          +-------+     |      2
+--R          |      2     \|\theta                       \theta
+--R    %i q2\|\theta  sin(----------) - %i \theta q2 sin(------)
+--R                            2                            2
+--R    ---------------------------------------------------------,
+--R                              \theta
+--R
+--R                                            +-------+
+--R            +---------------+ +-------+     |      2
+--R            |    2     2      |      2     \|\theta
+--R         %i\|- q2  - q1  + 1 \|\theta  sin(----------)
+--R                                                2
+--R       + 
+--R                                 +---------------+
+--R                         \theta  |    2     2
+--R         - %i \theta sin(------)\|- q2  - q1  + 1
+--R                            2
+--R    /
+--R       \theta
+--R     ]
+--R                                        Type: List Expression Complex 
Integer
+--E 29
+
+@
+As is quite obvious from this result, the two equations would have been
+shown to be equal if positivity of the theta variable was enforced. This
+raises two questions
+\begin{enumerate}
+\item How would one perform a proof such as the above within the
+allowed operations of Axiom?
+\item How can Axiom be called a symbolic algebra system if basic notions
+of algebraic proof such as restrictions of a variable to the semiring
+of non-negative integers is disallowed?
+\end{enumerate}
+How are symbolic manipulations, proofs and solutions to be carried out
+without this basic notion? I am let to think that Axiom can only be
+considered a semi-numerical software system.
+
+\section{Rules and Pattern Matching}
+
+Let's try another way to answer question 1 by using symbolic pattern
+matching ``rules''. Define a rule that recognizes the specific case of
+the variable theta appearing in a construct that should be simplified
+given its positivity.
+<<*>>=
+
+--S 30 of 43
+posthetaRule:=rule sqrt(theta^2)==theta
+--R 
+--R
+--R          +------+
+--R          |     2
+--R   (30)  \|theta   == theta
+--R                        Type: RewriteRule(Integer,Integer,Expression 
Integer)
+--E 30
+
+@
+But, now we encounter two new problems. First, apparently ``map'' does
+not work with rules, so I can't apply this rule in a simple fashion to
+the entire List generated by our test case above for any x.
+
+The ``map'' function only maps functions but we can easily turn a rule 
+into an anonymous function.
+<<*>>=
+
+--S 31 of 43
+map(x+->posthetaRule(x), [0,sqrt(theta^2),0,sqrt(theta^2)])
+--R 
+--R
+--R   (31)  [0,\theta,0,\theta]
+--R                                                Type: List Expression 
Integer
+--E 31
+
+@
+But even if we were to split our list above, and try to apply this rule
+to a component, we get this disappointing result:
+<<*>>=
+
+--S 32 of 43
+posthetaRule testqeq.1
+--R 
+--R   There are no library operations named posthetaRule 
+--R      Use HyperDoc Browse or issue
+--R                            )what op posthetaRule
+--R      to learn if there is any operation containing " posthetaRule " in
+--R      its name.
+--R 
+--RDaly Bug
+--R   Cannot find a definition or applicable library operation named 
+--R      posthetaRule with argument type(s) 
+--R                         Expression Complex Integer
+--R      
+--R      Perhaps you should use "@" to indicate the required return type, 
+--R      or "$" to specify which version of the function you need.
+--E 32
+
+@
+Apparently rules have builtin assumptions about the construction of
+the expression. If I override this for a real element of the list
+we are testing I can successfully get one answer.
+<<*>>=
+
+--S 33 of 43
+[posthetaRule (testqeq.i::Expression Integer) for i in 1..1]
+--R 
+--R
+--R   (32)  [0]
+--R                                                Type: List Expression 
Integer
+--E 33
+
+@
+But this doesn't extend to the remainder of the list.
+<<*>>=
+
+--S 34 of 43
+[posthetaRule (testqeq.i::Expression Integer) for i in 1..4]
+--R 
+--R 
+--RDaly Bug
+--R   Cannot convert from type Expression Complex Integer to Expression 
+--R      Integer for value
+--R                       +-------+
+--R         +-------+     |      2
+--R         |      2     \|\theta                       \theta
+--R   %i q1\|\theta  sin(----------) - %i \theta q1 sin(------)
+--R                           2                            2
+--R   ---------------------------------------------------------
+--R                             \theta
+--R
+--E 34
+
+@
+because obviously we can't coerce an actually complex value into the
+Expression Integer type that the rule seems to want.
+
+Here is one way to create the necessary rule. Like everything else in
+Axiom rules are objects in some domain. We need to specify a domain
+for the rule that is compatible with the domain we wish to manipulate.
+So let's find out more about this domain:
+<<*>>=
+
+--S 35 of 43
+)show RewriteRule
+--R 
+--R RewriteRule(Base: SetCategory,R: Join(Ring,PatternMatchable 
Base,OrderedSet,ConvertibleTo Pattern Base),F: Join(FunctionSpace 
R,PatternMatchable Base,ConvertibleTo Pattern Base))  is a domain constructor
+--R Abbreviation for RewriteRule is RULE 
+--R This constructor is exposed in this frame.
+--R Issue )edit rule.spad.pamphlet to see algebra source code for RULE 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?=? : (%,%) -> Boolean                coerce : Equation F -> %
+--R coerce : % -> OutputForm              elt : (%,F,PositiveInteger) -> F
+--R ?.? : (%,F) -> F                      hash : % -> SingleInteger
+--R latex : % -> String                   lhs : % -> F
+--R pattern : % -> Pattern Base           retract : % -> Equation F
+--R rhs : % -> F                          rule : (F,F,List Symbol) -> %
+--R rule : (F,F) -> %                     ?~=? : (%,%) -> Boolean
+--R quotedOperators : % -> List Symbol
+--R retractIfCan : % -> Union(Equation F,"failed")
+--R suchThat : (%,List Symbol,(List F -> Boolean)) -> %
+--R
+--E 35
+
+@
+We can provide satisfactory parameters of this domain constructor as follows:
+<<*>>=
+
+--S 36 of 43
+Complex Integer has PatternMatchable Integer
+--R 
+--R
+--R   (33)  true
+--R                                                                Type: 
Boolean
+--E 36
+
+--S 37 of 43
+Expression Complex Integer has FunctionSpace Complex Integer
+--R 
+--R
+--R   (34)  true
+--R                                                                Type: 
Boolean
+--E 37
+
+--S 38 of 43
+Expression Complex Integer has PatternMatchable Integer
+--R 
+--R
+--R   (35)  true
+--R                                                                Type: 
Boolean
+--E 38
+
+@
+So the following simplification works as hoped:
+<<*>>=
+
+--S 39 of 43
+posxRule:=(rule sqrt('theta^2)==theta)$RewriteRule(Integer,Complex Integer,_
+            Expression Complex Integer)
+--R 
+--R
+--R          +------+
+--R          |     2
+--R   (36)  \|theta   == theta
+--R        Type: RewriteRule(Integer,Complex Integer,Expression Complex 
Integer)
+--E 39
+
+--S 40 of 43
+map(x+->posxRule x, testqeq)
+--R 
+--R
+--R   (37)  [0,0,0,0]
+--R                                        Type: List Expression Complex 
Integer
+--E 40
+
+@
+\section{Algebraic Domain of Computation}
+
+Recall that Axiom does things in a fundamentally {\sl algebraic} rather
+than {\sl symbolic} way. So although the pattern matching approach
+works, it goes somewhat against the overall philosophy of Axiom. It is
+possible to do almost anything by using rewrite rules including things
+that are mathematically incorrect. In this case the rule is simple and
+the results obvious but if it gets more complicated this can be a problem.
+
+Is there some ``axiomatic'', i.e. algebraic way to express the fact that
+$\theta$ is a positive real? well, what we really need is that
+$$\sqrt{\theta^2} = \theta$$
+be satisfied. Now consider that by definition $\sqrt{}$:
+<<*>>=
+
+--S 41 of 43
+test (sqrt(x)^2=x)
+--R 
+--R
+--R   (38)  true
+--R                                                                Type: 
Boolean
+--E 41
+
+@
+and so
+<<*>>=
+
+--S 42 of 43
+test (sqrt(sqrt(x)^2)=sqrt(x))
+--R 
+--R
+--R   (39)  true
+--R                                                                Type: 
Boolean
+--E 42
+
+@
+for any $x$. So the expression $\sqrt{(x)}$ is one such thing that has
+the desired property in the Expression domain. {\sl With exactly the
+appropriate loss of generality}, let us just suppose that $\theta$ is
+$\sqrt{(\beta)}$ for some $\beta$. Then if necessary we can also
+perform a change of variable back to $\theta$.
+<<*>>=
+
+--S 43 of 43
+eval(eval(testqeq,theta=sqrt(beta)),sqrt(beta)=theta)
+--R 
+--R
+--R   (40)  [0,0,0,0]
+--R                                        Type: List Expression Complex 
Integer
+--E 43
+
+)spool 
+)lisp (bye)
+ 
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
diff --git a/src/input/ifthenelse.input.pamphlet 
b/src/input/ifthenelse.input.pamphlet
new file mode 100644
index 0000000..29c75b4
--- /dev/null
+++ b/src/input/ifthenelse.input.pamphlet
@@ -0,0 +1,299 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/input ifthenelse.input}
+\author{Fabio Stumbo}
+\maketitle
+\begin{abstract}
+{\bf if-then-else: what is wrong?}
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+@
+<<*>>=
+)spool ifthenelse.output
+)set message test on
+)set message auto off
+)clear all
+
+@
+I am having some problem with the if-then-else syntax in .input files
+
+{\bf Problem 1}: I refer to the Axiom book which ships with the program
+(version 2005/09). At page 204 it says that the usual rules for piling
+are suspended in conditional expressions and it gives 5 different ways
+which should be equivalent, namely:
+\begin{verbatim}
+
+  if i>0 then output("positive") else output("nonpositive")
+
+  if i>0 then output("positive") 
+    else output("nonpositive")
+
+  if i>0 then output("positive") 
+  else output("nonpositive")
+
+  if i>0 
+  then output("positive") 
+  else output("nonpositive")
+
+  if i>0 
+    then output("positive") 
+    else output("nonpositive")
+\end{verbatim}
+
+Well, I tried all of them, creating each time a blank r.input file with 
+inside only:
+<<*>>=
+ 
+--S 1 of 20
+i:=2
+--R 
+--R
+--R   (1)  2
+--R                                                        Type: 
PositiveInteger
+--E 1
+
+@
+followed by one of the ``if$\ldots$''.
+
+The result of the first two are ok, whereas the other three
+give some syntax error (different each time).
+<<*>>=
+
+--S 2 of 20
+for i in 2..2 repeat
+  if i>0 then output("positive") else output("nonpositive")
+--R 
+--R   positive
+--R                                                                   Type: 
Void
+--E 2
+
+--S 3 of 20
+for i in 2..2 repeat
+  if i>0 then output("positive") 
+    else output("nonpositive")
+--R 
+--R   positive
+--R                                                                   Type: 
Void
+--E 3
+
+--S 4 of 20
+for i in 2..2 repeat
+  if i>0 then output("positive") 
+  else output("nonpositive")
+--R 
+--R   positive
+--R                                                                   Type: 
Void
+--E 4
+
+--S 5 of 20
+for i in 2..2 repeat
+  if i>0 
+  then output("positive") 
+  else output("nonpositive")
+--R 
+--R   positive
+--R                                                                   Type: 
Void
+--E 5
+
+--S 6 of 20
+for i in 2..2 repeat
+  if i>0 
+    then output("positive") 
+    else output("nonpositive")
+--R 
+--R  Line  47: --R 
+--R  Line  48: --R   positive
+--R  Line  49: --R                                                             
      Type: Void
+--R  Line  50: --E 5
+--R  Line  51: 
+--R  Line  52: --S 6 of 20
+--R  Line  53: for i in 2..2 repeat
+--R  Line  54:   if i>0 
+--R           ..A
+--R  Error  A: (from #\A and on) Ignored from here
+--R  Line  55:     then output("positive") 
+--R           ....A
+--R  Error  A: Improper syntax.
+--R  Error  A: (from #\A up to ) Ignored.
+--R  Line  56:     else output("nonpositive")
+--R           ....A........................B
+--R  Error  A: Improper syntax.
+--R  Error  A: (from #\A up to #\B) Ignored.
+--R  Error  B: Possibly missing a then 
+--R  Error  B: (up to #\B) to here.
+--R   7 error(s) parsing 
+--E 6
+
+--S 7 of 20
+i:=2
+--R 
+--R
+--R   (6)  2
+--R                                                        Type: 
PositiveInteger
+--E 7
+
+--S 8 of 20
+for i in 2..2 repeat
+  if i>0 then
+    output(i)
+    output("positive") 
+  else
+    output(i)
+    else output("nonpositive")
+--R 
+--R  Line  83: --R 
+--R  Line  84: --R
+--R  Line  85: --R   (6)  2
+--R  Line  86: --R                                                        
Type: PositiveInteger
+--R  Line  87: --E 7
+--R  Line  88: 
+--R  Line  89: --S 8 of 20
+--R  Line  90: for i in 2..2 repeat
+--R  Line  91:   if i>0 then
+--R  Line  92:     output(i)
+--R  Line  93:     output("positive") 
+--R  Line  94:   else
+--R  Line  95:     output(i)
+--R  Line  96:     else output("nonpositive")
+--R           ....A
+--R  Error  A: (from #\A up to ) Ignored.
+--R  Error  A: Improper syntax.
+--R   2 error(s) parsing 
+--E 8
+
+--S 9 of 20
+i:=1.5
+--R 
+--R
+--R   (7)  1.5
+--R                                                                  Type: 
Float
+--E 9
+
+--S 10 of 20
+a:=
+  if i > 0 then
+    j:=sin(i*pi())
+    exp(j+1/j)
+  else
+    j:=cos(i*0.5*pi())
+    log(abs(j)**5+1)
+--R 
+--R
+--R   (8)  0.1353352832 3661269189
+--R                                                                  Type: 
Float
+--E 10
+
+@
+{\bf Problem 2:} again with if then else, in a complex function I 
+noticed a wrong result (the function itself was ok). Simplifying,
+you can produce the same error with something like:
+<<*>>=
+
+--S 11 of 20
+test: (INT,INT) -> List(INT)
+--R 
+--R                                                                   Type: 
Void
+--E 11
+
+--S 12 of 20
+test(a,b) ==
+  x:=0; y:=0
+  if (a rem b = 0) and b < 0 then
+    x := 1
+    y := 1
+  [x,y]
+--R 
+--R                                                                   Type: 
Void
+--E 12
+
+--S 13 of 20
+4 rem -2
+--R 
+--R
+--R   (11)  0
+--R                                                     Type: 
NonNegativeInteger
+--E 13
+
+--S 14 of 20
+test(4,-2)
+--R 
+--R   Compiling function test with type (Integer,Integer) -> List Integer 
+--R
+--R   (12)  [1,1]
+--R                                                           Type: List 
Integer
+--E 14
+
+@
+returns correctly [1,1], but
+<<*>>=
+
+--S 15 of 20
+4 rem -3
+--R 
+--R
+--R   (13)  1
+--R                                                        Type: 
PositiveInteger
+--E 15
+
+--S 16 of 20
+test(4,-3)
+--R 
+--R
+--R   (14)  [0,0]
+--R                                                           Type: List 
Integer
+--E 16
+
+@
+or
+<<*>>=
+
+--S 17 of 20
+4 rem 2
+--R 
+--R
+--R   (15)  0
+--R                                                     Type: 
NonNegativeInteger
+--E 17
+
+--S 18 of 20
+test(4,2)
+--R 
+--R
+--R   (16)  [0,0]
+--R                                                           Type: List 
Integer
+--E 18
+
+@
+wrongly returns [0,1]. The same happens if I write
+<<*>>=
+
+--S 19 of 20
+test1: (INT,INT) -> List(INT)
+--R 
+--R                                                                   Type: 
Void
+--E 19
+
+--S 20 of 20
+test1(a,b) ==
+  x := 0; y := 0
+  if (a rem b = 0) and b < 0 then x := 1 ; y := 1
+  [x,y]
+--R 
+--R                                                                   Type: 
Void
+--E 20
+
+@
+Why?
+<<*>>=
+)spool 
+)lisp (bye)
+ 
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
diff --git a/src/input/sqrt3.input.pamphlet b/src/input/sqrt3.input.pamphlet
new file mode 100644
index 0000000..ad20ab9
--- /dev/null
+++ b/src/input/sqrt3.input.pamphlet
@@ -0,0 +1,249 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/input sqrt3.input}
+\author{Ralf Hemmecke}
+\maketitle
+\begin{abstract}
+A demo involving the algebraic number $\sqrt{3}$.
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+@
+<<*>>=
+)spool sqrt3.output
+)set message test on
+)set message auto off
+)clear all
+ 
+--S 1 of 23
+t1:=(sqrt(3)-3)*(sqrt(3)+1)/6
+--R 
+--R
+--R           +-+
+--R          \|3
+--R   (1)  - ----
+--R            3
+--R                                                        Type: 
AlgebraicNumber
+--E 1
+
+--S 2 of 23
+tt1:=-1/sqrt(3)
+--R 
+--R
+--R           +-+
+--R          \|3
+--R   (2)  - ----
+--R            3
+--R                                                        Type: 
AlgebraicNumber
+--E 2
+
+--S 3 of 23
+t2:=sqrt(3)/6
+--R 
+--R
+--R         +-+
+--R        \|3
+--R   (3)  ----
+--R          6
+--R                                                        Type: 
AlgebraicNumber
+--E 3
+
+--S 4 of 23
+t1+t2
+--R 
+--R
+--R           +-+
+--R          \|3
+--R   (4)  - ----
+--R            6
+--R                                                        Type: 
AlgebraicNumber
+--E 4
+
+--S 5 of 23
+tt1+t2
+--R 
+--R
+--R           +-+
+--R          \|3
+--R   (5)  - ----
+--R            6
+--R                                                        Type: 
AlgebraicNumber
+--E 5
+
+--S 6 of 23
+RAN ==> RECLOS FRAC INT
+--R 
+--R                                                                   Type: 
Void
+--E 6
+
+--S 7 of 23
+x1:=(sqrt(3)$RAN-3)*(sqrt(3)$RAN+1)/6
+--R 
+--R
+--R         1  +-+   1  +-+   1  +-+   1
+--R   (7)  (- \|3  - -)\|3  + - \|3  - -
+--R         6        2        6        2
+--R                                           Type: RealClosure Fraction 
Integer
+--E 7
+
+--S 8 of 23
+xx1:=-1/sqrt(3)$RAN
+--R 
+--R
+--R          1  +-+
+--R   (8)  - - \|3
+--R          3
+--R                                           Type: RealClosure Fraction 
Integer
+--E 8
+
+--S 9 of 23
+(x1=xx1)@Boolean
+--R 
+--R
+--R   (9)  true
+--R                                                                Type: 
Boolean
+--E 9
+
+--S 10 of 23
+s3:=sqrt(3)$RAN
+--R 
+--R
+--R          +-+
+--R   (10)  \|3
+--R                                           Type: RealClosure Fraction 
Integer
+--E 10
+
+--S 11 of 23
+(s3-3)*(s3+1)/6
+--R 
+--R
+--R           1  +-+
+--R   (11)  - - \|3
+--R           3
+--R                                           Type: RealClosure Fraction 
Integer
+--E 11
+
+--S 12 of 23
+f3:=sqrt(3,5)$RAN
+--R 
+--R
+--R         5+-+
+--R   (12)  \|3
+--R                                           Type: RealClosure Fraction 
Integer
+--E 12
+
+--S 13 of 23
+f25:=sqrt(1/25,5)$RAN
+--R 
+--R
+--R          +--+
+--R          | 1
+--R   (13)  5|--
+--R         \|25
+--R                                           Type: RealClosure Fraction 
Integer
+--E 13
+
+--S 14 of 23
+f32:=sqrt(32/5,5)$RAN
+--R 
+--R
+--R          +--+
+--R          |32
+--R   (14)  5|--
+--R         \| 5
+--R                                           Type: RealClosure Fraction 
Integer
+--E 14
+
+--S 15 of 23
+f27:=sqrt(27/5,5)$RAN
+--R 
+--R
+--R          +--+
+--R          |27
+--R   (15)  5|--
+--R         \| 5
+--R                                           Type: RealClosure Fraction 
Integer
+--E 15
+
+--S 16 of 23
+expr1:=sqrt(f32-f27,3)
+--R 
+--R
+--R          +---------------+
+--R          |   +--+    +--+
+--R          |   |27     |32
+--R   (16)  3|- 5|--  + 5|--
+--R         \|  \| 5    \| 5
+--R                                           Type: RealClosure Fraction 
Integer
+--E 16
+
+--S 17 of 23
+expr2:=(1+f3-f3^2)
+--R 
+--R
+--R           5+-+2   5+-+
+--R   (17)  - \|3   + \|3  + 1
+--R                                           Type: RealClosure Fraction 
Integer
+--E 17
+
+--S 18 of 23
+expr1-f25*expr2
+--R 
+--R
+--R   (18)  0
+--R                                           Type: RealClosure Fraction 
Integer
+--E 18
+
+--S 19 of 23
+s:=sqrt(190)$RAN+sqrt(1751)$RAN-sqrt(208)$RAN-sqrt(1698)$RAN
+--R 
+--R
+--R            +----+    +---+    +----+    +---+
+--R   (19)  - \|1698  - \|208  + \|1751  + \|190
+--R                                           Type: RealClosure Fraction 
Integer
+--E 19
+
+--S 20 of 23
+approximate(s,10^-15)::Float
+--R 
+--R
+--R   (20)  - 0.2341060678 6455900874 E -10
+--R                                                                  Type: 
Float
+--E 20
+
+--S 21 of 23
+t:=sqrt(190)+sqrt(1751)-sqrt(208)-sqrt(1698)
+--R 
+--R
+--R          +----+    +----+    +---+     +--+
+--R   (21)  \|1751  - \|1698  + \|190  - 4\|13
+--R                                                        Type: 
AlgebraicNumber
+--E 21
+
+--S 22 of 23
+digits(30)
+--R 
+--R
+--R   (22)  20
+--R                                                        Type: 
PositiveInteger
+--E 22
+
+--S 23 of 23
+numeric t - approximate(s,10^-30)::Float
+--R 
+--R
+--R   (23)  - 0.5522026336 5 E -29
+--R                                                                  Type: 
Float
+--E 23
+
+)spool 
+)lisp (bye)
+ 
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
diff --git a/src/interp/setq.lisp.pamphlet b/src/interp/setq.lisp.pamphlet
index f6e1c05..e9b34ec 100644
--- a/src/interp/setq.lisp.pamphlet
+++ b/src/interp/setq.lisp.pamphlet
@@ -651,8 +651,8 @@
 "Gerhard Schneider      Martin Schoenert       Marshall Schor"
 "Frithjof Schulze       Fritz Schwarz          Nick Simicich"
 "William Sit            Elena Smirnova         Jonathan Steinbach"
-"Christine Sundaresan   Robert Sutor           Moss E. Sweedler"
-"Eugene Surowitz"
+"Fabio Stumbo           Christine Sundaresan   Robert Sutor"
+"Moss E. Sweedler       Eugene Surowitz"
 "Max Tegmark            James Thatcher         Balbir Thomas"
 "Mike Thomas            Dylan Thurston         Barry Trager"
 "Themos T. Tsikas"




reply via email to

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