diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet index 344a8e0..781994e 100644 --- a/books/bookvol10.3.pamphlet +++ b/books/bookvol10.3.pamphlet @@ -142518,6 +142518,242 @@ U16Vector() : OneDimensionalArrayAggregate Integer == add \end{chunk} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{domain U32MAT U32Matrix} + +\begin{chunk}{U32Matrix.input} +)set break resume +)sys rm -f U32Matrix.output +)spool U32Matrix.output +)set message test on +)set message auto off +)clear all + +--S 1 of 1 +)show U32Matrix +--R U32Matrix is a domain constructor +--R Abbreviation for U32Matrix is U32MAT +--R This constructor is exposed in this frame. +--R Issue )edit /tmp/ta.spad to see algebra source code for U32MAT +--R +--R------------------------------- Operations -------------------------------- +--R ?*? : (U32Vector,%) -> U32Vector ?*? : (%,U32Vector) -> U32Vector +--R ?*? : (Integer,%) -> % ?*? : (%,Integer) -> % +--R ?*? : (Integer,%) -> % ?*? : (%,%) -> % +--R ?+? : (%,%) -> % -? : % -> % +--R ?-? : (%,%) -> % antisymmetric? : % -> Boolean +--R coerce : U32Vector -> % column : (%,Integer) -> U32Vector +--R copy : % -> % diagonal? : % -> Boolean +--R diagonalMatrix : List(%) -> % empty : () -> % +--R empty? : % -> Boolean eq? : (%,%) -> Boolean +--R fill! : (%,Integer) -> % horizConcat : (%,%) -> % +--R matrix : List(List(Integer)) -> % maxColIndex : % -> Integer +--R maxRowIndex : % -> Integer minColIndex : % -> Integer +--R minRowIndex : % -> Integer ncols : % -> NonNegativeInteger +--R nrows : % -> NonNegativeInteger parts : % -> List(Integer) +--R qnew : (Integer,Integer) -> % row : (%,Integer) -> U32Vector +--R sample : () -> % square? : % -> Boolean +--R squareTop : % -> % symmetric? : % -> Boolean +--R transpose : % -> % transpose : U32Vector -> % +--R vertConcat : (%,%) -> % +--R #? : % -> NonNegativeInteger if $ has finiteAggregate +--R ?**? : (%,Integer) -> % if Integer has FIELD +--R ?**? : (%,NonNegativeInteger) -> % +--R ?/? : (%,Integer) -> % if Integer has FIELD +--R ?=? : (%,%) -> Boolean if Integer has SETCAT +--R any? : ((Integer -> Boolean),%) -> Boolean if $ has finiteAggregate +--R coerce : % -> OutputForm if Integer has SETCAT +--R columnSpace : % -> List(U32Vector) if Integer has EUCDOM +--R count : (Integer,%) -> NonNegativeInteger if $ has finiteAggregate and Integer has SETCAT +--R count : ((Integer -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate +--R determinant : % -> Integer if Integer has commutative(*) +--R diagonalMatrix : List(Integer) -> % +--R elt : (%,List(Integer),List(Integer)) -> % +--R elt : (%,Integer,Integer,Integer) -> Integer +--R elt : (%,Integer,Integer) -> Integer +--R eval : (%,List(Integer),List(Integer)) -> % if Integer has EVALAB(INT) and Integer has SETCAT +--R eval : (%,Integer,Integer) -> % if Integer has EVALAB(INT) and Integer has SETCAT +--R eval : (%,Equation(Integer)) -> % if Integer has EVALAB(INT) and Integer has SETCAT +--R eval : (%,List(Equation(Integer))) -> % if Integer has EVALAB(INT) and Integer has SETCAT +--R every? : ((Integer -> Boolean),%) -> Boolean if $ has finiteAggregate +--R exquo : (%,Integer) -> Union(%,"failed") if Integer has INTDOM +--R hash : % -> SingleInteger if Integer has SETCAT +--R inverse : % -> Union(%,"failed") if Integer has FIELD +--R latex : % -> String if Integer has SETCAT +--R less? : (%,NonNegativeInteger) -> Boolean +--R listOfLists : % -> List(List(Integer)) +--R map : (((Integer,Integer) -> Integer),%,%,Integer) -> % +--R map : (((Integer,Integer) -> Integer),%,%) -> % +--R map : ((Integer -> Integer),%) -> % +--R map! : ((Integer -> Integer),%) -> % +--R matrix : (NonNegativeInteger,NonNegativeInteger,((Integer,Integer) -> Integer)) -> % +--R member? : (Integer,%) -> Boolean if $ has finiteAggregate and Integer has SETCAT +--R members : % -> List(Integer) if $ has finiteAggregate +--R minordet : % -> Integer if Integer has commutative(*) +--R more? : (%,NonNegativeInteger) -> Boolean +--R new : (NonNegativeInteger,NonNegativeInteger,Integer) -> % +--R nullSpace : % -> List(U32Vector) if Integer has INTDOM +--R nullity : % -> NonNegativeInteger if Integer has INTDOM +--R pfaffian : % -> Integer if Integer has COMRING +--R qelt : (%,Integer,Integer) -> Integer +--R qsetelt! : (%,Integer,Integer,Integer) -> Integer +--R rank : % -> NonNegativeInteger if Integer has INTDOM +--R rowEchelon : % -> % if Integer has EUCDOM +--R scalarMatrix : (NonNegativeInteger,Integer) -> % +--R setColumn! : (%,Integer,U32Vector) -> % +--R setRow! : (%,Integer,U32Vector) -> % +--R setelt : (%,List(Integer),List(Integer),%) -> % +--R setelt : (%,Integer,Integer,Integer) -> Integer +--R setsubMatrix! : (%,Integer,Integer,%) -> % +--R size? : (%,NonNegativeInteger) -> Boolean +--R subMatrix : (%,Integer,Integer,Integer,Integer) -> % +--R swapColumns! : (%,Integer,Integer) -> % +--R swapRows! : (%,Integer,Integer) -> % +--R zero : (NonNegativeInteger,NonNegativeInteger) -> % +--R ?~=? : (%,%) -> Boolean if Integer has SETCAT +--R +--E 1 + +)spool +)lisp (bye) +\end{chunk} +\begin{chunk}{U32Matrix.help} +==================================================================== +U32Matrix examples +==================================================================== + +See Also: +o )show U32Matrix + +\end{chunk} +\pagehead{U32Matrix}{U32MAT} +\pagepic{ps/v103u32matrix.eps}{U32MAT}{1.00} +{\bf See}\\ + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{U32MAT}{\#{}?} & +\cross{U32MAT}{-?} & +\cross{U32MAT}{?**?} & +\cross{U32MAT}{?*?} \\ +\cross{U32MAT}{?+?} & +\cross{U32MAT}{?-?} & +\cross{U32MAT}{?/?} & +\cross{U32MAT}{?=?} \\ +\cross{U32MAT}{?\~{}=?} & +\cross{U32MAT}{antisymmetric?} & +\cross{U32MAT}{any?} & +\cross{U32MAT}{coerce} \\ +\cross{U32MAT}{column} & +\cross{U32MAT}{columnSpace} & +\cross{U32MAT}{copy} & +\cross{U32MAT}{count} \\ +\cross{U32MAT}{determinant} & +\cross{U32MAT}{diagonal?} & +\cross{U32MAT}{diagonalMatrix} & +\cross{U32MAT}{elt} \\ +\cross{U32MAT}{empty} & +\cross{U32MAT}{empty?} & +\cross{U32MAT}{eq?} & +\cross{U32MAT}{eval} \\ +\cross{U32MAT}{every?} & +\cross{U32MAT}{exquo} & +\cross{U32MAT}{fill!} & +\cross{U32MAT}{hash} \\ +\cross{U32MAT}{horizConcat} & +\cross{U32MAT}{inverse} & +\cross{U32MAT}{latex} & +\cross{U32MAT}{less?} \\ +\cross{U32MAT}{listOfLists} & +\cross{U32MAT}{map} & +\cross{U32MAT}{map!} & +\cross{U32MAT}{matrix} \\ +\cross{U32MAT}{maxColIndex} & +\cross{U32MAT}{maxRowIndex} & +\cross{U32MAT}{member?} & +\cross{U32MAT}{members} \\ +\cross{U32MAT}{minColIndex} & +\cross{U32MAT}{minRowIndex} & +\cross{U32MAT}{minordet} & +\cross{U32MAT}{more?} \\ +\cross{U32MAT}{ncols} & +\cross{U32MAT}{new} & +\cross{U32MAT}{nrows} & +\cross{U32MAT}{nullSpace} \\ +\cross{U32MAT}{nullity} & +\cross{U32MAT}{parts} & +\cross{U32MAT}{pfaffian} & +\cross{U32MAT}{qelt} \\ +\cross{U32MAT}{qnew} & +\cross{U32MAT}{qsetelt!} & +\cross{U32MAT}{rank} & +\cross{U32MAT}{row} \\ +\cross{U32MAT}{rowEchelon} & +\cross{U32MAT}{sample} & +\cross{U32MAT}{scalarMatrix} & +\cross{U32MAT}{setColumn!} \\ +\cross{U32MAT}{setRow!} & +\cross{U32MAT}{setelt} & +\cross{U32MAT}{setsubMatrix!} & +\cross{U32MAT}{size?} \\ +\cross{U32MAT}{square?} & +\cross{U32MAT}{squareTop} & +\cross{U32MAT}{subMatrix} & +\cross{U32MAT}{swapColumns!} \\ +\cross{U32MAT}{swapRows!} & +\cross{U32MAT}{symmetric?} & +\cross{U32MAT}{transpose} & +\cross{U32MAT}{vertConcat} \\ +\cross{U32MAT}{zero} & +\end{tabular} + +\begin{chunk}{domain U32MAT U32Matrix} +)abbrev domain U32MAT U32Matrix +++ Description: This is a low-level domain which implements matrices +++ (two dimensional arrays) of 32-bit integers. +++ Indexing is 0 based, there is no bound checking (unless +++ provided by lower level). +U32Matrix : MatrixCategory(Integer, + U32Vector, + U32Vector) with + qnew : (Integer, Integer) -> % + ++ qnew(n, m) creates a new uninitialized n by m matrix. + ++ + ++X qnew(3,4) + == add + + R ==> Integer + + Qelt2 ==> AREF2U32$Lisp + Qsetelt2 ==> SETAREF2U32$Lisp + Qnrows ==> ANROWSU32$Lisp + Qncols ==> ANCOLSU32$Lisp + Qnew ==> MAKEMATRIXU32$Lisp + Qnew1 ==> MAKEMATRIX1U32$Lisp + + minRowIndex x == 0 + minColIndex x == 0 + nrows x == Qnrows(x) + ncols x == Qncols(x) + maxRowIndex x == Qnrows(x) - 1 + maxColIndex x == Qncols(x) - 1 + + qelt(m, i, j) == Qelt2(m, i, j) + elt(m : %, i : Integer, j : Integer) : R == Qelt2(m, i, j) + qsetelt!(m, i, j, r) == Qsetelt2(m, i, j, r) + setelt(m : %, i : Integer, j : Integer, r : R) == Qsetelt2(m, i, j, r) + + empty() == Qnew(0$Integer, 0$Integer) + qnew(rows, cols) == Qnew(rows, cols) + new(rows, cols, a) == Qnew1(rows, cols, a) + +\end{chunk} +\begin{chunk}{U32MAT.dotabb} +"U32MAT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=U32MAT"] +"MATCAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=MATCAT"] +"U32MAT" -> "MATCAT" + +\end{chunk} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{domain U32VEC U32Vector} \begin{chunk}{U32Vector.input} @@ -142735,12 +142971,6 @@ t8:=fill!(t2,7) )spool )lisp (bye) -\end{chunk} -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} See Also: o )show U8Vector o )show U16Vector @@ -153849,9 +154079,10 @@ Note that this code is not included in the generated catdef.spad file. \getchunk{domain UTSZ UnivariateTaylorSeriesCZero} \getchunk{domain UNISEG UniversalSegment} -\getchunk{domain U8VEC U16Vector} +\getchunk{domain U8VEC U8Vector} \getchunk{domain U16VEC U16Vector} \getchunk{domain U32VEC U32Vector} +\getchunk{domain U32MAT U32Matrix} \getchunk{domain VARIABLE Variable} \getchunk{domain VECTOR Vector} \getchunk{domain VOID Void} diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index 35d7805..d8d132a 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -24647,6 +24647,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed. (|U8Vector| . U8VEC) (|U16Vector| . U16VEC) (|U32Vector| . U32VEC) + (|U32Matrix| . U32MAT) (|Vector| . VECTOR) (|VectorFunctions2| . VECTOR2) (|ViewDefaultsPackage| . VIEWDEF) @@ -39299,7 +39300,7 @@ Given a form, $u$, we try to recover the input line that created it. \defun{getRefvU8}{getRefvU8} \begin{chunk}{defun getRefvU8} -(defun getRefvU8 (x n) +(defun getRefvU8 (n x) (make-array n :initial-element x :element-type '(unsigned-byte 8))) \end{chunk} @@ -39328,7 +39329,7 @@ Given a form, $u$, we try to recover the input line that created it. \defun{getRefvU16}{getRefvU16} \begin{chunk}{defun getRefvU16} -(defun getRefvU16 (x n) +(defun getRefvU16 (n x) (make-array n :initial-element x :element-type '(unsigned-byte 16))) \end{chunk} @@ -39357,10 +39358,56 @@ Given a form, $u$, we try to recover the input line that created it. \defun{getRefvU32}{getRefvU32} \begin{chunk}{defun getRefvU32} -(defun getRefvU32 (x n) +(defun getRefvU32 (n x) (make-array n :initial-element x :element-type '(unsigned-byte 32))) \end{chunk} +\section{U32Matrix} + +\defmacro{aref2U32} +\begin{chunk}{defmacro aref2U32} +(defmacro aref2U32 (v i j) + `(aref (the (simple-array (unsigned-byte 32) (* *)) ,v) ,i ,j)) + +\end{chunk} + +\defmacro{setAref2U32} +\begin{chunk}{defmacro setAref2U32} +(defmacro setAref2U32 (v i j s) + `(setf (aref (the (simple-array (unsigned-byte 32) (* *)) ,v) ,i ,j), s)) + +\end{chunk} + +\defmacro{anrowsU32} +\begin{chunk}{defmacro anrowsU32} +(defmacro anrowsU32 (v) + `(array-dimension (the (simple-array (unsigned-byte 32) (* *)) ,v) 0)) + +\end{chunk} + +\defmacro{ancolsU32} +\begin{chunk}{defmacro ancolsU32} +(defmacro ancolsU32 (v) + `(array-dimension (the (simple-array (unsigned-byte 32) (* *)) ,v) 1)) + +\end{chunk} + +\defmacro{makeMatrixU32} +\begin{chunk}{defmacro makeMatrixU32} +(defmacro makeMatrixU32 (n m) + `(make-array (list ,n ,m) :element-type '(unsigned-byte 32) + :initial-element 0)) + +\end{chunk} + +\defmacro{makeMatrix1U32} +\begin{chunk}{defmacro makeMatrix1U32} +(defmacro makeMatrix1U32 (n m s) + `(make-array (list ,n ,m) :element-type '(unsigned-byte 32) + :initial-element ,s)) + +\end{chunk} + \section{DirectProduct} \defun{vec2list}{vec2list} \begin{chunk}{defun vec2list} @@ -43855,6 +43902,9 @@ This needs to work off the internal exposure list, not the file. ;;; above level 0 macros +\getchunk{defmacro ancolsU32} +\getchunk{defmacro anrowsU32} +\getchunk{defmacro aref2U32} \getchunk{defmacro assq} \getchunk{defmacro bvec-setelt} \getchunk{defmacro bvec-size} @@ -43915,11 +43965,14 @@ This needs to work off the internal exposure list, not the file. \getchunk{defmacro make-double-matrix1} \getchunk{defmacro make-double-vector} \getchunk{defmacro make-double-vector1} +\getchunk{defmacro makeMatrixU32} +\getchunk{defmacro makeMatrix1U32} \getchunk{defmacro qvlenU8} \getchunk{defmacro qvlenU16} \getchunk{defmacro qvlenU32} \getchunk{defmacro Rest} \getchunk{defmacro startsId?} +\getchunk{defmacro setAref2U32} \getchunk{defmacro seteltU8} \getchunk{defmacro seteltU16} \getchunk{defmacro seteltU32} diff --git a/books/ps/v103u32matrix.eps b/books/ps/v103u32matrix.eps new file mode 100644 index 0000000..509fc29 --- /dev/null +++ b/books/ps/v103u32matrix.eps @@ -0,0 +1,278 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: graphviz version 2.26.3 (20100126.1600) +%%Title: pic +%%Pages: 1 +%%BoundingBox: 36 36 118 152 +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 118 152 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 82 116 boxprim clip newpath +1 1 set_scale 0 rotate 40 41 translate +0.16355 0.45339 0.92549 graphcolor +newpath -4 -5 moveto +-4 112 lineto +79 112 lineto +79 -5 lineto +closepath fill +1 setlinewidth +0.16355 0.45339 0.92549 graphcolor +newpath -4 -5 moveto +-4 112 lineto +79 112 lineto +79 -5 lineto +closepath stroke +% U32MAT +gsave +[ /Rect [ 0 72 74 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=U32MAT) >> + /Subtype /Link +/ANN pdfmark +0.27273 0.73333 1 nodecolor +newpath 74 108 moveto +0 108 lineto +0 72 lineto +74 72 lineto +closepath fill +1 setlinewidth +filled +0.27273 0.73333 1 nodecolor +newpath 74 108 moveto +0 108 lineto +0 72 lineto +74 72 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +7.5 86.4 moveto 59 (U32MAT) alignedtext +grestore +% MATCAT +gsave +[ /Rect [ 0 0 74 36 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=MATCAT) >> + /Subtype /Link +/ANN pdfmark +0.60606 0.73333 1 nodecolor +newpath 74 36 moveto +0 36 lineto +0 0 lineto +74 0 lineto +closepath fill +1 setlinewidth +filled +0.60606 0.73333 1 nodecolor +newpath 74 36 moveto +0 36 lineto +0 0 lineto +74 0 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +8 14.4 moveto 58 (MATCAT) alignedtext +grestore +% U32MAT->MATCAT +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 37 71.83 moveto +37 64.13 37 54.97 37 46.42 curveto +stroke +0 0 0 edgecolor +newpath 40.5 46.41 moveto +37 36.41 lineto +33.5 46.41 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 40.5 46.41 moveto +37 36.41 lineto +33.5 46.41 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +end +restore +%%EOF diff --git a/changelog b/changelog index 4e03b84..02b64f3 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,9 @@ +20130225 tpd src/axiom-website/patches.html 20130225.01.tpd.patch +20130225 tpd src/input/machinearithmetic.input unit test U32Matrix +20130225 tpd src/algebra/Makefile add U32Matrix +20130225 tpd books/bookvol5 add U32Matrix support macros +20130225 tpd books/bookvol10.3 add U32Matrix +20130225 tpd books/ps/v103u32matrix.eps added 20130223 tpd src/axiom-website/patches.html 20130223.04.tpd.patch 20120223 tpd buglist add 7233: fill! operation from U8Vector does not show up 20130223 tpd src/axiom-website/patches.html 20130223.03.tpd.patch diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index d67ff07..cfe129b 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -4113,7 +4113,7 @@ LAYER8=\ ${OUT}/PROJSP.o \ ${OUT}/REDORDER.o ${OUT}/SRAGG.o ${OUT}/SRAGG-.o ${OUT}/STREAM.o \ ${OUT}/SYMPOLY.o ${OUT}/TS.o ${OUT}/TUPLE.o ${OUT}/UPSCAT.o \ - ${OUT}/UPSCAT-.o ${OUT}/U16VEC.o ${OUT}/U32VEC.o \ + ${OUT}/UPSCAT-.o ${OUT}/U8VEC.o ${OUT}/U16VEC.o ${OUT}/U32VEC.o \ ${OUT}/VECTCAT.o ${OUT}/VECTCAT-.o ${OUT}/XDPOLY.o \ ${OUT}/XEXPPKG.o ${OUT}/XF.o ${OUT}/XF-.o ${OUT}/XPBWPOLY.o \ ${OUT}/XPOLY.o ${OUT}/XRPOLY.o \ @@ -4724,6 +4724,30 @@ LAYER8=\ /*"UPSCAT-" -> {"ENTIRER"; "ELTAB"; "DIFRING"; "PDRING"; "OAMON"; "OASGP"}*/ /*"UPSCAT-" -> {"ORDSET"; "INT"; "LIST"; "ILIST"; "LSAGG-"}*/ +"U8VEC" [color="#88FF44",href="bookvol10.3.pdf#nameddest=U8VEC"] +"U8VEC" -> "A1AGG" +/*"U8VEC" -> {"FLAGG"; "LNAGG"; "IXAGG"; "HOAGG"; "AGG"; "TYPE"; "SETCAT"}*/ +/*"U8VEC" -> {"BASTYPE"; "KOERCE"; "EVALAB"; "IEVALAB"; "ELTAGG"; "ELTAB"}*/ +/*"U8VEC" -> {"CLAGG"; "KONVERT"; "ORDSET"; "INT"; "SINT"; "NNI"; "INS"}*/ +/*"U8VEC" -> {"UFD"; "GCDDOM"; "INTDOM"; "COMRING"; "RING"; "RNG"}*/ +/*"U8VEC" -> {"ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SGROUP"}*/ +/*"U8VEC" -> {"MONOID"; "LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"}*/ +/*"U8VEC" -> {"MODULE"; "ENTIRER"; "EUCDOM"; "PID"; "OINTDOM"; "ORDRING"}*/ +/*"U8VEC" -> {"OAGROUP"; "OCAMON"; "OAMON"; "OASGP"; "DIFRING"; "RETRACT"}*/ +/*"U8VEC" -> {"LINEXP"; "PATMAB"; "CFCAT"; "REAL"; "CHARZ"; "STEP"; "OM"}*/ + +"U16VEC" [color="#88FF44",href="bookvol10.3.pdf#nameddest=U16VEC"] +"U16VEC" -> "A1AGG" +/*"U16VEC" -> {"FLAGG"; "LNAGG"; "IXAGG"; "HOAGG"; "AGG"; "TYPE"; "SETCAT"}*/ +/*"U16VEC" -> {"BASTYPE"; "KOERCE"; "EVALAB"; "IEVALAB"; "ELTAGG"; "ELTAB"}*/ +/*"U16VEC" -> {"CLAGG"; "KONVERT"; "ORDSET"; "INT"; "SINT"; "NNI"; "INS"}*/ +/*"U16VEC" -> {"UFD"; "GCDDOM"; "INTDOM"; "COMRING"; "RING"; "RNG"}*/ +/*"U16VEC" -> {"ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SGROUP"}*/ +/*"U16VEC" -> {"MONOID"; "LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"}*/ +/*"U16VEC" -> {"MODULE"; "ENTIRER"; "EUCDOM"; "PID"; "OINTDOM"; "ORDRING"}*/ +/*"U16VEC" -> {"OAGROUP"; "OCAMON"; "OAMON"; "OASGP"; "DIFRING"; "RETRACT"}*/ +/*"U16VEC" -> {"LINEXP"; "PATMAB"; "CFCAT"; "REAL"; "CHARZ"; "STEP"; "OM"}*/ + "U32VEC" [color="#88FF44",href="bookvol10.3.pdf#nameddest=U32VEC"] "U32VEC" -> "A1AGG" /*"U32VEC" -> {"FLAGG"; "LNAGG"; "IXAGG"; "HOAGG"; "AGG"; "TYPE"; "SETCAT"}*/ @@ -4857,6 +4881,7 @@ LAYER9=\ ${OUT}/LODO1.o ${OUT}/LODO2.o ${OUT}/LPOLY.o \ ${OUT}/LSMP.o ${OUT}/LSMP1.o ${OUT}/MATCAT2.o \ ${OUT}/PROJPL.o ${OUT}/PTCAT.o ${OUT}/STRICAT.o ${OUT}/TRIMAT.o \ + ${OUT}/U32MAT.o \ layer9done @ @@ -5091,6 +5116,19 @@ LAYER9=\ /*"ULSCAT" -> {"TRANFUN"; "TRIGCAT"; "ATRIG"; "HYPCAT"; "AHYP"}*/ /*"ULSCAT" -> {"ELEMFUN"; "FIELD"; "DIVRING"}*/ +"U32MAT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=U32MAT"] +"U32MAT" -> "MATCAT" +/*"U32MAT" -> {"ARR2CAT"; "HOAGG"; "AGG"; "TYPE"; "SETCAT"; "BASTYPE"}*/ +/*"U32MAT" -> {"KOERCE"; "EVALAB"; "IEVALAB"; "INS"; "UFD"; "GCDDOM"}*/ +/*"U32MAT" -> {"INTDOM"; "COMRING"; "RING"; "RNG"; "ABELGRP"; "CABMON"}*/ +/*"U32MAT" -> {"ABELMON"; "ABELSG"; "SGROUP"; "MONOID"; "LMODULE"}*/ +/*"U32MAT" -> {"BMODULE"; "RMODULE"; "ALGEBRA"; "MODULE"; "ENTIRER"}*/ +/*"U32MAT" -> {"EUCDOM"; "PID"; "OINTDOM"; "ORDRING"; "OAGROUP"}*/ +/*"U32MAT" -> {"OCAMON"; "OAMON"; "OASGP"; "ORDSET"; "DIFRING"}*/ +/*"U32MAT" -> {"KONVERT"; "RETRACT"; "LINEXP"; "PATMAB"; "CFCAT"; "REAL"}*/ +/*"U32MAT" -> {"CHARZ"; "STEP"; "A1AGG"; "FLAGG"; "LNAGG"; "IXAGG"}*/ +/*"U32MAT" -> {"ELTAGG"; "ELTAB"; "CLAGG"; "INT"; "OM"; "FIELD"; "DIVRING"}*/ + @ \subsection{Layer10} Depends on: IVECTOR PTCAT STRICAT LOCPOWC\\ diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index e14d6f2..8f3e343 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -3985,5 +3985,7 @@ books/bookvol10.3 add U16Vector books/bookvol10.3 add U8Vector 20130223.04.tpd.patch buglist add 7233: fill! operation from U8Vector does not show up +20130225.01.tpd.patch +books/bookvol10.3 add U32Matrix diff --git a/src/input/machinearithmetic.input.pamphlet b/src/input/machinearithmetic.input.pamphlet index 9edbf2b..56fd17b 100644 --- a/src/input/machinearithmetic.input.pamphlet +++ b/src/input/machinearithmetic.input.pamphlet @@ -18,237 +18,241 @@ )set message auto off )clear all ---S 1 of 33 +--S 1 of 34 t1:=empty()$U32Vector --R --R (1) [] --R Type: U32Vector --E 1 ---S 2 of 33 +--S 2 of 34 t2:=new(10,10)$U32Vector --R --R (2) [10,10,10,10,10,10,10,10,10,10] --R Type: U32Vector --E 2 ---S 3 of 33 +--S 3 of 34 t3:=qelt(t2,2) --R --R (3) 10 --R Type: PositiveInteger --E 3 ---S 4 of 33 +--S 4 of 34 t4:=elt(t2,2) --R --R (4) 10 --R Type: PositiveInteger --E 4 ---S 5 of 33 +--S 5 of 34 t5:=t2.2 --R --R (5) 10 --R Type: PositiveInteger --E 5 ---S 6 of 33 +--S 6 of 34 t6:=qsetelt!(t2,2,5) --R --R (6) 5 --R Type: PositiveInteger --E 6 ---S 7 of 33 +--S 7 of 34 t2.2 --R --R (7) 5 --R Type: PositiveInteger --E 7 ---S 8 of 33 +--S 8 of 34 t7:=setelt(t2,3,6) --R --R (8) 6 --R Type: PositiveInteger --E 8 ---S 9 of 33 +--S 9 of 34 t2.3 --R --R (9) 6 --R Type: PositiveInteger --E 9 ---S 10 of 33 +--S 10 of 34 #t2 --R --R (10) 10 --R Type: PositiveInteger --E 10 ---S 11 of 33 +--S 11 of 34 t8:=fill!(t2,7) --R --R (11) [7,7,7,7,7,7,7,7,7,7] --R Type: U32Vector --E 11 ---S 12 of 33 +--S 12 of 34 ta:=empty()$U16Vector --R --R (12) [] --R Type: U16Vector --E 12 ---S 13 of 33 +--S 13 of 34 tb:=new(10,10)$U16Vector --R --R (13) [10,10,10,10,10,10,10,10,10,10] --R Type: U16Vector --E 13 ---S 14 of 33 +--S 14 of 34 tc:=qelt(tb,2) --R --R (14) 10 --R Type: PositiveInteger --E 14 ---S 15 of 33 +--S 15 of 34 td:=elt(tb,2) --R --R (15) 10 --R Type: PositiveInteger --E 15 ---S 16 of 33 +--S 16 of 34 te:=tb.2 --R --R (16) 10 --R Type: PositiveInteger --E 16 ---S 17 of 33 +--S 17 of 34 tf:=qsetelt!(tb,2,5) --R --R (17) 5 --R Type: PositiveInteger --E 17 ---S 18 of 33 +--S 18 of 34 tb.2 --R --R (18) 5 --R Type: PositiveInteger --E 18 ---S 19 of 33 +--S 19 of 34 tg:=setelt(tb,3,6) --R --R (19) 6 --R Type: PositiveInteger --E 19 ---S 20 of 33 +--S 20 of 34 tb.3 --R --R (20) 6 --R Type: PositiveInteger --E 20 ---S 21 of 33 +--S 21 of 34 #tb --R --R (21) 10 --R Type: PositiveInteger --E 21 ---S 22 of 33 +--S 22 of 34 th:=fill!(tb,7) --R --R (22) [7,7,7,7,7,7,7,7,7,7] --R Type: U16Vector --E 22 ---S 23 of 33 +--S 23 of 34 t1a:=empty()$U8Vector --R --R (23) [] ---R Type: U8Vector +--R Type: U8Vector --E 23 ---S 24 of 33 +--S 24 of 34 t1b:=new(10,10)$U8Vector --R --R (24) [10,10,10,10,10,10,10,10,10,10] ---R Type: U8Vector +--R Type: U8Vector --E 24 ---S 25 of 33 +--S 25 of 34 t1c:=qelt(t1b,2) --R --R (25) 10 --R Type: PositiveInteger --E 25 ---S 26 of 33 +--S 26 of 34 t1d:=elt(t1b,2) --R --R (26) 10 --R Type: PositiveInteger --E 26 ---S 27 of 33 +--S 27 of 34 t1e:=t1b.2 --R --R (27) 10 --R Type: PositiveInteger --E 27 ---S 28 of 33 +--S 28 of 34 t1f:=qsetelt!(t1b,2,5) --R --R (28) 5 --R Type: PositiveInteger --E 28 ---S 29 of 33 +--S 29 of 34 t1b.2 --R --R (29) 5 --R Type: PositiveInteger --E 29 ---S 30 of 33 +--S 30 of 34 t1g:=setelt(t1b,3,6) --R --R (30) 6 --R Type: PositiveInteger --E 30 ---S 31 of 33 +--S 31 of 34 t1b.3 --R --R (31) 6 --R Type: PositiveInteger --E 31 ---S 32 of 33 +--S 32 of 34 #t1b --R --R (32) 10 --R Type: PositiveInteger --E 32 ---S 33 of 33 +--S 33 of 34 t1h:=fill!(t1b,7) --R --R (33) [7,7,7,7,7,7,7,7,7,7] ---R Type: U8Vector +--R Type: U8Vector --E 33 +--S 34 of 34 +v32:=qnew(3,4)$U32Matrix() +--E 34 + )spool )lisp (bye)