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

Diff for /OpenXM/src/asir-doc/parts/appendix.texi between version 1.1 and 1.9

version 1.1, 1999/12/08 05:47:44 version 1.9, 2002/09/03 01:50:57
Line 1 
Line 1 
   @comment $OpenXM: OpenXM/src/asir-doc/parts/appendix.texi,v 1.8 2002/08/13 07:44:06 noro Exp $
   \BJP
 @node $BIUO?(B,,, Top  @node $BIUO?(B,,, Top
 @appendix $BIUO?(B  @appendix $BIUO?(B
   \E
   \BEG
   @node Appendix,,, Top
   @appendix Appendix
   \E
   
 @menu  @menu
   \BJP
 * $BJ8K!$N>\:Y(B::  * $BJ8K!$N>\:Y(B::
 * $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B::  * $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B::
 * $BF~NO%$%s%?%U%'!<%9(B::  * $BF~NO%$%s%?%U%'!<%9(B::
   * $B%i%$%V%i%j%$%s%?%U%'!<%9(B::
 * $BJQ99E@(B::  * $BJQ99E@(B::
 * $BJ88%(B::  * $BJ88%(B::
   \E
   \BEG
   * Details of syntax::
   * Files of user defined functions::
   * Input interfaces::
   * Library interfaces::
   * Changes::
   * References::
   \E
 @end menu  @end menu
   
   \BJP
 @node $BJ8K!$N>\:Y(B,,, $BIUO?(B  @node $BJ8K!$N>\:Y(B,,, $BIUO?(B
 @section $BJ8K!$N>\:Y(B  @section $BJ8K!$N>\:Y(B
   \E
   \BEG
   @node Details of syntax,,, Appendix
   @section Details of syntax
   \E
   
 @example  @example
 <$B<0(B>: (@xref{$B$5$^$6$^$J<0(B})  \BJP
   <$B<0(B>:
     @samp{(}<$B<0(B>@samp{)}      @samp{(}<$B<0(B>@samp{)}
     <$B<0(B> <$BFs9`1i;;;R(B> <$B<0(B>      <$B<0(B> <$BFs9`1i;;;R(B> <$B<0(B>
     @samp{+} <$B<0(B>      @samp{+} <$B<0(B>
Line 27 
Line 52 
     @samp{!} <$B<0(B>      @samp{!} <$B<0(B>
     <$B<0(B> @samp{?} <$B<0(B> @samp{:} <$B<0(B>      <$B<0(B> @samp{?} <$B<0(B> @samp{:} <$B<0(B>
     <$BH!?t(B> @samp{(} <$B<0JB$S(B> @samp{)}      <$BH!?t(B> @samp{(} <$B<0JB$S(B> @samp{)}
       <$BH!?t(B> @samp{(} <$B<0JB$S(B> @samp{|} <$B%*%W%7%g%sJB$S(B> @samp{)}
     <$BJ8;zNs(B>      <$BJ8;zNs(B>
     <$B;X?t%Y%/%H%k(B>      <$B;X?t%Y%/%H%k(B>
     <$B%"%H%`(B>      <$B%"%H%`(B>
     <$B%j%9%H(B>      <$B%j%9%H(B>
   \E
   \BEG
   <expression>:
       @samp{(}<expression>@samp{)}
       <expression> <binary operator> <expression>
       @samp{+} <expression>
       @samp{-} <expression>
       <left value>
       <left value> <assignment operator> <expression>
       <left value> @samp{++}
       <left value> @samp{--}
       @samp{++} <left value>
       @samp{--} <left value>
       @samp{!} <expression>
       <expression> @samp{?} <expression> @samp{:} <expression>
       <function> @samp{(} <expr list> @samp{)}
       <function> @samp{(} <expr list> @samp{|} <option list> @samp{)}
       <string>
       <exponent vector>
       <atom>
       <list>
   \E
 @end example  @end example
   \JP (@xref{$B$5$^$6$^$J<0(B}.)
   \EG (@xref{various expressions}.)
   
 @example  @example
   \BJP
 <$B:8JUCM(B>:  <$B:8JUCM(B>:
     <$BJQ?t(B> [@samp{[}<$B<0(B>@samp{]}]*      <$BJQ?t(B> [@samp{[}<$B<0(B>@samp{]}]*
   \E
   \BEG
   <left value>:
       <program variable> [@samp{[}<expression>@samp{]}]*
   \E
 @end example  @end example
   
 @example  @example
   \BJP
 <$BFs9`1i;;;R(B>:  <$BFs9`1i;;;R(B>:
     @samp{+} @samp{-} @samp{*} @samp{/} @samp{%} @samp{^}($BQQ(B)      @samp{+} @samp{-} @samp{*} @samp{/} @samp{%} @samp{^}($BQQ(B)
   \E
   \BEG
   <binary operator>:
       @samp{+} @samp{-} @samp{*} @samp{/} @samp{%} @samp{^}(exponentiation)
     @samp{==} @samp{!=} @samp{<} @samp{>} @samp{<=} @samp{>=} @samp{&&} @samp{||}      @samp{==} @samp{!=} @samp{<} @samp{>} @samp{<=} @samp{>=} @samp{&&} @samp{||}
   \E
       @samp{==} @samp{!=} @samp{<} @samp{>} @samp{<=} @samp{>=} @samp{&&} @samp{||}
 @end example  @end example
   
 @example  @example
 <$BBeF~1i;;;R(B>:  \JP <$BBeF~1i;;;R(B>:
   \EG <assignment operator>:
     @samp{=} @samp{+=} @samp{-=} @samp{*=} @samp{/=} @samp{%=} @samp{^=}      @samp{=} @samp{+=} @samp{-=} @samp{*=} @samp{/=} @samp{%=} @samp{^=}
 @end example  @end example
   
 @example  @example
   \BJP
 <$B<0JB$S(B>:  <$B<0JB$S(B>:
     <$B6u(B>      <$B6u(B>
     <$B<0(B> [@samp{,} <$B<0(B>]*      <$B<0(B> [@samp{,} <$B<0(B>]*
   \E
   \BEG
   <expr list>:
       <empty>
       <expression> [@samp{,} <expression>]*
   \E
 @end example  @end example
   
 @example  @example
   \BJP
   <$B%*%W%7%g%s(B>:
       alphabet $B$G;O$^$kJ8;zNs(B @samp{=} <$B<0(B>
   \E
   \BEG
   <option>:
       Character sequence beginning with an alphabetical letter @samp{=} <expression>
   \E
   @end example
   
   @example
   \BJP
   <$B%*%W%7%g%sJB$S(B>:
       <$B%*%W%7%g%s(B>
       <$B%*%W%7%g%s(B> [@samp{,} <$B%*%W%7%g%s(B>]*
   \E
   \BEG
   <option list>:
       <option>
       <option> [@samp{,} <option>]*
   \E
   @end example
   
   
   @example
   \BJP
 <$B%j%9%H(B>:  <$B%j%9%H(B>:
     @samp{[} <$B<0JB$S(B> @samp{]}      @samp{[} <$B<0JB$S(B> @samp{]}
   \E
   \BEG
   <list>:
       @samp{[} <expr list> @samp{]}
   \E
 @end example  @end example
   
 @example  @example
 <$BJQ?t(B>: (@xref{$BJQ?t$*$h$SITDj85(B})  \BJP
   <$BJQ?t(B>:
     $BBgJ8;z$G;O$^$kJ8;zNs(B (X,Y,Japan $B$J$I(B)      $BBgJ8;z$G;O$^$kJ8;zNs(B (X,Y,Japan $B$J$I(B)
   \E
   \BEG
   <program variable>:
      Sequence of alphabetical letters or numeric digits or @code{_}
      that begins with a capital alphabetical letter
      (X,Y,Japan etc.)
   \E
 @end example  @end example
   \JP (@xref{$BJQ?t$*$h$SITDj85(B}.)
   \EG (@xref{variables and indeterminates}.)
   
 @example  @example
   \BJP
 <$BH!?t(B>:  <$BH!?t(B>:
    $B>.J8;z$G;O$^$kJ8;zNs(B (fctr,gcd $B$J$I(B)     $B>.J8;z$G;O$^$kJ8;zNs(B (fctr,gcd $B$J$I(B)
   \E
   \BEG
   <function>:
      Sequence of alphabetical letters or numeric digits or @code{_}
      that begins with a small alphabetical letter
      (fctr,gcd etc.)
   \E
 @end example  @end example
   
 @example  @example
   \BJP
 <$B%"%H%`(B>:  <$B%"%H%`(B>:
    <$BITDj85(B>     <$BITDj85(B>
    <$B?t(B>     <$B?t(B>
   \E
   \BEG
   <atom>:
      <indeterminate>
      <number>
   \E
 @end example  @end example
   
 @example  @example
 <$BITDj85(B>: (@xref{$BJQ?t$*$h$SITDj85(B})  \BJP
   <$BITDj85(B>:
    $B>.J8;z$G;O$^$kJ8;zNs(B (a,bCD,c1_2 $B$J$I(B)     $B>.J8;z$G;O$^$kJ8;zNs(B (a,bCD,c1_2 $B$J$I(B)
   \E
   \BEG
   <indeterminate>:
      Sequence of alphabetical letters or numeric digits or @code{_}
      that begin with a small alphabetical letter
      (a,bCD,c1_2 etc.)
   \E
 @end example  @end example
   \JP (@xref{$BJQ?t$*$h$SITDj85(B}.)
   \EG (@xref{variables and indeterminates}.)
   
 @example  @example
 <$B?t(B>: (@xref{$B?t$N7?(B})  \BJP
   <$B?t(B>:
    <$BM-M}?t(B>     <$BM-M}?t(B>
    <$BIbF0>.?t(B>     <$BIbF0>.?t(B>
    <$BBe?tE*?t(B>     <$BBe?tE*?t(B>
    <$BJ#AG?t(B>     <$BJ#AG?t(B>
   \E
   \BEG
   <number>:
      <rational number>
      <floating point number>
      <algebraic number>
      <complex number>
   \E
 @end example  @end example
   \JP (@xref{$B?t$N7?(B}.)
   \EG (@xref{Types of numbers}.)
   
 @example  @example
 <$BM-M}?t(B>:  \JP <$BM-M}?t(B>:
   \EG <rational number>:
    0, 1, -2, 3/4     0, 1, -2, 3/4
 @end example  @end example
   
 @example  @example
 <$BIbF0>.?t(B>:  \JP <$BIbF0>.?t(B>:
   \EG <floating point number>:
    0.0, 1.2e10     0.0, 1.2e10
 @end example  @end example
   
 @example  @example
 <$BBe?tE*?t(B>: (@xref{$BBe?tE*?t$K4X$9$k1i;;(B})  \JP <$BBe?tE*?t(B>:
   \EG <algebraic number>:
    newalg(x^2+1), alg(0)^2+1     newalg(x^2+1), alg(0)^2+1
 @end example  @end example
   \JP (@xref{$BBe?tE*?t$K4X$9$k1i;;(B}.)
   \EG (@xref{Algebraic numbers}.)
   
 @example  @example
 <$BJ#AG?t(B>:  \JP <$BJ#AG?t(B>:
   \EG <complex number>:
    1+@code{@@i}, 2.3*@code{@@i}     1+@code{@@i}, 2.3*@code{@@i}
 @end example  @end example
   
 @example  @example
   \BJP
 <$BJ8;zNs(B>:  <$BJ8;zNs(B>:
    @samp{"} $B$G0O$^$l$?J8;zNs(B     @samp{"} $B$G0O$^$l$?J8;zNs(B
   \E
   \BEG
   <string>:
      character sequence enclosed by two @samp{"}'s.
   \E
 @end example  @end example
   
 @example  @example
 <$B;X?t%Y%/%H%k(B>: (@xref{$B%0%l%V%J4pDl$N7W;;(B})  \BJP
   <$B;X?t%Y%/%H%k(B>:
    @samp{<<} <$B<0JB$S(B> @samp{>>}     @samp{<<} <$B<0JB$S(B> @samp{>>}
   \E
   \BEG
   <exponent vector>:
      @samp{<<} <expr list> @samp{>>}
   \E
 @end example  @end example
   \JP (@xref{$B%0%l%V%J4pDl$N7W;;(B}.)
   \EG (@xref{Groebner basis computation}.)
   
 @example  @example
 <$BJ8(B>: (@xref{$BJ8(B})  \BJP
   <$BJ8(B>:
     <$B<0(B> <$B=*C<(B>      <$B<0(B> <$B=*C<(B>
     <$BJ#J8(B>      <$BJ#J8(B>
     @samp{break} <$B=*C<(B>      @samp{break} <$B=*C<(B>
Line 134 
Line 303 
     @samp{while} @samp{(} <$B<0JB$S(B> @samp{)} <$BJ8(B>      @samp{while} @samp{(} <$B<0JB$S(B> @samp{)} <$BJ8(B>
     @samp{def} <$BH!?t(B> @samp{(} <$B<0JB$S(B> @samp{)} @samp{@{} <$BJQ?t@k8@(B> <$BJ8JB$S(B> @samp{@}}      @samp{def} <$BH!?t(B> @samp{(} <$B<0JB$S(B> @samp{)} @samp{@{} <$BJQ?t@k8@(B> <$BJ8JB$S(B> @samp{@}}
     @samp{end(quit)} <$B=*C<(B>      @samp{end(quit)} <$B=*C<(B>
   \E
   \BEG
   <statement>:
       <expression> <terminator>
       <compound statement>
       @samp{break} <terminator>
       @samp{continue} <terminator>
       @samp{return} <terminator>
       @samp{return} <expression> <terminator>
       @samp{if} @samp{(} <expr list> @samp{)} <statement>
       @samp{if} @samp{(} <expr list> @samp{)} <statement> @samp{else} <statement>
       @samp{for} @samp{(} <expr list> @samp{;} <expr list> @samp{;} <expr list> @samp{)} <statement>
       @samp{do} <statement> @samp{while} @samp{(} <expr list> @samp{)} <terminator>
       @samp{while} @samp{(} <expr list> @samp{)} <statement>
       @samp{def} <function> @samp{(} <expr list> @samp{)} @samp{@{} <variable declaration> <stat list> @samp{@}}
       @samp{end(quit)} <terminator>
   \E
 @end example  @end example
   \JP (@xref{$BJ8(B}.)
   \EG (@xref{statements}.)
   
 @example  @example
 <$B=*C<(B>:  \JP <$B=*C<(B>:
   \EG <terminator>:
     @samp{;} @samp{$}      @samp{;} @samp{$}
 @end example  @end example
   
 @example  @example
   \BJP
 <$BJQ?t@k8@(B>:  <$BJQ?t@k8@(B>:
     [@samp{extern} <$BJQ?t(B> [@samp{,} <$BJQ?t(B>]* <$B=*C<(B>]*      [@samp{extern} <$BJQ?t(B> [@samp{,} <$BJQ?t(B>]* <$B=*C<(B>]*
   \E
   \BEG
   <variable declaration>:
       [@samp{extern} <program variable> [@samp{,} <program variable>]* <terminator>]*
   \E
 @end example  @end example
   
 @example  @example
   \BJP
 <$BJ#J8(B>:  <$BJ#J8(B>:
     @samp{@{} <$BJ8JB$S(B> @samp{@}}      @samp{@{} <$BJ8JB$S(B> @samp{@}}
   \E
   \BEG
   <compound statement>:
       @samp{@{} <stat list> @samp{@}}
   \E
 @end example  @end example
   
 @example  @example
   \BJP
 <$BJ8JB$S(B>:  <$BJ8JB$S(B>:
     [<$BJ8(B>]*      [<$BJ8(B>]*
   \E
   \BEG
   <stat list>:
       [<statement>]*
   \E
 @end example  @end example
   
   \BJP
 @node $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B,,, $BIUO?(B  @node $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B,,, $BIUO?(B
 @section $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B  @section $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B
   \E
   \BEG
   @node Files of user defined functions,,, Appendix
   @section Files of user defined functions
   \E
   
 @noindent  @noindent
   \BJP
 $BI8=`%i%$%V%i%j%G%#%l%/%H%j(B ($B%G%U%)%k%H$G$O(B @samp{/usr/local/lib/asir}) $B$K$O(B  $BI8=`%i%$%V%i%j%G%#%l%/%H%j(B ($B%G%U%)%k%H$G$O(B @samp{/usr/local/lib/asir}) $B$K$O(B
 $B$$$/$D$+$N%f!<%6Dj5AH!?t%U%!%$%k$,$*$+$l$F$$$k(B. $B$3$l$i$N$&$A$N<g$J$b$N$K$D$$$F(B  $B$$$/$D$+$N%f!<%6Dj5AH!?t%U%!%$%k$,$*$+$l$F$$$k(B. $B$3$l$i$N$&$A$N<g$J$b$N$K$D$$$F(B
 $B@bL@$9$k(B.  $B@bL@$9$k(B.
   \E
   \BEG
   There are several files of user defined functions under the standard
   library directory. (@samp{/usr/local/lib/asir} by default.)
   Here, we explain some of them.
   \E
   
 @table @samp  @table @samp
 @item fff  @item fff
 $BBgI8?tAGBN$*$h$SI8?t(B 2 $B$NM-8BBN>e$N0lJQ?tB?9`<00x?tJ,2r(B (@xref{$BM-8BBN$K4X$9$k1i;;(B})  \JP $BBgI8?tAGBN$*$h$SI8?t(B 2 $B$NM-8BBN>e$N0lJQ?tB?9`<00x?tJ,2r(B (@xref{$BM-8BBN$K4X$9$k1i;;(B}.)
   \EG Univariate factorizer over large finite fields (@xref{Finite fields}.)
 @item gr  @item gr
 $B%0%l%V%J4pDl7W;;%Q%C%1!<%8(B.  (@xref{$B%0%l%V%J4pDl$N7W;;(B})  \JP $B%0%l%V%J4pDl7W;;%Q%C%1!<%8(B.  (@xref{$B%0%l%V%J4pDl$N7W;;(B}.)
   \EG Groebner basis package.  (@xref{Groebner basis computation}.)
 @item sp  @item sp
 $BBe?tE*?t$N1i;;$*$h$S0x?tJ,2r(B, $B:G>.J,2rBN(B. (@xref{$BBe?tE*?t$K4X$9$k1i;;(B})  \JP $BBe?tE*?t$N1i;;$*$h$S0x?tJ,2r(B, $B:G>.J,2rBN(B. (@xref{$BBe?tE*?t$K4X$9$k1i;;(B}.)
   \EG Operations over algebraic numbers and factorization, Splitting fields. (@xref{Algebraic numbers}.)
 @item alpi  @item alpi
 @itemx bgk  @itemx bgk
 @itemx cyclic  @itemx cyclic
 @itemx katsura  @itemx katsura
 @itemx kimura  @itemx kimura
 $B%0%l%V%J4pDl7W;;$K$*$$$F(B, $B%Y%s%A%^!<%/$=$NB>$GMQ$$$i$l$kNc(B.  \JP $B%0%l%V%J4pDl7W;;$K$*$$$F(B, $B%Y%s%A%^!<%/$=$NB>$GMQ$$$i$l$kNc(B.
 (@xref{katsura hkatsura cyclic hcyclic})  \EG Example polynomial sets for benchmarks of Groebner basis computation.
   (@xref{katsura hkatsura cyclic hcyclic}.)
 @item defs.h  @item defs.h
 $B$$$/$D$+$N%^%/%mDj5A(B. (@xref{$B%W%j%W%m%;%C%5(B})  \JP $B$$$/$D$+$N%^%/%mDj5A(B. (@xref{$B%W%j%W%m%;%C%5(B}.)
   \EG Macro definitions. (@xref{preprocessor}.)
 @item fctrtest  @item fctrtest
   \BJP
 $B@0?t>e$NB?9`<0$N0x?tJ,2r$N%F%9%H(B. REDUCE $B$N(B @samp{factor.tst} $B$*$h$S(B  $B@0?t>e$NB?9`<0$N0x?tJ,2r$N%F%9%H(B. REDUCE $B$N(B @samp{factor.tst} $B$*$h$S(B
 $B=EJ#EY$NBg$-$$$$$/$D$+$NNc$r4^$`(B. $B$3$l$O(B, @code{load()} $B$9$k$H(B  $B=EJ#EY$NBg$-$$$$$/$D$+$NNc$r4^$`(B. $B$3$l$O(B, @code{load()} $B$9$k$H(B
 $BD>$A$K7W;;$,;O$^$k(B. $BF~<j$7$?(B @b{Asir} $B$,@5$7$/F0:n$7$F$$$k$+$N(B  $BD>$A$K7W;;$,;O$^$k(B. $BF~<j$7$?(B @b{Asir} $B$,@5$7$/F0:n$7$F$$$k$+$N(B
 $B%F%9%H$K$b;H$&$3$H$,$G$-$k(B.  $B%F%9%H$K$b;H$&$3$H$,$G$-$k(B.
   \E
   \BEG
   Test program of factorization of integral polynomials.
   It includes  @samp{factor.tst} of REDUCE and several examples
   for large multiplicity factors.  If this file is @code{load()}'ed,
   computation will begin immediately.
   You may use it as a first test whether @b{Asir} at you hand runs
   correctly.
   \E
 @item fctrdata  @item fctrdata
   \BJP
 @samp{fctrtest} $B$G;H$o$l$F$$$kNc$r4^$`(B, $B0x?tJ,2r%F%9%HMQ$NNc(B.  @samp{fctrtest} $B$G;H$o$l$F$$$kNc$r4^$`(B, $B0x?tJ,2r%F%9%HMQ$NNc(B.
 @code{Alg[]} $B$K<}$a$i$l$F$$$kNc$O(B, @code{af()} (@xref{asq af}) $BMQ$NNc$G$"$k(B.  @code{Alg[]} $B$K<}$a$i$l$F$$$kNc$O(B, @code{af()} (@ref{asq af af_noalg}) $BMQ$NNc$G$"$k(B.
   \E
   \BEG
   This contains example polynomials for factorization.  It includes
   polynomials used in @samp{fctrtest}.
   Polynomials contained in vector @code{Alg[]} is for the algebraic
   factorization @code{af()}. (@xref{asq af af_noalg}.)
   \E
 @example  @example
 [45] load("sp")$  [45] load("sp")$
 [84] load("fctrdata")$  [84] load("fctrdata")$
Line 204  x^9-15*x^6-87*x^3-125
Line 447  x^9-15*x^6-87*x^3-125
 3.600sec + gc : 1.040sec  3.600sec + gc : 1.040sec
 @end example  @end example
 @item ifplot  @item ifplot
 $BIA2h(B (@xref{ifplot conplot plot plotover}) $B$N$?$a$NNc(B. @code{IS[]} $B$K$OM-L>$J(B  \BJP
   $BIA2h(B (@ref{ifplot conplot plot plotover}) $B$N$?$a$NNc(B. @code{IS[]} $B$K$OM-L>$J(B
 $B6J@~$NNc(B, $BJQ?t(B @code{H, D, C, S} $B$K$O%H%i%s%W$N%O!<%H(B, $B%@%$%d(B, $B%/%i%V(B,  $B6J@~$NNc(B, $BJQ?t(B @code{H, D, C, S} $B$K$O%H%i%s%W$N%O!<%H(B, $B%@%$%d(B, $B%/%i%V(B,
 $B%9%Z!<%I(B ($B$i$7$-(B) $B6J@~$NNc$,F~$C$F$$$k(B.  $B%9%Z!<%I(B ($B$i$7$-(B) $B6J@~$NNc$,F~$C$F$$$k(B.
   \E
   \BEG
   Examples for plotting. (@xref{ifplot conplot plot plotover}.)
   Vector @code{IS[]} contains several famous algebraic curves.
   Variables @code{H, D, C, S} contains something like the suits
   (Heart, Diamond, Club, and Spade) of cards.
   \E
 @item num  @item num
 $B?t$K4X$9$k4JC1$J1i;;H!?t$NNc(B.  \JP $B?t$K4X$9$k4JC1$J1i;;H!?t$NNc(B.
   \EG Examples of simple operations on numbers.
 @item mat  @item mat
 $B9TNs$K4X$9$k4JC1$J1i;;H!?t$NNc(B.  \JP $B9TNs$K4X$9$k4JC1$J1i;;H!?t$NNc(B.
   \EG Examples of simple operations on matrices.
 @item ratint  @item ratint
   \BJP
 $BM-M}H!?t$NITDj@QJ,(B. @samp{sp}, @samp{gr} $B$,I,MW(B. @code{ratint()} $B$H$$$&(B  $BM-M}H!?t$NITDj@QJ,(B. @samp{sp}, @samp{gr} $B$,I,MW(B. @code{ratint()} $B$H$$$&(B
 $BH!?t$,Dj5A$5$l$F$$$k$,(B, $B$=$NJV$97k2L$O$d$dJ#;($G$"$k(B. $BNc$G@bL@$9$k(B.  $BH!?t$,Dj5A$5$l$F$$$k$,(B, $B$=$NJV$97k2L$O$d$dJ#;($G$"$k(B. $BNc$G@bL@$9$k(B.
   \E
   \BEG
   Indefinite integration of rational functions.  For this,
   files @samp{sp} and @samp{gr} is necessary.  A function @code{ratint()}
   is defined.  Its returns a rather complex result.
   \E
 @example  @example
 [0] load("gr")$  [0] load("gr")$
 [45] load("sp")$  [45] load("sp")$
Line 223  x^9-15*x^6-87*x^3-125
Line 483  x^9-15*x^6-87*x^3-125
 [[(#2)*log(-140*x+(-2737*#2^2+552*#2-131)),161*t#2^3-23*t#2^2+15*t#2-1],  [[(#2)*log(-140*x+(-2737*#2^2+552*#2-131)),161*t#2^3-23*t#2^2+15*t#2-1],
 [(#1)*log(-5*x+(-21*#1-4)),21*t#1^2+3*t#1+1]]]  [(#1)*log(-5*x+(-21*#1-4)),21*t#1^2+3*t#1+1]]]
 @end example  @end example
   \BJP
 $B$3$NNc$G$O(B, @code{x^6/(x^5+x+1)} $B$NITDj@QJ,$N7W;;$r9T$C$F$$$k(B.  $B$3$NNc$G$O(B, @code{x^6/(x^5+x+1)} $B$NITDj@QJ,$N7W;;$r9T$C$F$$$k(B.
 $B7k2L$O(B 2 $B$D$NMWAG$+$i$J$k%j%9%H$G(B, $BBh(B 1 $BMWAG$OITDj@QJ,$NM-M}ItJ,(B,  $B7k2L$O(B 2 $B$D$NMWAG$+$i$J$k%j%9%H$G(B, $BBh(B 1 $BMWAG$OITDj@QJ,$NM-M}ItJ,(B,
 $BBh(B 2 $BMWAG$OBP?tItJ,$rI=$9(B. $BBP?tItJ,$O99$K%j%9%H$H$J$C$F$$$F(B, $B3FMWAG$O(B,  $BBh(B 2 $BMWAG$OBP?tItJ,$rI=$9(B. $BBP?tItJ,$O99$K%j%9%H$H$J$C$F$$$F(B, $B3FMWAG$O(B,
Line 232  x^9-15*x^6-87*x^3-125
Line 493  x^9-15*x^6-87*x^3-125
 @code{root} $B$r4^$s$G$$$F(B, @code{root} $B$rF~$lBX$($k>l9g$K$O(B @code{poly}  @code{root} $B$r4^$s$G$$$F(B, @code{root} $B$rF~$lBX$($k>l9g$K$O(B @code{poly}
 $B$KBP$7$F$bF1$8A`:n$r9T$&$b$N$H$9$k(B. $B$3$NA`:n$r(B, $B7k2L$NBh(B 2 $BMWAG$N(B  $B$KBP$7$F$bF1$8A`:n$r9T$&$b$N$H$9$k(B. $B$3$NA`:n$r(B, $B7k2L$NBh(B 2 $BMWAG$N(B
 $B3F@.J,$KBP$7$F9T$C$F(B, $BA4$F$rB-$79g$o$;$?$b$N$,BP?tItJ,$H$J$k(B.  $B3F@.J,$KBP$7$F9T$C$F(B, $BA4$F$rB-$79g$o$;$?$b$N$,BP?tItJ,$H$J$k(B.
   \E
   \BEG
   In this example, indefinite integral of the rational function
    @code{x^6/(x^5+x+1)} is computed.
   The result is a list which comprises two elements:
   The first element is the rational part of the integral;
   The second part is the logarithmic part of the integral.
   The logarithmic part is again a list which comprises finite number of
   elements, each of which is of form @code{[root*log(poly),defpoly]}.
   This pair should be interpreted to sum up
   the expression @code{root*log(poly)}
   through all @b{root}'s @code{root}'s of the @code{defpoly}.
   Here, @code{poly} contains @code{root}, and substitution for @code{root}
   is equally applied to @code{poly}.
   The logarithmic part in total is obtained by applying such
   interpretation to all element pairs in the second element of the
   result and then summing them up all.
   \E
 @item primdec  @item primdec
   \BJP
 $BB?9`<0%$%G%"%k$N=`AG%$%G%"%kJ,2r$H$=$N:,4p$NAG%$%G%"%kJ,2r(B  $BB?9`<0%$%G%"%k$N=`AG%$%G%"%kJ,2r$H$=$N:,4p$NAG%$%G%"%kJ,2r(B
 (@code{[Shimoyama,Yokoyama]} $B;2>H(B).  (@pxref{primadec primedec}).
 $B=`AG%$%G%"%kJ,2r$O(B @code{primadec()}, $BAG%$%G%"%kJ,2r$O(B, @code{primedec()}  \E
 $B$H$$$&4X?t$G(B, $BMQ0U$5$l$F$$$k(B. $B0z?t$O(B, $BB?9`<0%j%9%H$HJQ?t$G$"$k(B.  \BEG
 $BM-M}<078?t$NB?9`<0%$%G%"%k$d(B, 0$B<!85$G$J$$%$%G%"%k$b07$($k(B.  Primary ideal decomposition of polynomial ideals and prime compotision
 @code{primadec} $B$O(B, $B=`AG@.J,$H$=$NAG@.J,$N%Z%"%j%9%H$N%j%9%H$rJV$9(B.  of radicals (@pxref{primadec primedec}).
 @code{primedec} $B$O(B, $BAG@.J,$N%j%9%H$rJV$9(B.  \E
 $B$=$N7k2L$O$$$:$l$b%0%l%V%J4pDl$K$J$C$F$$$k$,(B, $B$=$N(B  
 $BJQ?t=g=x$O(B, $B$=$l$>$lBg0hJQ?t(B @code{PRIMAORD}, @code{PRIMEORD}  
  $B$NCM(B 0,1 $B$"$k$$$O(B 2 $B$K$h$C$F7h$^$k(B.  
 @example  
 [84] load("primdec")$  
 [102] primedec([p*q*x-q^2*y^2+q^2*y,-p^2*x^2+p^2*x+p*q*y,  
 (q^3*y^4-2*q^3*y^3+q^3*y^2)*x-q^3*y^4+q^3*y^3,  
 -q^3*y^4+2*q^3*y^3+(-q^3+p*q^2)*y^2],[p,q,x,y]);  
 [[y,x],[y,p],[x,q],[q,p],[x-1,q],[y-1,p],[(y-1)*x-y,q*y^2-2*q*y-p+q]]  
 [103] primadec([x,z*y,w*y^2,w^2*y-z^3,y^3],[x,y,z,w]);  
 [[[x,z*y,y^2,w^2*y-z^3],[z,y,x]],[[w,x,z*y,z^3,y^3],[w,z,y,x]]]  
 @end example  
 @end table  @end table
   
   \BJP
 @node $BF~NO%$%s%?%U%'!<%9(B,,, $BIUO?(B  @node $BF~NO%$%s%?%U%'!<%9(B,,, $BIUO?(B
 @section $BF~NO%$%s%?%U%'!<%9(B  @section $BF~NO%$%s%?%U%'!<%9(B
   \E
   \BEG
   @node Input interfaces,,, Appendix
   @section Input interfaces
   \E
   
 $B4{$K=R$Y$?$h$&$K(B, DOS $BHG(B, Windows $BHG(B, Macintosh $BHG$G$OF~NO%$%s%?%U%'!<%9$H(B  \BJP
   DOS $BHG(B, Windows $BHG$G$OF~NO%$%s%?%U%'!<%9$H(B
 $B$7$F%3%^%s%I%i%$%sJT=8$*$h$S%R%9%H%jCV$-49$($,AH$_9~$^$l$F$$$k(B. UNIX $BHG$G$O(B  $B$7$F%3%^%s%I%i%$%sJT=8$*$h$S%R%9%H%jCV$-49$($,AH$_9~$^$l$F$$$k(B. UNIX $BHG$G$O(B
 $B$3$N$h$&$J5!G=$OAH$_9~$^$l$F$$$J$$$,(B, $B0J2<$G=R$Y$k$h$&$JF~NO%$%s%?%U%'!<%9(B  $B$3$N$h$&$J5!G=$OAH$_9~$^$l$F$$$J$$$,(B, $B0J2<$G=R$Y$k$h$&$JF~NO%$%s%?%U%'!<%9(B
 $B$,MQ0U$5$l$F$$$k(B. $B$3$l$i$O(B @b{Asir} $B%P%$%J%j$H$H$b$K(B ftp $B2DG=$G$"$k(B.  $B$,MQ0U$5$l$F$$$k(B. $B$3$l$i$O(B @b{Asir} $B%P%$%J%j$H$H$b$K(B ftp $B2DG=$G$"$k(B.
 ftp server $B$K4X$7$F$O(B @xref{$BF~<jJ}K!(B}.  ftp server $B$K4X$7$F$O(B @xref{$BF~<jJ}K!(B}.
   
   Windows $BHG(B @samp{asirgui.exe} $B$O(B, $BDL>o$N(B Windows $B$K$*$1$k47=,$H$O0[$J$k(B
   $B7A$N%3%T!<%Z!<%9%H5!G=$rDs6!$7$F$$$k(B. Window $B>e$KI=<($5$l$F$$$kJ8;zNs(B
   $B$KBP$7%^%&%9:8%\%?%s$r2!$7$J$,$i%I%i%C%0$9$k$HJ8;zNs$,A*Br$5$l$k(B.
   $B%\%?%s$rN%$9$HH?E>I=<($,85$KLa$k$,(B, $B$=$NJ8;zNs$O%3%T!<%P%C%U%!$K(B
   $B<h$j9~$^$l$F$$$k(B. $B%^%&%91&%\%?%s$r2!$9$H(B, $B%3%T!<%P%C%U%!Fb$NJ8;zNs$,(B
   $B8=:_$N%+!<%=%k0LCV$KA^F~$5$l$k(B. $B4{$KI=<($5$l$?ItJ,$O(B readonly
   $B$G$"$j(B, $B$=$NItJ,$r2~JQ$G$-$J$$$3$H$KCm0U$7$FM_$7$$(B.
   \E
   \BEG
   A command line editing facility and a history
   substitution facility are built-in for DOS, Windows version
   of @b{Asir}. UNIX versions of @b{Asir} do not have such built-in facilites.
   Instead, the following input interfaces are prepared. This are also available
   from our ftp server. As for our ftp server @xref{How to get Risa/Asir}.
   
   On Windows, @samp{asirgui.exe} has a copy and paste functionality
   different from Windows convention. Press the left button of the mouse
   and drag the mouse cursor on a text, then the text is selected and is
   highlighted.  When the button is released, highlighted text returns to
   the normal state and it is saved in the copy buffer.  If the right
   button is pressed, the text in the copy buffer is inserted at the
   current text cursor position. Note that the existing text is read-only and
   one cannot modify it.
   \E
   
 @menu  @menu
 * fep::  * fep::
 * asir.el::  * asir.el::
 @end menu  @end menu
   
 @node fep,,, $BF~NO%$%s%?%U%'!<%9(B  \JP @node fep,,, $BF~NO%$%s%?%U%'!<%9(B
   \EG @node fep,,, Input interfaces
 @subsection fep  @subsection fep
   
 @noindent  @noindent
   \BJP
 fep $B$H$O(B, SRA $B$N2NBe;a$K$h$j3+H/$5$l$?%3%^%s%I%i%$%sJT=8(B, $B%R%9%H%jCV$-49$((B  fep $B$H$O(B, SRA $B$N2NBe;a$K$h$j3+H/$5$l$?%3%^%s%I%i%$%sJT=8(B, $B%R%9%H%jCV$-49$((B
 $BMQ$NF~NO%U%m%s%H%(%s%I$G$"$k(B. $B$3$N%W%m%0%i%`$N85$G(B @samp{asir} $B$r5/F0$9$k(B  $BMQ$NF~NO%U%m%s%H%(%s%I$G$"$k(B. $B$3$N%W%m%0%i%`$N85$G(B @samp{asir} $B$r5/F0$9$k(B
 $B$3$H$K$h$j(B vi $B$"$k$$$O(B emacs $BIw$N%3%^%s%I%i%$%sJT=8$*$h$S(B csh $BIw$N%R%9%H%j(B  $B$3$H$K$h$j(B vi $B$"$k$$$O(B emacs $BIw$N%3%^%s%I%i%$%sJT=8$*$h$S(B csh $BIw$N%R%9%H%j(B
 $BCV$-49$($,2DG=$K$J$k(B.  $BCV$-49$($,2DG=$K$J$k(B.
   \E
   \BEG
   Fep is a general purpose front end processor. The author is
   K. Utashiro (SRA Inc.).
   
   Under fep,
   emacs- or vi-like command line editing and csh-like history substitution are
   available for UNIX commands, including @samp{asir}.
   \E
 @example  @example
 % fep asir  % fep asir
 ...  ...
 [0] fctr(x^5-1);  [0] fctr(x^5-1);
 [[1,1],[x-1,1],[x^4+x^3+x^2+x+1,1]]  [[1,1],[x-1,1],[x^4+x^3+x^2+x+1,1]]
 [1] !!                              /* !!+Return                      */  [1] !!                              /* !!+Return                      */
   \BJP
 fctr(x^5-1);                        /* $BD>A0$NF~NO$,8=$l$k$FJT=8$G$-$k(B */  fctr(x^5-1);                        /* $BD>A0$NF~NO$,8=$l$k$FJT=8$G$-$k(B */
 ...                                 /* $BJT=8(B+Return                    */  ...                                 /* $BJT=8(B+Return                    */
   \E
   \BEG
   fctr(x^5-1);                        /* The last input appears.        */
   ...                                 /* Edit+Return                    */
   \E
 fctr(x^5+1);  fctr(x^5+1);
 [[1,1],[x+1,1],[x^4-x^3+x^2-x+1,1]]  [[1,1],[x+1,1],[x^4-x^3+x^2-x+1,1]]
 @end example  @end example
   
 @noindent  @noindent
   \BJP
 fep $B$O%U%j!<%=%U%H$G%=!<%9$,F~<j2DG=$G$"$k$,(B, $B%*%j%8%J%k$N$b$N$O(B make $B$G$-$k(B  fep $B$O%U%j!<%=%U%H$G%=!<%9$,F~<j2DG=$G$"$k$,(B, $B%*%j%8%J%k$N$b$N$O(B make $B$G$-$k(B
 $B5!<o(B (OS) $B$,8B$i$l$F$$$k(B. $B$$$/$D$+$N5!<o>e$GF0:n$9$k$h$&$K2f!9$,2~B$$7$?$b$N(B  $B5!<o(B (OS) $B$,8B$i$l$F$$$k(B. $B$$$/$D$+$N5!<o>e$GF0:n$9$k$h$&$K2f!9$,2~B$$7$?$b$N(B
 $B$,(B, ftp $B$GF~<j2DG=$G$"$k(B.  $B$,(B, ftp $B$GF~<j2DG=$G$"$k(B.
   \E
   \BEG
   Fep is a free software and the source is available. However
   machines or operating systems on which the original one can run are limited.
   The modified version by us running on several unsupported environments
   is available from our ftp server.
   \E
   
 @node asir.el,,, $BF~NO%$%s%?%U%'!<%9(B  \JP @node asir.el,,, $BF~NO%$%s%?%U%'!<%9(B
   \EG @node asir.el,,, Input interfaces
 @subsection asir.el  @subsection asir.el
   
 @noindent  @noindent
   \BJP
 @samp{asir.el} $B$O(B, @b{Asir} $B$N(B GNU Emacs $B%$%s%?%U%'!<%9$G$"$k(B ($BCx<T$O(B  @samp{asir.el} $B$O(B, @b{Asir} $B$N(B GNU Emacs $B%$%s%?%U%'!<%9$G$"$k(B ($BCx<T$O(B
 $B5\Eh8w<#;a(B (@code{YVE25250@@pcvan.or.jp}).  @samp{asir.el} $B$K$*$$$F$O(B,  $B5\Eh8w<#;a(B (@code{YVE25250@@pcvan.or.jp}).  @samp{asir.el} $B$K$*$$$F$O(B,
 $BDL>o$N(B emacs $B$G2DG=$JJT=85!G=$NB>$K(B, $B%U%!%$%kL>(B, $B%3%^%s%IL>$N(B completion  $BDL>o$N(B emacs $B$G2DG=$JJT=85!G=$NB>$K(B, $B%U%!%$%kL>(B, $B%3%^%s%IL>$N(B completion
 $B$,<B8=$5$l$F$$$k(B.  $B$,<B8=$5$l$F$$$k(B.
   \E
   \BEG
   @samp{asir.el} is a GNU Emacs interface for @b{Asir}.
   The author is Koji Miyajima (@code{YVE25250@@pcvan.or.jp}).
   In @samp{asir.el}, completion of file names and command names is
   realized other than the ordinary editing functions
   which are available on Emacs.
   \E
   
 @noindent  @noindent
   \BJP
 @samp{asir.el} $B$O(B PC-VAN $B$G(B  @samp{asir.el} $B$O(B PC-VAN $B$G(B
 $B4{$K8x3+$5$l$F$$$k$,(B, $B:#2s$N2~D{$KH<$&JQ99$r9T$C$?$b$N$,(B, $B$d$O$j(B ftp $B$G(B  $B4{$K8x3+$5$l$F$$$k$,(B, $B:#2s$N2~D{$KH<$&JQ99$r9T$C$?$b$N$,(B, $B$d$O$j(B ftp $B$G(B
 $BF~<j2DG=$G$"$k(B.  $BF~<j2DG=$G$"$k(B.
   \E
   \BEG
   @samp{asir.el} is distributed on PC-VAN. The version where several
   changes have been made according to the current version of @b{Asir}
   is available via ftp.
   \E
   
 @noindent  @noindent
 $B%;%C%H%"%C%W(B, $B;HMQJ}K!$O(B, @samp{asir.el} $B$N@hF,$K5-=R$5$l$F$$$k(B.  \JP $B%;%C%H%"%C%W(B, $B;HMQJ}K!$O(B, @samp{asir.el} $B$N@hF,$K5-=R$5$l$F$$$k(B.
   \BEG
   The way of setting up and the usage can be found at the top of
   @samp{asir.el}.
   \E
   
   \BJP
   @node $B%i%$%V%i%j%$%s%?%U%'!<%9(B,,, $BIUO?(B
   @section $B%i%$%V%i%j%$%s%?%U%'!<%9(B
   \E
   \BEG
   @node Library interfaces,,, Appendix
   @section Library interfaces
   \E
   
   \BJP
   @b{Asir} $B$NDs6!$9$k5!G=$rB>$N%W%m%0%i%`$+$i;HMQ$9$kJ}K!$H$7$F(B, @b{OpenXM} $B$K$h$k(B
   $BB>$K(B, $B%i%$%V%i%j$ND>@\%j%s%/$K$h$kJ}K!$,2DG=$G$"$k(B. $B%i%$%V%i%j$O(B,
   GC $B%i%$%V%i%j$G$"$k(B @samp{libasir-gc.a} $B$H$H$b$K(B @b{OpenXM}
   distribution (@code{http://www.math.kobe-u.ac.jp/OpenXM}) $B$K4^$^$l$k(B.
   $B8=>u$G$O(B@b{OpenXM} $B%$%s%?%U%'!<%9$N$_$,8x3+$5$l$F$$$k$?$a(B, $B0J2<$G$O(B
   @b{OpenXM} $B$,%$%s%9%H!<%k$5$l$F$$$k$H2>Dj$9$k(B. @b{OpenXM} root $B%G%#%l%/%H%j$r(B
   @code{$OpenXM_HOME}$B$H=q$/(B. $B%i%$%V%i%j%U%!%$%k$OA4$F(B @samp{$OpenXM_HOME/lib}
   $B$K$*$+$l$F$$$k(B. $B%i%$%V%i%j$K$O0J2<$N(B 3 $B<oN`$,$"$k(B.
   \E
   \BEG
   It is possible to link an @b{Asir} library to use the functionalities of
   @b{Asir} from other programs.
   The necessary libraries are included in the @b{OpenXM} distribution
   @ifhtml
   (<A HREF="http://www.math.kobe-u.ac.jp/OpenXM">OpenXM </A>)
   @end ifhtml
   (@code{http://www.math.kobe-u.ac.jp/OpenXM}).
   At present only the @b{OpenXM} interfaces are available. Here we assume
   that @b{OpenXM} is already installed. In the following
   @code{$OpenXM_HOME} denotes the @b{OpenXM} root directory.
   All the library files are placed in @samp{$OpenXM_HOME/lib}.
   There are three kinds of libraries as follows.
   \E
   @itemize @bullet
   @item @samp{libasir.a}
   @*
   \BJP
   @b{PARI}, @b{X11} $B4XO"$N5!G=$r4^$^$J$$(B.
   $B%j%s%/$K$O(B @samp{libasir-gc.a} $B$N$_$,I,MW(B.
   \E
   \BEG
   It does not contain the functionalities related to @b{PARI} and @b{X11}.
   Only @samp{libasir-gc.a} is necessary for linking.
   \E
   
   @item @samp{libasir_pari.a}
   @*
   \BJP
   @b{X11} $B4XO"$N5!G=$r4^$^$J$$(B. $B%j%s%/$K$O(B @samp{libasir-gc.a},
   @samp{libpari.a} $B$,I,MW(B.
   \E
   \BEG
   It does not contain the functionalities related to @b{X11}.
   @samp{libasir-gc.a}, @samp{libpari.a} are necessary for linking.
   \E
   
   @item @samp{libasir_pari_X.a}
   @*
   \BJP
   $BA4$F$N5!G=$r4^$`(B. $B%j%s%/$K$O(B @samp{libasir-gc.a}, @samp{libpari.a}
   $B$*$h$S(B @b{X11} $B4XO"$N%i%$%V%i%j;XDj$,I,MW(B.
   \E
   \BEG
   All the functionalities are included. @samp{libasir-gc.a}, @samp{libpari.a}
   and libraries related to @b{X11} are necessary for linking.
   \E
   @end itemize
   \BJP
   $BDs6!$5$l$F$$$k4X?t$O0J2<$NDL$j$G$"$k(B.
   \E
   @itemize @bullet
   @item @code{int asir_ox_init(int @var{byteorder})}
   @*
   \BJP
   $B%i%$%V%i%j$N=i4|2=(B. @var{byteorder} $B$O%a%b%j>e$X$N%P%$%J%j(B CMO $B%G!<%?(B
   $B$X$NE83+J}K!$r;XDj$9$k(B. @var{byteorder} $B$,(B 0 $B$N$H$-%^%7%s8GM-$N(B byteorder
   $B$rMQ$$$k(B. 1 $B$N$H$-(B network byteorder $B$rMQ$$$k(B. $B=i4|2=$K@.8y$7$?>l9g(B 0,
   $B<:GT$N;~(B -1 $B$rJV$9(B.
   \E
   \BEG
   It initializes the library.
   @var{byteorder} specifies the format of binary CMO data on the memory.
   If @var{byteorder} is 0, the byteorder native to the machine is used.
   If @var{byteorder} is 1, the network byteorder is used. It returns
   0 if the initialization is successful, -1 otherwise.
   \E
   
   @item @code{void asir_ox_push_cmo(void *@var{cmo})}
   @*
   \BJP
   $B%a%b%j>e$KCV$+$l$?(B CMO $B%G!<%?$r(B @b{Asir} $B$NFbIt7A<0$KJQ49$7$F%9%?%C%/$K(B
   push $B$9$k(B.
   \E
   \BJP
   It converts CMO data pointed by @var{cmo} into an @b{Asir} object and
   it pushes the object onto the stack.
   \E
   
   @item @code{int asir_ox_peek_cmo_size()}
   @*
   \BJP
   $B%9%?%C%/$N:G>e0L$K$"$k(B @b{Asir} $B%G!<%?$r(B CMO $B$KJQ49$7$?$H$-$N%5%$%:$rJV$9(B.
   $BJQ49ITG=$J>l9g$K$O(B -1 $B$rJV$9(B.
   \E
   \BEG
   It returns the size of the object at the top of the stack as CMO object.
   It returns -1 if the object cannot be converted into CMO object.
   \E
   
   @item @code{int asir_ox_pop_cmo(void *@var{cmo}, int @var{limit})}
   @*
   \BJP
   $B%9%?%C%/$N:G>e0L$K$"$k(B @b{Asir} $B%G!<%?$r(B pop $B$7(B, CMO $B$KJQ49$7$F(B @var{cmo}$B$G(B
   $B;X$5$l$kG[Ns$K=q$-(B, CMO $B$N%5%$%:$rJV$9(B. $B$3$N$H$-(B, CMO $B$N%5%$%:$,(B
   @var{limit} $B$h$jBg$-$$>l9g$K$O(B -1 $B$rJV$9(B. @var{cmo} $B$OD9$5$,>/$J$/$H$b(B
   @var{limit}$B%P%$%H$NG[Ns$r;X$9I,MW$,$"$k(B. $BJQ49$5$l$?(B CMO $B$r<}MF$G$-$k(B
   $BG[Ns$ND9$5$rCN$k$?$a$K(B, @code{asir_ox_peek_cmo_size} $B$rMQ$$$k(B.
   \E
   \BEG
   It pops an @b{Asir} object at the top of the stack and it converts
   the object into CMO data. If the size of the CMO data is not greater
   than @var{limit}, then the data is written in @var{cmo} and the size
   is returned. Otherwise -1 is returned. The size of the array pointed
   by @var{cmo} must be at least @var{limit}. In order to know the size
   of converted CMO data in advance @code{asir_ox_peek_cmo_size} is called.
   \E
   
   @item @code{void asir_ox_push_cmd(int @var{cmd})}
   @*
   \BJP
   $B%9%?%C%/%^%7%s%3%^%s%I(B @var{cmd} $B$r<B9T$9$k(B.
   \E
   \BEG
   It executes a stack machine command @var{cmd}.
   \E
   
   @item @code{void asir_ox_execute_string(char *@var{str})}
   @*
   \BJP
   @b{Asir} $B$,<B9T2DG=$JJ8;zNs(B @var{str} $B$r<B9T$7(B, $B$=$N7k2L$r%9%?%C%/$K(B push $B$9$k(B.
   \E
   \BEG
   It evaluates @var{str} as a string written in the @b{Asir} user language.
   The result is pushed onto the stack.
   \E
   @end itemize
   
   \BJP
   include $B$9$Y$-(B header file $B$O(B @samp{$OpenXM_HOME/include/asir/ox.h} $B$G$"$k(B.
   $B$3$N(B header file $B$K$O(B, @b{OpenXM} $B$K4X$9$kA4$F$N(B tag, command $B$NDj5A$,4^$^$l$F(B
   $B$$$k(B.
   $B<!$NNc(B (@samp{$OpenXM_HOME/doc/oxlib/test3.c}) $B$O>e5-4X?t$N;HMQ(B
   $BK!$r<($9(B.
   \E
   \BEG
   A program calling the above functions should include
   @samp{$OpenXM_HOME/include/asir/ox.h}.
   In this file all the definitions of @b{OpenXM} tags and commands.
   The following example
   (@samp{$OpenXM_HOME/doc/oxlib/test3.c}) illustrates the usage of
   the above functions.
   \E
   
   @example
   #include <asir/ox.h>
   #include <signal.h>
   
   main(int argc, char **argv)
   @{
     char buf[BUFSIZ+1];
     int c;
     unsigned char sendbuf[BUFSIZ+10];
     unsigned char *result;
     unsigned char h[3];
     int len,i,j;
     static int result_len = 0;
     char *kwd,*bdy;
     unsigned int cmd;
   
     signal(SIGINT,SIG_IGN);
     asir_ox_init(1); /* 1: network byte order; 0: native byte order */
     result_len = BUFSIZ;
     result = (void *)malloc(BUFSIZ);
     while ( 1 ) @{
       printf("Input>"); fflush(stdout);
       fgets(buf,BUFSIZ,stdin);
       for ( i = 0; buf[i] && isspace(buf[i]); i++ );
       if ( !buf[i] )
         continue;
       kwd = buf+i;
       for ( ; buf[i] && !isspace(buf[i]); i++ );
       buf[i] = 0;
       bdy = buf+i+1;
       if ( !strcmp(kwd,"asir") ) @{
         sprintf(sendbuf,"%s;",bdy);
         asir_ox_execute_string(sendbuf);
       @} else if ( !strcmp(kwd,"push") ) @{
         h[0] = 0;
         h[2] = 0;
         j = 0;
         while ( 1 ) @{
           for ( ; (c= *bdy) && isspace(c); bdy++ );
           if ( !c )
             break;
           else if ( h[0] ) @{
             h[1] = c;
             sendbuf[j++] = strtoul(h,0,16);
             h[0] = 0;
           @} else
             h[0] = c;
           bdy++;
         @}
         if ( h[0] )
           fprintf(stderr,"Number of characters is odd.\n");
         else @{
           sendbuf[j] = 0;
           asir_ox_push_cmo(sendbuf);
         @}
       @} else if ( !strcmp(kwd,"cmd") ) @{
         cmd = atoi(bdy);
         asir_ox_push_cmd(cmd);
       @} else if ( !strcmp(kwd,"pop") ) @{
         len = asir_ox_peek_cmo_size();
         if ( !len )
           continue;
         if ( len > result_len ) @{
           result = (char *)realloc(result,len);
           result_len = len;
         @}
         asir_ox_pop_cmo(result,len);
         printf("Output>"); fflush(stdout);
         printf("\n");
         for ( i = 0; i < len; ) @{
           printf("%02x ",result[i]);
           i++;
           if ( !(i%16) )
             printf("\n");
         @}
         printf("\n");
       @}
     @}
   @}
   @end example
   \BJP
   $B$3$N%W%m%0%i%`$O(B, @var{keyword} @var{body} $B$J$k(B 1 $B9T$rF~NO$H$7$F<u$1<h$j(B
   @var{keyword} $B$K1~$8$F<!$N$h$&$JF0:n$r9T$&(B.
   \E
   \BEG
   This program receives a line in the form of @var{keyword} @var{body}
   as an input and it executes the following operations according to
   @var{keyword}.
   \E
   @itemize @bullet
   @item @code{asir} @var{body}
   @*
   \BJP
   @var{body} $B$r(B @b{Asir} $B8@8l$G=q$+$l$?<0$H$_$J$7(B, $B<B9T7k2L$r%9%?%C%/$K(B push $B$9$k(B.
   @code{asir_ox_execute_string()} $B$,MQ$$$i$l$k(B.
   \E
   \BEG
   @var{body} is regarded as an expression written in the @b{Asir} user language.
   The expression is evaluated and the result is pushed onto the stack.
   @code{asir_ox_execute_string()} is called.
   \E
   
   @item @code{push} @var{body}
   @*
   \BJP
   @var{body} $B$r(B 16 $B?J?t$GI=<($5$l$?(B CMO $B%G!<%?$H$_$J$7(B, @b{Asir} $B%*%V%8%'%/%H$KJQ49(B
   $B$7$F%9%?%C%/$K(B push $B$9$k(B. @code{asir_ox_push_cmo()} $B$,MQ$$$i$l$k(B.
   \E
   \BEG
   @var{body} is regarded as a CMO object in the hexadecimal form.
   The CMO object is converted into an @b{Asir} object and is pushed onto the stack.
   @code{asir_ox_push_cmo()} is called.
   \E
   
   @item @code{pop}
   @*
   \BJP
   $B%9%?%C%/:G>e0L$N%*%V%8%'%/%H$r(B CMO $B$KJQ49$7(B, 16 $B?J?t$GI=<($9$k(B.
   @code{asir_ox_peek_cmo_size()} $B$*$h$S(B @code{asir_ox_pop_cmo()} $B$,MQ$$$i$l$k(B.
   \E
   \BEG
   The object at the top of the stack is converted into a CMO object
   and it is displayed in the hexadecimal form.
   @code{asir_ox_peek_cmo_size()} and @code{asir_ox_pop_cmo()} are called.
   \E
   
   @item @code{cmd} @var{body}
   @*
   \BJP
   @var{body} $B$r(B SM $B%3%^%s%I$H$_$J$7(B, $B<B9T$9$k(B.
   @code{asir_ox_push_cmd()} $B$,MQ$$$i$l$k(B.
   \E
   \BEG
   @var{body} is regarded as an SM command and the command is executed.
   @code{asir_ox_push_cmd()} is called.
   \E
   @end itemize
   
   \BJP
 @node $BJQ99E@(B,,, $BIUO?(B  @node $BJQ99E@(B,,, $BIUO?(B
 @section $BJQ99E@(B  @section $BJQ99E@(B
   \E
   \BEG
   @node Changes,,, Appendix
   @section Appendix
   \E
   
 @menu  @menu
 * Version 990831::  * Version 990831::
Line 320  fep $B$O%U%j!<%=%U%H$G%=!<%9$,F~<j2DG=$G$"$k$,(B, $
Line 972  fep $B$O%U%j!<%=%U%H$G%=!<%9$,F~<j2DG=$G$"$k$,(B, $
 * Version 940420::  * Version 940420::
 @end menu  @end menu
   
 @node Version 990831,,, $BJQ99E@(B  \JP @node Version 990831,,, $BJQ99E@(B
   \EG @node Version 990831,,, Changes
 @subsection Version 990831  @subsection Version 990831
   
   \BJP
 4 $BG/$V$j$NBg2~D{(B. $B@0?t$N(B 32bit $B2=B>(B, $BCf?H$O$:$$$V$sJQ$o$C$F$$$k$b$N$N(B,  4 $BG/$V$j$NBg2~D{(B. $B@0?t$N(B 32bit $B2=B>(B, $BCf?H$O$:$$$V$sJQ$o$C$F$$$k$b$N$N(B,
 $B8+3]$1$O$=$l$[$IJQ$o$C$F$$$k$h$&$K$O8+$($J$$(B. $B$`$7$m(B, Windows $BHG$J$I$O(B,  $B8+3]$1$O$=$l$[$IJQ$o$C$F$$$k$h$&$K$O8+$($J$$(B. $B$`$7$m(B, Windows $BHG$J$I$O(B,
 plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B.  plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B.
   
 $B5lHG$N%f!<%6$,$b$C$H$bCm0U$9$Y$-E@$O(B, $B5lHG$G:n$C$?(B bsave file $B$rFI$_9~$`(B  $B5lHG$N%f!<%6$,$b$C$H$bCm0U$9$Y$-E@$O(B, $B5lHG$G:n$C$?(B bsave file $B$rFI$_9~$`(B
 $B>l9g$O(B @code{bload27} $B$r;H$&I,MW$,$"$k(B, $B$H$$$&E@$G$"$k(B.  $B>l9g$O(B @code{bload27} $B$r;H$&I,MW$,$"$k(B, $B$H$$$&E@$G$"$k(B.
   \E
   
 @node Version 950831,,, $BJQ99E@(B  \BEG
   Four years have passed since the last distribution.
   Though the look and feel seem unchanged, internally there are
   several changes such as 32-bit representation of bignums.
   Plotting facilities are not available on Windows.
   
   If you have files created by @code{bsave} on the older version,
   you have to use @code{bload27} to read such files.
   \E
   
   \JP @node Version 950831,,, $BJQ99E@(B
   \EG @node Version 950831,,, Changes
 @subsection Version 950831  @subsection Version 950831
   
 @menu  @menu
   \BJP
 * $B%G%P%C%,(B($BJQ99(B)::  * $B%G%P%C%,(B($BJQ99(B)::
 * $BAH$_9~$_H!?t(B($BJQ99(B)::  * $BAH$_9~$_H!?t(B($BJQ99(B)::
 * $B%0%l%V%J4pDl(B($BJQ99(B)::  * $B%0%l%V%J4pDl(B($BJQ99(B)::
 * $B$=$NB>(B($BJQ99(B)::  * $B$=$NB>(B($BJQ99(B)::
   \E
   \BEG
   * Debugger(Changes)::
   * Built-in functions(Changes)::
   * Groebner basis computation(Changes)::
   * Others(Changes)::
   \E
 @end menu  @end menu
   
   \BJP
 @node $B%G%P%C%,(B($BJQ99(B),,, Version 950831  @node $B%G%P%C%,(B($BJQ99(B),,, Version 950831
 @subsubsection $B%G%P%C%,(B  @subsubsection $B%G%P%C%,(B
   \E
   \BEG
   @node Debugger(Changes),,, Version 950831
   @subsubsection Debugger
   \E
   
 @itemize @bullet  @itemize @bullet
 @item  @item
 $BG$0U$N;~E@$K%G%P%C%0%b!<%I$KF~$l$k(B.  \JP $BG$0U$N;~E@$K%G%P%C%0%b!<%I$KF~$l$k(B.
   \EG One can enter the debug mode anytime.
 @item  @item
 @code{finish} $B%3%^%s%I$NDI2C(B.  \JP @code{finish} $B%3%^%s%I$NDI2C(B.
   \EG A command @code{finish} has been appended.
 @item  @item
   \BJP
 @code{up}, @code{down}, @code{frame} $B%3%^%s%I$K$h$k(B, $BG$0U$N%9%?%C%/%U%l!<%`(B  @code{up}, @code{down}, @code{frame} $B%3%^%s%I$K$h$k(B, $BG$0U$N%9%?%C%/%U%l!<%`(B
 $B$N;2>H(B.  $B$N;2>H(B.
   \E
   \EG One can examine any stack frame with @code{up}, @code{down} and @code{frame}.
 @item  @item
 @code{trace} $B%3%^%s%I$NDI2C(B.  \JP @code{trace} $B%3%^%s%I$NDI2C(B.
   \EG A command @code{trace} has been appended.
 @end itemize  @end itemize
   
   \BJP
 @node $BAH$_9~$_H!?t(B($BJQ99(B),,, Version 950831  @node $BAH$_9~$_H!?t(B($BJQ99(B),,, Version 950831
 @subsubsection $BAH$_9~$_H!?t(B  @subsubsection $BAH$_9~$_H!?t(B
   \E
   \BEG
   @node Built-in functions(Changes),,, Version 950831
   @subsubsection Built-in functions
   \E
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 @code{sdiv()} $B$J$I$K$*$1$k(B, $B<gJQ?t$N;XDj$N%5%]!<%H(B.  @code{sdiv()} $B$J$I$K$*$1$k(B, $B<gJQ?t$N;XDj$N%5%]!<%H(B.
 @item  @item
Line 369  plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B. 
Line 1062  plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B. 
 @code{vtol()} ($B%Y%/%H%k$+$i%j%9%H$X$NJQ49(B) $B$NDI2C(B.  @code{vtol()} ($B%Y%/%H%k$+$i%j%9%H$X$NJQ49(B) $B$NDI2C(B.
 @item  @item
 @code{map()} $B$NDI2C(B.  @code{map()} $B$NDI2C(B.
   \E
   \BEG
   @item
   One can specify a main variable for @code{sdiv()} etc.
   @item
   Functions for polynomial division over finite fields
   such as @code{sdivm()} have been appended.
   @item
   @code{det()}, @code{res()} can produce results over finite fields.
   @item
   @code{vtol()}, conversion from a vector to a list has been appended.
   @item
   @code{map()} has been appended.
   \E
 @end itemize  @end itemize
   
   \BJP
 @node $B%0%l%V%J4pDl(B($BJQ99(B),,, Version 950831  @node $B%0%l%V%J4pDl(B($BJQ99(B),,, Version 950831
 @subsubsection $B%0%l%V%J4pDl(B  @subsubsection $B%0%l%V%J4pDl(B
   \E
   \BEG
   @node Groebner basis computation(Changes),,, Version 950831
   @subsubsection Groebner basis computation
   \E
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $B%0%l%V%J4pDl7W;;5!G=$NAH$_9~$_H!?t2=(B.  $B%0%l%V%J4pDl7W;;5!G=$NAH$_9~$_H!?t2=(B.
 @item  @item
Line 389  plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B. 
Line 1103  plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B. 
 $B4pDlJQ49$K$h$k<-=q<0=g=x%0%l%V%J4pDl7W;;$N%5%]!<%H(B.  $B4pDlJQ49$K$h$k<-=q<0=g=x%0%l%V%J4pDl7W;;$N%5%]!<%H(B.
 @item  @item
 $B$$$/$D$+$N?7$7$$AH$_9~$_H!?t$NDs6!(B.  $B$$$/$D$+$N?7$7$$AH$_9~$_H!?t$NDs6!(B.
   \E
   \BEG
   @item Functions for Groebner basis computation have been implemented
   as built-in functions.
   @item
   @code{grm()} and @code{hgrm()} have been changed to @code{gr()} and
   @code{hgr()} respectively.
   @item
   @code{gr()} and @code{hgr()} requires explicit specification of
   an ordering type.
   @item
   Extension of specification of a term ordering type.
   @item
   Groebner basis computations over finite fields.
   @item
   Lex order Groebner basis computation via a modular change of ordering algorithm.
   @item
   Several new built-in functions.
   \E
 @end itemize  @end itemize
   
   \BJP
 @node $B$=$NB>(B($BJQ99(B),,, Version 950831  @node $B$=$NB>(B($BJQ99(B),,, Version 950831
 @subsubsection $B$=$NB>(B  @subsubsection $B$=$NB>(B
   \E
   \BEG
   @node Others(Changes),,, Version 950831
   @subsubsection Others
   \E
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $BJ,;67W;;MQ%D!<%k(B, $BH!?t$NDI2C(B.  $BJ,;67W;;MQ%D!<%k(B, $BH!?t$NDI2C(B.
 @item  @item
Line 403  plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B. 
Line 1143  plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B. 
 $B%$%G%"%k$N=`AGJ,2r$N%5%]!<%H(B.  $B%$%G%"%k$N=`AGJ,2r$N%5%]!<%H(B.
 @item  @item
 Windows $B$X$N0\?"(B.  Windows $B$X$N0\?"(B.
   \E
   \BEG
   @item
   Implementation of tools for distributed computation.
   @item
   Application of modular computation for GCD computation over algebraic number
   fields.
   @item
   Implementation of primary decompostion of ideals.
   @item
   Porting to Windows.
   \E
 @end itemize  @end itemize
   
 @node Version 940420,,, $BJQ99E@(B  \JP @node Version 940420,,, $BJQ99E@(B
   \EG @node Version 940420,,, Changes
 @subsection Version 940420  @subsection Version 940420
   
 @noindent  @noindent
 $B:G=i$N8x3+HG(B.  \JP $B:G=i$N8x3+HG(B.
   \EG The first public verion.
   
   \BJP
 @node $BJ88%(B,,, $BIUO?(B  @node $BJ88%(B,,, $BIUO?(B
 @section $BJ88%(B  @section $BJ88%(B
   \E
   \BEG
   @node References,,, Appendix
   @section References
   \E
 @table @code  @table @code
 @item [Batut et al.]  @item [Batut et al.]
 Batut, C., Bernardi, D., Cohen, H., Olivier, M., "User's Guide to PARI-GP",  Batut, C., Bernardi, D., Cohen, H., Olivier, M., "User's Guide to PARI-GP",
Line 434  Proc. ISSAC'91, 49-54.
Line 1194  Proc. ISSAC'91, 49-54.
 Noro, M., Takeshima, T., "Risa/Asir -- A Computer Algebra System",  Noro, M., Takeshima, T., "Risa/Asir -- A Computer Algebra System",
 Proc. ISSAC'92, 387-396.  Proc. ISSAC'92, 387-396.
 @item [Noro,Yokoyama]  @item [Noro,Yokoyama]
 Noro, M., Yokoyama, K., "New methods for the change-of-ordering in Groebner  Noro, M., Yokoyama, K., "A Modular Method to Compute the Rational Univariate
 basis computation", ISIS Research Report ISIS-RR-95-8E, 1995.  Representation of Zero-Dimensional Ideals",
   J. Symb. Comp. 28/1 (1999), 243-263.
 @item [Shimoyama,Yokoyama]  @item [Shimoyama,Yokoyama]
 Shimoyama, T., Yokoyama, K.,  Shimoyama, T., Yokoyama, K.,
 "Localization and primary decomposition of polynomial ideals",  "Localization and primary decomposition of polynomial ideals",
 to appear in J. Symb. Comp.  J. Symb. Comp. 22 (1996), 247-277.
   @item [Shoup]
   Shoup, V., "A new polynomial factorization algorithm and its implementation",
   J. Symb. Comp. 20 (1995), 364-397.
 @item [Traverso]  @item [Traverso]
 Traverso, C., "Groebner trace algorithms", Proc. ISSAC '88(LNCS 358), 125-138.  Traverso, C., "Groebner trace algorithms", Proc. ISSAC '88(LNCS 358), 125-138.
   @item [Weber]
   Weber, K., "The accelerated Integer GCD Algorithm", ACM TOMS, 21, 1(1995), 111-122.
 @end table  @end table
   

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

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