[BACK]Return to array.texi CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-doc / parts / builtin

Diff for /OpenXM/src/asir-doc/parts/builtin/array.texi between version 1.1 and 1.14

version 1.1, 1999/12/08 05:47:44 version 1.14, 2011/12/09 05:13:52
Line 1 
Line 1 
   @comment $OpenXM: OpenXM/src/asir-doc/parts/builtin/array.texi,v 1.13 2009/03/24 17:02:06 ohara Exp $
   \BJP
 @node $BG[Ns(B,,, $BAH$_9~$_H!?t(B  @node $BG[Ns(B,,, $BAH$_9~$_H!?t(B
 @section $BG[Ns(B  @section $BG[Ns(B
   \E
   \BEG
   @node Arrays,,, Built-in Function
   @section Arrays
   \E
   
 @menu  @menu
 * newvect::  * newvect vector vect::
   * ltov::
 * vtol::  * vtol::
 * newmat::  * newbytearray::
   * newmat matrix::
   * mat matr matc::
 * size::  * size::
 * det::  * det nd_det invmat::
   * rowx rowm rowa colx colm cola::
   
 * qsort::  * qsort::
 @end menu  @end menu
   
 @node newvect,,, $BG[Ns(B  \JP @node newvect vector vect,,, $BG[Ns(B
 @subsection @code{newvect}  \EG @node newvect vector vect,,, Arrays
   @subsection @code{newvect}, @code{vector}, @code{vect}
 @findex newvect  @findex newvect
   @findex vector
   @findex vect
   
 @table @t  @table @t
 @item newvect(@var{len}[,@var{list}])  @item newvect(@var{len}[,@var{list}])
 :: $BD9$5(B @var{len} $B$N%Y%/%H%k$r@8@.$9$k(B.  @item vector(@var{len}[,@var{list}])
   \JP :: $BD9$5(B @var{len} $B$N%Y%/%H%k$r@8@.$9$k(B.
   \EG :: Creates a new vector object with its length @var{len}.
   @item vect([@var{elements}])
   \JP :: @var{elements} $B$rMWAG$H$9$k%Y%/%H%k$r@8@.$9$k(B.
   \EG :: Creates a new vector object by @var{elements}.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B%Y%/%H%k(B  \JP $B%Y%/%H%k(B
   \EG vector
 @item len  @item len
 $B<+A3?t(B  \JP $B<+A3?t(B
   \EG non-negative integer
 @item list  @item list
 $B%j%9%H(B  \JP $B%j%9%H(B
   \EG list
   @item elements
   \JP $BMWAG$NJB$S(B
   \EG elements of the vector
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $BD9$5(B @var{len} $B$N%Y%/%H%k$r@8@.$9$k(B. $BBh(B 2 $B0z?t$,$J$$>l9g(B,  @code{vect} $B$OMWAG$NJB$S$+$i%Y%/%H%k$r@8@.$9$k(B.
   @item
   @code{vector} $B$O(B @code{newvect} $B$NJLL>$G$"$k(B.
   @item
   @code{newvect} $B$OD9$5(B @var{len} $B$N%Y%/%H%k$r@8@.$9$k(B. $BBh(B 2 $B0z?t$,$J$$>l9g(B,
 $B3F@.J,$O(B 0 $B$K=i4|2=$5$l$k(B. $BBh(B 2 $B0z?t$,$"$k>l9g(B,  $B3F@.J,$O(B 0 $B$K=i4|2=$5$l$k(B. $BBh(B 2 $B0z?t$,$"$k>l9g(B,
 $B%$%s%G%C%/%9$N>.$5$$@.J,$+$i(B, $B%j%9%H$N(B  $B%$%s%G%C%/%9$N>.$5$$@.J,$+$i(B, $B%j%9%H$N(B
 $B3FMWAG$K$h$j=i4|2=$5$l$k(B. $B3FMWAG$O(B, $B@hF,$+$i=g$K(B  $B3FMWAG$K$h$j=i4|2=$5$l$k(B. $B3FMWAG$O(B, $B@hF,$+$i=g$K(B
Line 54 
Line 85 
 @item  @item
 $BH!?t$N0z?t$H$7$F%Y%/%H%k$rEO$7$?>l9g(B, $BEO$5$l$?H!?t$O(B, $B$=$N%Y%/%H%k$N@.J,(B  $BH!?t$N0z?t$H$7$F%Y%/%H%k$rEO$7$?>l9g(B, $BEO$5$l$?H!?t$O(B, $B$=$N%Y%/%H%k$N@.J,(B
 $B$r=q$-49$($k$3$H$,$G$-$k(B.  $B$r=q$-49$($k$3$H$,$G$-$k(B.
   \E
   \BEG
   @item
   @code{vect} creates a new vector object by its elements.
   @item
   @code{vector} is an alias of @code{newvect}.
   @item
   @code{newvect} creates a new vector object with its length @var{len} and its elements
   all cleared to value 0.
   If the second argument, a list, is given, the vector is initialized by
   the list elements.
   Elements are used from the first through the last.
   If the list is short for initializing the full vector,
   0's are filled in the remaining vector elements.
   @item
   Elements are indexed from 0 through @var{len}-1.  Note that the first
   element has not index 1.
   @item
   List and vector are different types in @b{Asir}.
   Lists are conveniently used for representing many data objects whose
   size varies dynamically as computation proceeds.
   By its flexible expressive power, it is also conveniently used to
   describe initial values for other structured objects as you see
   for vectors.
   Access for an element of a list is performed by following pointers to
   next elements.  By this, access costs for list elements differ for
   each element.
   In contrast to lists, vector elements can be accessed in a same time,
   because they are accessed by computing displacements from the top memory
   location of the vector object.
   
   Note also, in @b{Asir}, modification of an element of a vector causes
   modification of the whole vector itself,
   while modification of a list element does not cause the modification
   of the whole list object.
   
   By this, in @b{Asir} language,
   a vector element designator can be a left value of
   assignment statement, but a list element designator can NOT be a left
   value of assignment statement.
   
   @item
   No distinction of column vectors and row vectors in @b{Asir}.
   If a matrix is applied to a vector from left, the vector shall be taken
   as a column vector, and if from right it shall be taken as a row vector.
   @item
   The length (or size or dimension) of a vector is given by function
   @code{size()}.
   @item
   When a vector is passed to a function as its argument
   (actual parameter), the vector element can be modified in that
   function.
   
   @item
   A vector is displayed in a similar format as for a list.
   Note, however, there is a distinction: Elements of a vector are
   separated simply by a `blank space', while those of a list by a `comma.'
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 67 
Line 156 
 [5,6]  [5,6]
 [4] size(A);  [4] size(A);
 [5]  [5]
 [5] def afo(V) @{ V[0] = x; @}  [5] length(A);
 [6] afo(A)$  5
 [7] A;  [6] vect(1,2,3,4,[5,6]);
   [ 1 2 3 4 [5,6] ]
   [7] def afo(V) @{ V[0] = x; @}
   [8] afo(A)$
   [9] A;
 [ x 2 3 4 [5,6] ]  [ x 2 3 4 [5,6] ]
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
 @fref{newmat}, @fref{size}.  \EG @item References
   @fref{newmat matrix}, @fref{size}, @fref{ltov}, @fref{vtol}.
 @end table  @end table
   
 @node vtol,,, $BG[Ns(B  \JP @node ltov,,, $BG[Ns(B
   \EG @node ltov,,, Arrays
   @subsection @code{ltov}
   @findex ltov
   
   @table @t
   @item ltov(@var{list})
   \JP :: $B%j%9%H$r%Y%/%H%k$KJQ49$9$k(B.
   \EG :: Converts a list into a vector.
   @end table
   
   @table @var
   @item return
   \JP $B%Y%/%H%k(B
   \EG vector
   @item list
   \JP $B%j%9%H(B
   \EG list
   @end table
   
   @itemize @bullet
   \BJP
   @item
   $B%j%9%H(B @var{list} $B$rF1$8D9$5$N%Y%/%H%k$KJQ49$9$k(B.
   @item
   $B$3$N4X?t$O(B @code{newvect(length(@var{list}), @var{list})} $B$KEy$7$$(B.
   \E
   \BEG
   @item
   Converts a list @var{list} into a vector of same length.
   See also @code{newvect()}.
   \E
   @end itemize
   
   @example
   [3] A=[1,2,3];
   [4] ltov(A);
   [ 1 2 3 ]
   @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item References
   @fref{newvect vector vect}, @fref{vtol}.
   @end table
   
   \JP @node vtol,,, $BG[Ns(B
   \EG @node vtol,,, Arrays
 @subsection @code{vtol}  @subsection @code{vtol}
 @findex vtol  @findex vtol
   
 @table @t  @table @t
 @item vtol(@var{vect})  @item vtol(@var{vect})
 :: $B%Y%/%H%k$r%j%9%H$KJQ49$9$k(B.  \JP :: $B%Y%/%H%k$r%j%9%H$KJQ49$9$k(B.
   \EG :: Converts a vector into a list.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B%j%9%H(B  \JP $B%j%9%H(B
   \EG list
 @item vect  @item vect
 $B%Y%/%H%k(B  \JP $B%Y%/%H%k(B
   \EG vector
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $BD9$5(B @var{n} $B$N%Y%/%H%k(B @var{vect} $B$r(B  $BD9$5(B @var{n} $B$N%Y%/%H%k(B @var{vect} $B$r(B
  @code{[@var{vect}[0],...,@var{vect}[@var{n}-1]]} $B$J$k%j%9%H$KJQ49$9$k(B.   @code{[@var{vect}[0],...,@var{vect}[@var{n}-1]]} $B$J$k%j%9%H$KJQ49$9$k(B.
 @item  @item
 $B%j%9%H$+$i%Y%/%H%k$X$NJQ49$O(B @code{newvect()} $B$G9T$&(B.  $B%j%9%H$+$i%Y%/%H%k$X$NJQ49$O(B @code{newvect()} $B$G9T$&(B.
   \E
   \BEG
   @item
   Converts a vector @var{vect} of length @var{n} into
   a list @code{[@var{vect}[0],...,@var{vect}[@var{n}-1]]}.
   @item
   A conversion from a list to a vector is done by @code{newvect()}.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 110 
Line 263 
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
 @fref{newvect}.  \EG @item References
   @fref{newvect vector vect}, @fref{ltov}.
 @end table  @end table
   
 @node newmat,,, $BG[Ns(B  \JP @node newbytearray,,, $BG[Ns(B
 @subsection @code{newmat}  \EG @node newbytearray,,, Arrays
   @subsection @code{newbytearray}
   @findex newbytearray
   
   @table @t
   @item newbytearray(@var{len},[@var{listorstring}])
   \JP :: $BD9$5(B @var{len} $B$N(B byte array $B$r@8@.$9$k(B.
   \EG :: Creates a new byte array.
   @end table
   
   @table @var
   @item return
   byte array
   @item len
   \JP $B<+A3?t(B
   \EG non-negative integer
   @item listorstring
   \JP $B%j%9%H$^$?$OJ8;zNs(B
   \EG list or string
   @end table
   
   @itemize @bullet
   @item
   \JP @code{newvect} $B$HF1MM$K$7$F(B byte array $B$r@8@.$9$k(B.
   \EG This function generates a byte array. The specification is
   similar to that of @code{newvect}.
   @item
   \JP $BJ8;zNs$G=i4|CM$r;XDj$9$k$3$H$b2DG=$G$"$k(B.
   \EG The initial value can be specified by a character string.
   @item
   \JP byte array $B$NMWAG$N%"%/%;%9$OG[Ns$HF1MM$G$"$k(B.
   \EG One can access elements of a byte array just as an array.
   @end itemize
   
   @example
   [182] A=newbytearray(3);
   |00 00 00|
   [183] A=newbytearray(3,[1,2,3]);
   |01 02 03|
   [184] A=newbytearray(3,"abc");
   |61 62 63|
   [185] A[0];
   97
   [186] A[1]=123;
   123
   [187] A;
   |61 7b 63|
   @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item References
   @fref{newvect vector vect}.
   @end table
   
   \JP @node newmat matrix,,, $BG[Ns(B
   \EG @node newmat matrix,,, Arrays
   @subsection @code{newmat}, @code{matrix}
 @findex newmat  @findex newmat
   @findex matrix
   
 @table @t  @table @t
 @item newmat(@var{row},@var{col} [,@var{[[a,b,}...@var{],[c,d,}...@var{],}...@var{]}])  @item newmat(@var{row},@var{col} [,[[@var{a},@var{b},...],[@var{c},@var{d},...],...]])
 :: @var{row} $B9T(B @var{col} $BNs$N9TNs$r@8@.$9$k(B.  @item matrix(@var{row},@var{col} [,[[@var{a},@var{b},...],[@var{c},@var{d},...],...]])
   \JP :: @var{row} $B9T(B @var{col} $BNs$N9TNs$r@8@.$9$k(B.
   \EG :: Creates a new matrix with @var{row} rows and @var{col} columns.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B9TNs(B  \JP $B9TNs(B
 @item row,col  \EG matrix
 $B<+A3?t(B  @item row col
 @item a,b,c,d  \JP $B<+A3?t(B
 $BG$0U(B  \EG non-negative integer
   @item a b c d
   \JP $BG$0U(B
   \EG arbitrary
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
   @code{matrix} $B$O(B @code{newmat} $B$NJLL>$G$"$k(B.
   @item
 @var{row} $B9T(B @var{col} $BNs$N9TNs$r@8@.$9$k(B. $BBh(B 3 $B0z?t$,$J$$>l9g(B,  @var{row} $B9T(B @var{col} $BNs$N9TNs$r@8@.$9$k(B. $BBh(B 3 $B0z?t$,$J$$>l9g(B,
 $B3F@.J,$O(B 0 $B$K=i4|2=$5$l$k(B. $BBh(B 3 $B0z?t$,$"$k>l9g(B,  $B3F@.J,$O(B 0 $B$K=i4|2=$5$l$k(B. $BBh(B 3 $B0z?t$,$"$k>l9g(B,
 $B%$%s%G%C%/%9$N>.$5$$@.J,$+$i(B, $B3F9T$,(B, $B%j%9%H$N(B  $B%$%s%G%C%/%9$N>.$5$$@.J,$+$i(B, $B3F9T$,(B, $B%j%9%H$N(B
Line 148 
Line 368 
 @item  @item
 $BH!?t$N0z?t$H$7$F9TNs$rEO$7$?>l9g(B, $BEO$5$l$?H!?t$O(B, $B$=$N9TNs$N@.J,(B  $BH!?t$N0z?t$H$7$F9TNs$rEO$7$?>l9g(B, $BEO$5$l$?H!?t$O(B, $B$=$N9TNs$N@.J,(B
 $B$r=q$-49$($k$3$H$,$G$-$k(B.  $B$r=q$-49$($k$3$H$,$G$-$k(B.
   \E
   \BEG
   @item
   @code{matrix} is an alias of @code{newmat}.
   @item
   If the third argument, a list, is given, the newly created matrix
   is initialized so that each element of the list (again a list)
   initializes each of the rows of the matrix.
   Elements are used from the first through the last.
   If the list is short, 0's are filled in the remaining matrix elements.
   If no third argument is given all the elements are cleared to 0.
   @item
   The size of a matrix is given by function  @code{size()}.
   @item
   Let @code{M} be a program variable assigned to a matrix.
   Then, @code{M[I]} denotes a (row) vector which corresponds with
   the @code{I}-th row of the matrix.
   Note that the vector shares its element with the original matrix.
   Subsequently, if an element of the vector is modified, then the
   corresponding matrix element is also modified.
   @item
   When a matrix is passed to a function as its argument
   (actual parameter), the matrix element can be modified within that
   function.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 167  return to toplevel
Line 412  return to toplevel
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
 @fref{newvect}, @fref{size}, @fref{det}.  \EG @item References
   @fref{newvect vector vect}, @fref{size}, @fref{det nd_det invmat}.
 @end table  @end table
   
 @node size,,, $BG[Ns(B  \JP @node mat matr matc,,, $BG[Ns(B
   \EG @node mat matr matc,,, Arrays
   @subsection @code{mat}, @code{matr}, @code{matc}
   @findex mat
   @findex matr
   @findex matc
   
   @table @t
   @item mat(@var{vector}[,...])
   @item matr(@var{vector}[,...])
   \JP :: $B9T%Y%/%H%k$NJB$S$+$i9TNs$r@8@.$9$k(B.
   \EG :: Creates a new matrix by list of row vectors.
   @item matc(@var{vector}[,...])
   \JP :: $BNs%Y%/%H%k$NJB$S$+$i9TNs$r@8@.$9$k(B.
   \EG :: Creates a new matrix by list of column vectors.
   @end table
   
   @table @var
   @item return
   \JP $B9TNs(B
   \EG matrix
   @item @var{vector}
   \JP $BG[Ns$^$?$O%j%9%H(B
   \EG array or list
   @end table
   
   @itemize @bullet
   \BJP
   @item
   @code{mat} $B$O(B @code{matr} $B$NJLL>$G$"$k(B.
   @item
   $B0z?t$N3F%Y%/%H%k$OF1$8D9$5$r$b$D(B.
   $B3FMWAG$O(B, $B@hF,$+$i=g$K;H$o$l(B, $BB-$j$J$$J,$O(B 0 $B$,Kd$a$i$l$k(B.
   \E
   \BEG
   @item
   @code{mat} is an alias of @code{matr}.
   @item
   Each vector has same length.
   Elements are used from the first through the last.
   If the list is short, 0's are filled in the remaining matrix elements.
   \E
   @end itemize
   
   @example
   [0] matr([1,2,3],[4,5,6],[7,8]);
   [ 1 2 3 ]
   [ 4 5 6 ]
   [ 7 8 0 ]
   [1] matc([1,2,3],[4,5,6],[7,8]);
   [ 1 4 7 ]
   [ 2 5 8 ]
   [ 3 6 0 ]
   @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item References
   @fref{newmat matrix}
   @end table
   
   \JP @node size,,, $BG[Ns(B
   \EG @node size,,, Arrays
 @subsection @code{size}  @subsection @code{size}
 @findex size  @findex size
   
 @table @t  @table @t
 @item size(@var{vect|mat})  @item size(@var{vect|mat})
 :: @code{[@var{vect} $B$ND9$5(B]} $B$^$?$O(B @code{[@var{mat} $B$N9T?t(B,@var{mat} $B$NNs?t(B]}.  \JP :: @code{[@var{vect} $B$ND9$5(B]} $B$^$?$O(B @code{[@var{mat} $B$N9T?t(B,@var{mat} $B$NNs?t(B]}.
   \BEG
   :: A list containing the number of elements of the given vector,
   @code{[size of @var{vect}]},
   or a list containing row size and column size of the given matrix,
   @code{[row size of @var{mat}, column size of @var{mat}]}.
   \E
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B%j%9%H(B  \JP $B%j%9%H(B
   \EG list
 @item vect  @item vect
 $B%Y%/%H%k(B  \JP $B%Y%/%H%k(B
   \EG vector
 @item mat  @item mat
 $B9TNs(B  \JP $B9TNs(B
   \EG matrix
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 @var{vect} $BKt$O(B, @var{mat} $B$N%5%$%:$r%j%9%H$G=PNO$9$k(B.  @var{vect} $B$ND9$5(B, $B$^$?$O(B @var{mat} $B$NBg$-$5$r%j%9%H$G=PNO$9$k(B.
 @item  @item
 @var{list} $B$N%5%$%:$O(B @code{length()}$B$r(B, $BM-M}<0$K8=$l$kC19`<0$N?t$O(B @code{nmono()} $B$rMQ$$$k(B.  @var{vect} $B$ND9$5$O(B @code{length()} $B$G5a$a$k$3$H$b$G$-$k(B.
   @item
   @var{list} $B$ND9$5$O(B @code{length()}$B$r(B, $BM-M}<0$K8=$l$kC19`<0$N?t$O(B @code{nmono()} $B$rMQ$$$k(B.
   \E
   \BEG
   @item
   Return a list consisting of the dimension of the vector @var{vect},
   or a list consisting of the row size and column size of the matrix
   @var{matrix}.
   @item
   Use @code{length()} for the size of @var{list}, and
   @code{nmono()} for the number of monomials with non-zero coefficients
   in a rational expression.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 201  return to toplevel
Line 532  return to toplevel
 [ 0 0 0 0 ]  [ 0 0 0 0 ]
 [1] size(A);  [1] size(A);
 [4]  [4]
 [2] B = newmat(2,3,[[1,2,3],[4,5,6]]);  [2] length(A);
   4
   [3] B = newmat(2,3,[[1,2,3],[4,5,6]]);
 [ 1 2 3 ]  [ 1 2 3 ]
 [ 4 5 6 ]  [ 4 5 6 ]
 [3] size(B);  [4] size(B);
 [2,3]  [2,3]
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{car cdr cons append reverse length}, @fref{nmono}.  @fref{car cdr cons append reverse length}, @fref{nmono}.
 @end table  @end table
   
 @node det,,, $BG[Ns(B  \JP @node det nd_det invmat,,, $BG[Ns(B
 @subsection @code{det}  \EG @node det nd_det invmat,,, Arrays
   @subsection @code{det}, @code{nd_det}, @code{invmat}
 @findex det  @findex det
   @findex nd_det
   @findex invmat
   
 @table @t  @table @t
 @item det(@var{mat}[,@var{mod}])  @item det(@var{mat}[,@var{mod}])
 :: @var{mat} $B$N9TNs<0$r5a$a$k(B.  @itemx nd_det(@var{mat}[,@var{mod}])
   \JP :: @var{mat} $B$N9TNs<0$r5a$a$k(B.
   \EG :: Determinant of @var{mat}.
   @item invmat(@var{mat})
   \JP :: @var{mat} $B$N5U9TNs$r5a$a$k(B.
   \EG :: Inverse matrix of @var{mat}.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B<0(B  \JP @code{det}: $B<0(B, @code{invmat}: $B%j%9%H(B
   \EG @code{det}: expression, @code{invmat}: list
 @item mat  @item mat
 $B9TNs(B  \JP $B9TNs(B
   \EG matrix
 @item mod  @item mod
 $BAG?t(B  \JP $BAG?t(B
   \EG prime
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $B9TNs(B @var{mat} $B$N9TNs<0$r5a$a$k(B.  @code{det} $B$*$h$S(B @code{nd_det} $B$O9TNs(B @var{mat} $B$N9TNs<0$r5a$a$k(B.
   @code{invmat} $B$O9TNs(B @var{mat} $B$N5U9TNs$r5a$a$k(B. $B5U9TNs$O(B @code{[$BJ,Jl(B, $BJ,;R(B]}
   $B$N7A$GJV$5$l(B, @code{$BJ,Jl(B}$B$,9TNs(B, @code{$BJ,;R(B/$BJ,Jl(B} $B$,5U9TNs$H$J$k(B.
 @item  @item
 $B0z?t(B @var{mod} $B$,$"$k;~(B, GF(@var{mod}) $B>e$G$N9TNs<0$r5a$a$k(B.  $B0z?t(B @var{mod} $B$,$"$k;~(B, GF(@var{mod}) $B>e$G$N9TNs<0$r5a$a$k(B.
 @item  @item
 $BJ,?t$J$7$N%,%&%9>C5nK!$K$h$C$F$$$k$?$a(B, $BB?JQ?tB?9`<0$r@.J,$H$9$k(B  $BJ,?t$J$7$N%,%&%9>C5nK!$K$h$C$F$$$k$?$a(B, $BB?JQ?tB?9`<0$r@.J,$H$9$k(B
 $B9TNs$KBP$7$F$O>.9TNs<0E83+$K$h$kJ}K!$N$[$&$,8zN($,$h$$>l9g$b$"$k(B.  $B9TNs$KBP$7$F$O>.9TNs<0E83+$K$h$kJ}K!$N$[$&$,8zN($,$h$$>l9g$b$"$k(B.
   @item
   @code{nd_det} $B$OM-M}?t$^$?$OM-8BBN>e$NB?9`<09TNs$N9TNs<0(B
   $B7W;;@lMQ$G$"$k(B. $B%"%k%4%j%:%`$O$d$O$jJ,?t$J$7$N%,%&%9>C5nK!$@$,(B,
   $B%G!<%?9=B$$*$h$S>h=|;;$N9)IW$K$h$j(B, $B0lHL$K(B @code{det} $B$h$j9bB.$K(B
   $B7W;;$G$-$k(B.
   \E
   \BEG
   @item
   @code{det} and @code{nd_det} compute the determinant of matrix @var{mat}.
   @code{invmat} computes the inverse matrix of matrix @var{mat}.
   @code{invmat} returns a list @code{[num,den]}, where @code{num}
   is a matrix and @code{num/den} represents the inverse matrix.
   @item
   The computation is done over GF(@var{mod}) if @var{mod} is specitied.
   @item
   The fraction free Gaussian algorithm is employed.  For matrices with
   multi-variate polynomial entries, minor expansion algorithm sometimes
   is more efficient than the fraction free Gaussian algorithm.
   @item
   @code{nd_det} can be used for computing the determinant of a matrix with
   polynomial entries over the rationals or finite fields. The algorithm
   is an improved vesion of the fraction free Gaussian algorithm
   and it computes the determinant faster than @code{det}.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 253  return to toplevel
Line 625  return to toplevel
 [ 1 u u^2 u^3 u^4 ]  [ 1 u u^2 u^3 u^4 ]
 [ 1 v v^2 v^3 v^4 ]  [ 1 v v^2 v^3 v^4 ]
 [95] fctr(det(A));  [95] fctr(det(A));
 [[1,1],[u-v,1],[-z+v,1],[-z+u,1],[-y+u,1],[y-v,1],[-y+z,1],[-x+u,1],[-x+z,1],  [[1,1],[u-v,1],[-z+v,1],[-z+u,1],[-y+u,1],[y-v,1],[-y+z,1],[-x+u,1],
 [-x+v,1],[-x+y,1]]  [-x+z,1],[-x+v,1],[-x+y,1]]
   [96] A = newmat(3,3)$
   [97] for(I=0;I<3;I++)for(J=0,B=A[I],W=V[I];J<3;J++)B[J]=W^J;
   [98] A;
   [ 1 x x^2 ]
   [ 1 y y^2 ]
   [ 1 z z^2 ]
   [99] invmat(A);
   [[ -z*y^2+z^2*y z*x^2-z^2*x -y*x^2+y^2*x ]
   [ y^2-z^2 -x^2+z^2 x^2-y^2 ]
   [ -y+z x-z -x+y ],(-y+z)*x^2+(y^2-z^2)*x-z*y^2+z^2*y]
   [100] A*B[0];
   [ (-y+z)*x^2+(y^2-z^2)*x-z*y^2+z^2*y 0 0 ]
   [ 0 (-y+z)*x^2+(y^2-z^2)*x-z*y^2+z^2*y 0 ]
   [ 0 0 (-y+z)*x^2+(y^2-z^2)*x-z*y^2+z^2*y ]
   [101] map(red,A*B[0]/B[1]);
   [ 1 0 0 ]
   [ 0 1 0 ]
   [ 0 0 1 ]
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
 @fref{newmat}.  \EG @item References
   @fref{newmat matrix}.
 @end table  @end table
   
 @node qsort,,, $BG[Ns(B  \JP @node qsort,,, $BG[Ns(B
   \EG @node qsort,,, Arrays
 @subsection @code{qsort}  @subsection @code{qsort}
 @findex qsort  @findex qsort
   
 @table @t  @table @t
 @item qsort(@var{array}[,@var{func}])  @item qsort(@var{array}[,@var{func}])
 :: $B0l<!85G[Ns(B @var{array} $B$r%=!<%H$9$k(B.  \JP :: $B0l<!85G[Ns(B @var{array} $B$r%=!<%H$9$k(B.
   \EG :: Sorts an array @var{array}.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 @var{array} ($BF~NO$HF1$8(B; $BMWAG$N$_F~$lBX$o$k(B)  \JP @var{array} ($BF~NO$HF1$8(B; $BMWAG$N$_F~$lBX$o$k(B)
   \EG @var{array} (The same as the input; Only the elements are exchanged.)
 @item array  @item array
 $B0l<!85G[Ns(B  \JP $B0l<!85G[Ns(B
   \EG array
 @item func  @item func
 $BHf3SMQ4X?t(B  \JP $BHf3SMQ4X?t(B
   \EG function for comparison
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $B0l<!85G[Ns$r(B quick sort $B$G%=!<%H$9$k(B.  $B0l<!85G[Ns$r(B quick sort $B$G%=!<%H$9$k(B.
 @item  @item
Line 292  return to toplevel
Line 689  return to toplevel
 $B$b$N$+$i=g$KJB$Y49$($i$l$k(B.  $B$b$N$+$i=g$KJB$Y49$($i$l$k(B.
 @item  @item
 $BG[Ns$O?7$?$K@8@.$5$l$:(B, $B0z?t$NG[Ns$NMWAG$N$_F~$lBX$o$k(B.  $BG[Ns$O?7$?$K@8@.$5$l$:(B, $B0z?t$NG[Ns$NMWAG$N$_F~$lBX$o$k(B.
   \E
   \BEG
   @item
   This function sorts an array by @var{quick sort}.
   @item
   If @var{func} is not specified, the built-in comparison function
   is used and the array is sorted in increasing order.
   @item
   If a function of two arguments @var{func} which returns 0, 1, or -1
   is provided, then an ordering is detemined so that
   @code{A<B} if @code{@var{func}(A,B)=1} holds, and
   the array is sorted in increasing order with respect to the ordering.
   @item
   The returned array is the same as the input. Only the elements
   are exchanged.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 303  return to toplevel
Line 716  return to toplevel
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{ord}, @fref{vars}.  @fref{ord}, @fref{vars}.
   @end table
   
   \JP @node rowx rowm rowa colx colm cola,,, $BG[Ns(B
   \EG @node rowx rowm rowa colx colm cola,,, Arrays
   @subsection @code{rowx}, @code{rowm}, @code{rowa}, @code{colx}, @code{colm}, @code{cola}
   @findex rowx
   @findex rowm
   @findex rowa
   @findex colx
   @findex colm
   @findex cola
   
   @table @t
   @item rowx(@var{matrix},@var{i},@var{j})
   \JP :: $BBh(B @var{i} $B9T$HBh(B @var{j} $B9T$r8r49$9$k(B.
   \EG :: Exchanges the @var{i}-th and @var{j}-th rows.
   @item rowm(@var{matrix},@var{i},@var{c})
   \JP :: $BBh(B @var{i} $B9T$r(B @var{c} $BG\$9$k(B.
   \EG :: Multiplies the @var{i}-th row by @var{c}.
   @item rowa(@var{matrix},@var{i},@var{c})
   \JP :: $BBh(B @var{i} $B9T$KBh(B @var{i} $B9T$N(B @var{c} $BG\$r2C$($k(B.
   \EG :: Appends @var{c} times the @var{j}-th row to the @var{j}-th row.
   @item colx(@var{matrix},@var{i},@var{j})
   \JP :: $BBh(B @var{i} $B9T$HBh(B @var{j} $B9T$r8r49$9$k(B.
   \EG :: Exchanges the @var{i}-th and @var{j}-th columns.
   @item colm(@var{matrix},@var{i},@var{c})
   \JP :: $BBh(B @var{i} $B9T$r(B @var{c} $BG\$9$k(B.
   \EG :: Multiplies the @var{i}-th column by @var{c}.
   @item cola(@var{matrix},@var{i},@var{c})
   \JP :: $BBh(B @var{i} $B9T$KBh(B @var{i} $B9T$N(B @var{c} $BG\$r2C$($k(B.
   \EG :: Appends @var{c} times the @var{j}-th column to the @var{j}-th column.
   @end table
   
   @table @var
   @item return
   \JP $B9TNs(B
   \EG matrix
   @item @var{i}, @var{j}
   \JP $B@0?t(B
   \EG integers
   @item @var{c}
   \JP $B78?t(B
   \EG coefficient
   @end table
   
   @itemize @bullet
   \BJP
   @item
   $B9TNs$N4pK\JQ7A$r9T$&$?$a$N4X?t$G$"$k(B.
   @item
   $B9TNs$,GK2u$5$l$k$3$H$KCm0U$9$k(B.
   \E
   \BEG
   @item
   These operations are destructive for the matrix.
   \E
   @end itemize
   
   @example
   [0] A=newmat(3,3,[[1,2,3],[4,5,6],[7,8,9]]);
   [ 1 2 3 ]
   [ 4 5 6 ]
   [ 7 8 9 ]
   [1] rowx(A,1,2)$
   [2] A;
   [ 1 2 3 ]
   [ 7 8 9 ]
   [ 4 5 6 ]
   [3] rowm(A,2,x);
   [ 1 2 3 ]
   [ 7 8 9 ]
   [ 4*x 5*x 6*x ]
   [4] rowa(A,0,1,z);
   [ 7*z+1 8*z+2 9*z+3 ]
   [ 7 8 9 ]
   [ 4*x 5*x 6*x ]
   @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item References
   @fref{newmat matrix}
 @end table  @end table

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.14

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>