diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet index 8f25bf9..afee333 100644 --- a/books/bookvol10.3.pamphlet +++ b/books/bookvol10.3.pamphlet @@ -142518,6 +142518,244 @@ U16Vector() : OneDimensionalArrayAggregate Integer == add \end{chunk} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{domain U8MAT U8Matrix} + +\begin{chunk}{U8Matrix.input} +)set break resume +)sys rm -f U8Matrix.output +)spool U8Matrix.output +)set message test on +)set message auto off +)clear all + +--S 1 of 1 +)show U8Matrix +--R U8Matrix is a domain constructor +--R Abbreviation for U8Matrix is U8MAT +--R This constructor is exposed in this frame. +--R Issue )edit /tmp/ta.spad to see algebra source code for U8MAT +--R +--R------------------------------- Operations -------------------------------- +--R ?*? : (U8Vector,%) -> U8Vector ?*? : (%,U8Vector) -> U8Vector +--R ?*? : (Integer,%) -> % ?*? : (%,Integer) -> % +--R ?*? : (Integer,%) -> % ?*? : (%,%) -> % +--R ?+? : (%,%) -> % -? : % -> % +--R ?-? : (%,%) -> % antisymmetric? : % -> Boolean +--R coerce : U8Vector -> % column : (%,Integer) -> U8Vector +--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) -> U8Vector +--R sample : () -> % square? : % -> Boolean +--R squareTop : % -> % symmetric? : % -> Boolean +--R transpose : % -> % transpose : U8Vector -> % +--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(U8Vector) 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(U8Vector) 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,U8Vector) -> % +--R setRow! : (%,Integer,U8Vector) -> % +--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}{U8Matrix.help} +==================================================================== +U8Matrix examples +==================================================================== + +See Also: +o )show U8Matrix +o )show U16Matrix +o )show U32Matrix + +\end{chunk} +\pagehead{U8Matrix}{U8MAT} +\pagepic{ps/v103u8matrix.eps}{U8MAT}{1.00} +{\bf See}\\ + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{U8MAT}{\#{}?} & +\cross{U8MAT}{-?} & +\cross{U8MAT}{?**?} & +\cross{U8MAT}{?*?} \\ +\cross{U8MAT}{?+?} & +\cross{U8MAT}{?-?} & +\cross{U8MAT}{?/?} & +\cross{U8MAT}{?=?} \\ +\cross{U8MAT}{?\~{}=?} & +\cross{U8MAT}{antisymmetric?} & +\cross{U8MAT}{any?} & +\cross{U8MAT}{coerce} \\ +\cross{U8MAT}{column} & +\cross{U8MAT}{columnSpace} & +\cross{U8MAT}{copy} & +\cross{U8MAT}{count} \\ +\cross{U8MAT}{determinant} & +\cross{U8MAT}{diagonal?} & +\cross{U8MAT}{diagonalMatrix} & +\cross{U8MAT}{elt} \\ +\cross{U8MAT}{empty} & +\cross{U8MAT}{empty?} & +\cross{U8MAT}{eq?} & +\cross{U8MAT}{eval} \\ +\cross{U8MAT}{every?} & +\cross{U8MAT}{exquo} & +\cross{U8MAT}{fill!} & +\cross{U8MAT}{hash} \\ +\cross{U8MAT}{horizConcat} & +\cross{U8MAT}{inverse} & +\cross{U8MAT}{latex} & +\cross{U8MAT}{less?} \\ +\cross{U8MAT}{listOfLists} & +\cross{U8MAT}{map} & +\cross{U8MAT}{map!} & +\cross{U8MAT}{matrix} \\ +\cross{U8MAT}{maxColIndex} & +\cross{U8MAT}{maxRowIndex} & +\cross{U8MAT}{member?} & +\cross{U8MAT}{members} \\ +\cross{U8MAT}{minColIndex} & +\cross{U8MAT}{minRowIndex} & +\cross{U8MAT}{minordet} & +\cross{U8MAT}{more?} \\ +\cross{U8MAT}{ncols} & +\cross{U8MAT}{new} & +\cross{U8MAT}{nrows} & +\cross{U8MAT}{nullSpace} \\ +\cross{U8MAT}{nullity} & +\cross{U8MAT}{parts} & +\cross{U8MAT}{pfaffian} & +\cross{U8MAT}{qelt} \\ +\cross{U8MAT}{qnew} & +\cross{U8MAT}{qsetelt!} & +\cross{U8MAT}{rank} & +\cross{U8MAT}{row} \\ +\cross{U8MAT}{rowEchelon} & +\cross{U8MAT}{sample} & +\cross{U8MAT}{scalarMatrix} & +\cross{U8MAT}{setColumn!} \\ +\cross{U8MAT}{setRow!} & +\cross{U8MAT}{setelt} & +\cross{U8MAT}{setsubMatrix!} & +\cross{U8MAT}{size?} \\ +\cross{U8MAT}{square?} & +\cross{U8MAT}{squareTop} & +\cross{U8MAT}{subMatrix} & +\cross{U8MAT}{swapColumns!} \\ +\cross{U8MAT}{swapRows!} & +\cross{U8MAT}{symmetric?} & +\cross{U8MAT}{transpose} & +\cross{U8MAT}{vertConcat} \\ +\cross{U8MAT}{zero} & +\end{tabular} + +\begin{chunk}{domain U8MAT U8Matrix} +)abbrev domain U8MAT U8Matrix +++ Description: This is a low-level domain which implements matrices +++ (two dimensional arrays) of 8-bit integers. +++ Indexing is 0 based, there is no bound checking (unless +++ provided by lower level). +U8Matrix : MatrixCategory(Integer, + U8Vector, + U8Vector) with + qnew : (Integer, Integer) -> % + ++ qnew(n, m) creates a new n by m matrix of zeros. + ++ + ++X qnew(3,4)$U8Matrix() + == add + + R ==> Integer + + Qelt2 ==> AREF2U8$Lisp + Qsetelt2 ==> SETAREF2U8$Lisp + Qnrows ==> ANROWSU8$Lisp + Qncols ==> ANCOLSU8$Lisp + Qnew ==> MAKEMATRIXU8$Lisp + Qnew1 ==> MAKEMATRIX1U8$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}{U8MAT.dotabb} +"U8MAT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=U8MAT"] +"MATCAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=MATCAT"] +"U8MAT" -> "MATCAT" + +\end{chunk} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{domain U16MAT U16Matrix} \begin{chunk}{U16Matrix.input} @@ -142622,6 +142860,7 @@ U16Matrix examples ==================================================================== See Also: +o )show U8Matrix o )show U16Matrix o )show U32Matrix @@ -142859,6 +143098,7 @@ U32Matrix examples ==================================================================== See Also: +o )show U8Matrix o )show U16Matrix o )show U32Matrix @@ -154317,6 +154557,7 @@ Note that this code is not included in the generated catdef.spad file. \getchunk{domain UTSZ UnivariateTaylorSeriesCZero} \getchunk{domain UNISEG UniversalSegment} +\getchunk{domain U8MAT U8Matrix} \getchunk{domain U16MAT U16Matrix} \getchunk{domain U32MAT U32Matrix} \getchunk{domain U8VEC U8Vector} diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index b9ef07f..b2c79c2 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -24644,6 +24644,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed. (|UniversalSegment| . UNISEG) (|UniversalSegmentFunctions2| . UNISEG2) (|UserDefinedVariableOrdering| . UDVO) + (|U8Matrix| . U8MAT) (|U16Matrix| . U16MAT) (|U32Matrix| . U32MAT) (|U8Vector| . U8VEC) @@ -39363,48 +39364,48 @@ Given a form, $u$, we try to recover the input line that created it. (make-array n :initial-element x :element-type '(unsigned-byte 32))) \end{chunk} -\section{U32Matrix} +\section{U8Matrix} -\defmacro{aref2U32} -\begin{chunk}{defmacro aref2U32} -(defmacro aref2U32 (v i j) - `(aref (the (simple-array (unsigned-byte 32) (* *)) ,v) ,i ,j)) +\defmacro{aref2U8} +\begin{chunk}{defmacro aref2U8} +(defmacro aref2U8 (v i j) + `(aref (the (simple-array (unsigned-byte 8) (* *)) ,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)) +\defmacro{setAref2U8} +\begin{chunk}{defmacro setAref2U8} +(defmacro setAref2U8 (v i j s) + `(setf (aref (the (simple-array (unsigned-byte 8) (* *)) ,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)) +\defmacro{anrowsU8} +\begin{chunk}{defmacro anrowsU8} +(defmacro anrowsU8 (v) + `(array-dimension (the (simple-array (unsigned-byte 8) (* *)) ,v) 0)) \end{chunk} -\defmacro{ancolsU32} -\begin{chunk}{defmacro ancolsU32} -(defmacro ancolsU32 (v) - `(array-dimension (the (simple-array (unsigned-byte 32) (* *)) ,v) 1)) +\defmacro{ancolsU8} +\begin{chunk}{defmacro ancolsU8} +(defmacro ancolsU8 (v) + `(array-dimension (the (simple-array (unsigned-byte 8) (* *)) ,v) 1)) \end{chunk} -\defmacro{makeMatrixU32} -\begin{chunk}{defmacro makeMatrixU32} -(defmacro makeMatrixU32 (n m) - `(make-array (list ,n ,m) :element-type '(unsigned-byte 32) +\defmacro{makeMatrixU8} +\begin{chunk}{defmacro makeMatrixU8} +(defmacro makeMatrixU8 (n m) + `(make-array (list ,n ,m) :element-type '(unsigned-byte 8) :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) +\defmacro{makeMatrix1U8} +\begin{chunk}{defmacro makeMatrix1U8} +(defmacro makeMatrix1U8 (n m s) + `(make-array (list ,n ,m) :element-type '(unsigned-byte 8) :initial-element ,s)) \end{chunk} @@ -39455,6 +39456,52 @@ Given a form, $u$, we try to recover the input line that created it. \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} @@ -43949,10 +43996,13 @@ This needs to work off the internal exposure list, not the file. ;;; above level 0 macros +\getchunk{defmacro ancolsU8} \getchunk{defmacro ancolsU16} \getchunk{defmacro ancolsU32} +\getchunk{defmacro anrowsU8} \getchunk{defmacro anrowsU16} \getchunk{defmacro anrowsU32} +\getchunk{defmacro aref2U8} \getchunk{defmacro aref2U16} \getchunk{defmacro aref2U32} \getchunk{defmacro assq} @@ -44015,6 +44065,8 @@ 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 makeMatrixU8} +\getchunk{defmacro makeMatrix1U8} \getchunk{defmacro makeMatrixU16} \getchunk{defmacro makeMatrix1U16} \getchunk{defmacro makeMatrixU32} @@ -44024,6 +44076,7 @@ This needs to work off the internal exposure list, not the file. \getchunk{defmacro qvlenU32} \getchunk{defmacro Rest} \getchunk{defmacro startsId?} +\getchunk{defmacro setAref2U8} \getchunk{defmacro setAref2U16} \getchunk{defmacro setAref2U32} \getchunk{defmacro seteltU8} diff --git a/books/ps/v103u8matrix.eps b/books/ps/v103u8matrix.eps new file mode 100644 index 0000000..207b8a8 --- /dev/null +++ b/books/ps/v103u8matrix.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 +% U8MAT +gsave +[ /Rect [ 4 72 70 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=U8MAT) >> + /Subtype /Link +/ANN pdfmark +0.27273 0.73333 1 nodecolor +newpath 70 108 moveto +4 108 lineto +4 72 lineto +70 72 lineto +closepath fill +1 setlinewidth +filled +0.27273 0.73333 1 nodecolor +newpath 70 108 moveto +4 108 lineto +4 72 lineto +70 72 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +12 86.4 moveto 50 (U8MAT) 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 +% U8MAT->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 66a526e..b0bf79c 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,9 @@ +20130227 tpd src/axiom-website/patches.html 20130227.01.tpd.patch +20130227 tpd src/input/machinearithmetic.input unit test U8Matrix +20130227 tpd src/algebra/Makefile add U8Matrix +20130227 tpd books/bookvol5 add support code for U8Matrix +20130227 tpd books/bookvol10.3 add U8Matrix +20130227 tpd books/ps/v103u8matrix.eps added 20130226 tpd src/axiom-website/patches.html 20130226.02.tpd.patch 20130226 tpd books/ps/v103u16matrix.eps added 20130226 tpd books/bookvol10.3 add U16Matrix diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index a7d5082..8a56e3a 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -4881,7 +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}/U16MAT.o ${OUT}/U32MAT.o \ + ${OUT}/U8MAT.o ${OUT}/U16MAT.o ${OUT}/U32MAT.o \ layer9done @ @@ -5116,6 +5116,19 @@ LAYER9=\ /*"ULSCAT" -> {"TRANFUN"; "TRIGCAT"; "ATRIG"; "HYPCAT"; "AHYP"}*/ /*"ULSCAT" -> {"ELEMFUN"; "FIELD"; "DIVRING"}*/ +"U8MAT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=U8MAT"] +"U8MAT" -> "MATCAT" +/*"U8MAT" -> {"ARR2CAT"; "HOAGG"; "AGG"; "TYPE"; "SETCAT"; "BASTYPE"}*/ +/*"U8MAT" -> {"KOERCE"; "EVALAB"; "IEVALAB"; "INS"; "UFD"; "GCDDOM"}*/ +/*"U8MAT" -> {"INTDOM"; "COMRING"; "RING"; "RNG"; "ABELGRP"; "CABMON"}*/ +/*"U8MAT" -> {"ABELMON"; "ABELSG"; "SGROUP"; "MONOID"; "LMODULE"}*/ +/*"U8MAT" -> {"BMODULE"; "RMODULE"; "ALGEBRA"; "MODULE"; "ENTIRER"}*/ +/*"U8MAT" -> {"EUCDOM"; "PID"; "OINTDOM"; "ORDRING"; "OAGROUP"}*/ +/*"U8MAT" -> {"OCAMON"; "OAMON"; "OASGP"; "ORDSET"; "DIFRING"}*/ +/*"U8MAT" -> {"KONVERT"; "RETRACT"; "LINEXP"; "PATMAB"; "CFCAT"; "REAL"}*/ +/*"U8MAT" -> {"CHARZ"; "STEP"; "A1AGG"; "FLAGG"; "LNAGG"; "IXAGG"}*/ +/*"U8MAT" -> {"ELTAGG"; "ELTAB"; "CLAGG"; "INT"; "OM"; "FIELD"; "DIVRING"}*/ + "U16MAT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=U16MAT"] "U16MAT" -> "MATCAT" /*"U16MAT" -> {"ARR2CAT"; "HOAGG"; "AGG"; "TYPE"; "SETCAT"; "BASTYPE"}*/ @@ -18383,6 +18396,7 @@ REGRESS= \ UnivariateTaylorSeriesCZero.regress \ UnivariateTaylorSeriesCategory.regress \ UniversalSegment.regress \ + U8Matrix.regress \ U16Matrix.regress \ U32Matrix.regress \ U8Vector.regress \ diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index b6e75e2..431ead0 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -3991,5 +3991,7 @@ books/bookvol10.3 add U32Matrix books/bookvol10.4 comment out bad code in GUESS 20130226.02.tpd.patch books/bookvol10.3 add U16Matrix +20130227.01.tpd.patch +books/bookvol10.3 add U8Matrix diff --git a/src/input/machinearithmetic.input.pamphlet b/src/input/machinearithmetic.input.pamphlet index eb8b768..77d4c43 100644 --- a/src/input/machinearithmetic.input.pamphlet +++ b/src/input/machinearithmetic.input.pamphlet @@ -18,238 +18,238 @@ )set message auto off )clear all ---S 1 of 35 +--S 1 of 36 t1:=empty()$U32Vector --R --R (1) [] --R Type: U32Vector --E 1 ---S 2 of 35 +--S 2 of 36 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 35 +--S 3 of 36 t3:=qelt(t2,2) --R --R (3) 10 --R Type: PositiveInteger --E 3 ---S 4 of 35 +--S 4 of 36 t4:=elt(t2,2) --R --R (4) 10 --R Type: PositiveInteger --E 4 ---S 5 of 35 +--S 5 of 36 t5:=t2.2 --R --R (5) 10 --R Type: PositiveInteger --E 5 ---S 6 of 35 +--S 6 of 36 t6:=qsetelt!(t2,2,5) --R --R (6) 5 --R Type: PositiveInteger --E 6 ---S 7 of 35 +--S 7 of 36 t2.2 --R --R (7) 5 --R Type: PositiveInteger --E 7 ---S 8 of 35 +--S 8 of 36 t7:=setelt(t2,3,6) --R --R (8) 6 --R Type: PositiveInteger --E 8 ---S 9 of 35 +--S 9 of 36 t2.3 --R --R (9) 6 --R Type: PositiveInteger --E 9 ---S 10 of 35 +--S 10 of 36 #t2 --R --R (10) 10 --R Type: PositiveInteger --E 10 ---S 11 of 35 +--S 11 of 36 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 35 +--S 12 of 36 ta:=empty()$U16Vector --R --R (12) [] --R Type: U16Vector --E 12 ---S 13 of 35 +--S 13 of 36 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 35 +--S 14 of 36 tc:=qelt(tb,2) --R --R (14) 10 --R Type: PositiveInteger --E 14 ---S 15 of 35 +--S 15 of 36 td:=elt(tb,2) --R --R (15) 10 --R Type: PositiveInteger --E 15 ---S 16 of 35 +--S 16 of 36 te:=tb.2 --R --R (16) 10 --R Type: PositiveInteger --E 16 ---S 17 of 35 +--S 17 of 36 tf:=qsetelt!(tb,2,5) --R --R (17) 5 --R Type: PositiveInteger --E 17 ---S 18 of 35 +--S 18 of 36 tb.2 --R --R (18) 5 --R Type: PositiveInteger --E 18 ---S 19 of 35 +--S 19 of 36 tg:=setelt(tb,3,6) --R --R (19) 6 --R Type: PositiveInteger --E 19 ---S 20 of 35 +--S 20 of 36 tb.3 --R --R (20) 6 --R Type: PositiveInteger --E 20 ---S 21 of 35 +--S 21 of 36 #tb --R --R (21) 10 --R Type: PositiveInteger --E 21 ---S 22 of 35 +--S 22 of 36 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 35 +--S 23 of 36 t1a:=empty()$U8Vector --R --R (23) [] --R Type: U8Vector --E 23 ---S 24 of 35 +--S 24 of 36 t1b:=new(10,10)$U8Vector --R --R (24) [10,10,10,10,10,10,10,10,10,10] --R Type: U8Vector --E 24 ---S 25 of 35 +--S 25 of 36 t1c:=qelt(t1b,2) --R --R (25) 10 --R Type: PositiveInteger --E 25 ---S 26 of 35 +--S 26 of 36 t1d:=elt(t1b,2) --R --R (26) 10 --R Type: PositiveInteger --E 26 ---S 27 of 35 +--S 27 of 36 t1e:=t1b.2 --R --R (27) 10 --R Type: PositiveInteger --E 27 ---S 28 of 35 +--S 28 of 36 t1f:=qsetelt!(t1b,2,5) --R --R (28) 5 --R Type: PositiveInteger --E 28 ---S 29 of 35 +--S 29 of 36 t1b.2 --R --R (29) 5 --R Type: PositiveInteger --E 29 ---S 30 of 35 +--S 30 of 36 t1g:=setelt(t1b,3,6) --R --R (30) 6 --R Type: PositiveInteger --E 30 ---S 31 of 35 +--S 31 of 36 t1b.3 --R --R (31) 6 --R Type: PositiveInteger --E 31 ---S 32 of 35 +--S 32 of 36 #t1b --R --R (32) 10 --R Type: PositiveInteger --E 32 ---S 33 of 35 +--S 33 of 36 t1h:=fill!(t1b,7) --R --R (33) [7,7,7,7,7,7,7,7,7,7] --R Type: U8Vector --E 33 ---S 34 of 35 +--S 34 of 36 v32:=qnew(3,4)$U32Matrix() --R --R @@ -261,7 +261,7 @@ v32:=qnew(3,4)$U32Matrix() --R Type: U32Matrix --E 34 ---S 35 of 35 +--S 35 of 36 v32:=qnew(3,4)$U16Matrix() --R --R @@ -273,6 +273,18 @@ v32:=qnew(3,4)$U16Matrix() --R Type: U16Matrix --E 35 +--S 36 of 36 +v32:=qnew(3,4)$U8Matrix() +--R +--R +--R +0 0 0 0+ +--R | | +--R (36) |0 0 0 0| +--R | | +--R +0 0 0 0+ +--R Type: U8Matrix +--E 36 + )spool )lisp (bye)