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

File: [local] / OpenXM / src / asir-doc / parts / appendix.texi (download)

Revision 1.16, Thu Mar 29 02:48:36 2018 UTC (6 years, 1 month ago) by takayama
Branch: MAIN
CVS Tags: HEAD
Changes since 1.15: +10 -5 lines

Added a description on ctrl() and ctrl(|desc=1).

@comment $OpenXM: OpenXM/src/asir-doc/parts/appendix.texi,v 1.16 2018/03/29 02:48:36 takayama Exp $
\BJP
@node $BIUO?(B,,, Top
@appendix $BIUO?(B
\E
\BEG
@node Appendix,,, Top
@appendix Appendix
\E

@menu
\BJP
* $BJ8K!$N>\:Y(B::
* $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B::
* $BF~NO%$%s%?%U%'!<%9(B::
* $B%i%$%V%i%j%$%s%?%U%'!<%9(B::
* $BJQ99E@(B::
* $BJ88%(B::
\E
\BEG
* Details of syntax:: 
* Files of user defined functions::
* Input interfaces::
* Library interfaces::
* Changes:: 
* References::
\E
@end menu

\BJP
@node $BJ8K!$N>\:Y(B,,, $BIUO?(B
@section $BJ8K!$N>\:Y(B
\E
\BEG
@node Details of syntax,,, Appendix
@section Details of syntax
\E

@example
\BJP
<$B<0(B>: 
    @samp{(}<$B<0(B>@samp{)}
    <$B<0(B> <$BFs9`1i;;;R(B> <$B<0(B>
    @samp{+} <$B<0(B>
    @samp{-} <$B<0(B>
    <$B:8JUCM(B>
    <$B:8JUCM(B> <$BBeF~1i;;;R(B> <$B<0(B>
    <$B:8JUCM(B> @samp{++}
    <$B:8JUCM(B> @samp{--}
    @samp{++} <$B:8JUCM(B>
    @samp{--} <$B:8JUCM(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{|} <$B%*%W%7%g%sJB$S(B> @samp{)}
    <$BJ8;zNs(B>
    <$B;X?t%Y%/%H%k(B>
    <$B%"%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
\JP (@xref{$B$5$^$6$^$J<0(B}.)
\EG (@xref{various expressions}.)

@example
\BJP
<$B:8JUCM(B>:
    <$BJQ?t(B> [@samp{[}<$B<0(B>@samp{]}]*
\E
\BEG
<left value>:
    <program variable> [@samp{[}<expression>@samp{]}]*
\E
@end example

@example
\BJP
<$BFs9`1i;;;R(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{||}
\E
    @samp{==} @samp{!=} @samp{<} @samp{>} @samp{<=} @samp{>=} @samp{&&} @samp{||}
@end example

@example
\JP <$BBeF~1i;;;R(B>:
\EG <assignment operator>:
    @samp{=} @samp{+=} @samp{-=} @samp{*=} @samp{/=} @samp{%=} @samp{^=} 
@end example

@example
\BJP
<$B<0JB$S(B>:
    <$B6u(B>
    <$B<0(B> [@samp{,} <$B<0(B>]*
\E
\BEG
<expr list>:
    <empty>
    <expression> [@samp{,} <expression>]*
\E
@end 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{=} <expr>
\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>:
    @samp{[} <$B<0JB$S(B> @samp{]}
\E
\BEG
<list>:
    @samp{[} <expr list> @samp{]}
\E
@end example

@example
\BJP
<$BJQ?t(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
\JP (@xref{$BJQ?t$*$h$SITDj85(B}.)
\EG (@xref{variables and indeterminates}.)

@example
\BJP
<$BH!?t(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

@example
\BJP
<$B%"%H%`(B>:
   <$BITDj85(B>
   <$B?t(B>
\E
\BEG
<atom>:
   <indeterminate>
   <number>
\E
@end example

@example
\BJP
<$BITDj85(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
\JP (@xref{$BJQ?t$*$h$SITDj85(B}.)
\EG (@xref{variables and indeterminates}.)

@example
\BJP
<$B?t(B>: 
   <$BM-M}?t(B>
   <$BIbF0>.?t(B>
   <$BBe?tE*?t(B>
   <$BJ#AG?t(B>
\E
\BEG
<number>:
   <rational number>
   <floating point number>
   <algebraic number>
   <complex number>
\E
@end example
\JP (@xref{$B?t$N7?(B}.)
\EG (@xref{Types of numbers}.)

@example
\JP <$BM-M}?t(B>:
\EG <rational number>:
   0, 1, -2, 3/4
@end example

@example
\JP <$BIbF0>.?t(B>:
\EG <floating point number>:
   0.0, 1.2e10
@end example

@example
\JP <$BBe?tE*?t(B>: 
\EG <algebraic number>: 
   newalg(x^2+1), alg(0)^2+1
@end example
\JP (@xref{$BBe?tE*?t$K4X$9$k1i;;(B}.)
\EG (@xref{Algebraic numbers}.)

@example
\JP <$BJ#AG?t(B>:
\EG <complex number>:
   1+@code{@@i}, 2.3*@code{@@i}
@end example

@example
\BJP
<$BJ8;zNs(B>:
   @samp{"} $B$G0O$^$l$?J8;zNs(B 
\E
\BEG
<string>:
   character sequence enclosed by two @samp{"}'s.
\E
@end example

@example
\BJP
<$B;X?t%Y%/%H%k(B>:
   @samp{<<} <$B<0JB$S(B> @samp{>>}
\E
\BEG
<exponent vector>:
   @samp{<<} <expr list> @samp{>>}
\E
@end example
\JP (@xref{$B%0%l%V%J4pDl$N7W;;(B}.)
\EG (@xref{Groebner basis computation}.)

@example
\BJP
<$BJ8(B>:
    <$B<0(B> <$B=*C<(B>
    <$BJ#J8(B>
    @samp{break} <$B=*C<(B>
    @samp{continue} <$B=*C<(B>
    @samp{return} <$B=*C<(B>
    @samp{return} <$B<0(B> <$B=*C<(B>
    @samp{if} @samp{(} <$B<0JB$S(B> @samp{)} <$BJ8(B>
    @samp{if} @samp{(} <$B<0JB$S(B> @samp{)} <$BJ8(B> @samp{else} <$BJ8(B>
    @samp{for} @samp{(} <$B<0JB$S(B> @samp{;} <$B<0JB$S(B> @samp{;} <$B<0JB$S(B> @samp{)} <$BJ8(B>
    @samp{do} <$BJ8(B> @samp{while} @samp{(} <$B<0JB$S(B> @samp{)} <$B=*C<(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{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
\JP (@xref{$BJ8(B}.)
\EG (@xref{statements}.)

@example
\JP <$B=*C<(B>:
\EG <terminator>:
    @samp{;} @samp{$}
@end example

@example
\BJP
<$BJQ?t@k8@(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

@example
\BJP
<$BJ#J8(B>:
    @samp{@{} <$BJ8JB$S(B> @samp{@}}
\E
\BEG
<compound statement>:
    @samp{@{} <stat list> @samp{@}}
\E
@end example

@example
\BJP
<$BJ8JB$S(B>:
    [<$BJ8(B>]*
\E
\BEG
<stat list>:
    [<statement>]*
\E
@end example

\BJP
@node $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B,,, $BIUO?(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
\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
$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. 
\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
@item fff
\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
\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
\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
@itemx bgk
@itemx cyclic
@itemx katsura
@itemx kimura
\JP $B%0%l%V%J4pDl7W;;$K$*$$$F(B, $B%Y%s%A%^!<%/$=$NB>$GMQ$$$i$l$kNc(B. 
\EG Example polynomial sets for benchmarks of Groebner basis computation.
(@xref{katsura hkatsura cyclic hcyclic}.)
@item defs.h
\JP $B$$$/$D$+$N%^%/%mDj5A(B. (@xref{$B%W%j%W%m%;%C%5(B}.)
\EG Macro definitions. (@xref{preprocessor}.)
@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=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
$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
\BJP
@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()} (@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
[45] load("sp")$
[84] load("fctrdata")$
[175] cputime(1)$
0msec
[176] Alg[5];
x^9-15*x^6-87*x^3-125
0msec
[177] af(Alg[5],[newalg(Alg[5])]);
[[1,1],[75*x^2+(10*#0^7-175*#0^4-470*#0)*x
+(3*#0^8-45*#0^5-261*#0^2),1],
[75*x^2+(-10*#0^7+175*#0^4+395*#0)*x
+(3*#0^8-45*#0^5-261*#0^2),1],
[25*x^2+(25*#0)*x+(#0^8-15*#0^5-87*#0^2),1],
[x^2+(#0)*x+(#0^2),1],[x+(-#0),1]]
3.600sec + gc : 1.040sec
@end example
@item ifplot
\BJP
$BIA2h(B (@ref{ifplot conplot plot polarplot 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, 
$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 polarplot 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
\JP $B?t$K4X$9$k4JC1$J1i;;H!?t$NNc(B. 
\EG Examples of simple operations on numbers.
@item mat
\JP $B9TNs$K4X$9$k4JC1$J1i;;H!?t$NNc(B. 
\EG Examples of simple operations on matrices.
@item ratint
\BJP
$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. 
\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
[0] load("gr")$
[45] load("sp")$
[84] load("ratint")$
[102] ratint(x^6/(x^5+x+1),x);
[1/2*x^2,
[[(#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]]]
@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. 
$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, 
@code{[root*log(poly),defpoly]} $B$H$$$&7A$r$7$F$$$k(B. $B$3$l$O(B, $BITDj@QJ,$K(B
$B$*$$$F$O(B, @code{defpoly} $B$NA4$F$N:,(B @code{root} $B$KBP$7$F(B @code{root*log(poly)}
$B$r:n$j$=$l$i$rB-$79g$o$;$k$H$$$&0UL#$G$"$k(B. $B$3$3$G(B @code{poly} $B$O(B
@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
$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
\BJP
$BM-M}?tBN>e$NB?9`<0%$%G%"%k$N=`AG%$%G%"%kJ,2r$H$=$N:,4p$NAG%$%G%"%kJ,2r(B
(@pxref{primadec primedec}).
\E
\BEG
Primary ideal decomposition of polynomial ideals and prime compotision
of radicals over the rationals (@pxref{primadec primedec}).
\E
@item primdec_mod
\BJP
$BM-8BBN>e$NB?9`<0%$%G%"%k$N:,4p$NAG%$%G%"%kJ,2r(B
(@pxref{primedec_mod}).
\E
\BEG
Prime decomposition of radicals of polynomial ideals
over finite fields (@pxref{primedec_mod}).
\E
@item bfct
\BJP
b $B4X?t$N7W;;(B.
\E
\BEG
Computation of b-function.
\E
(@pxref{bfunction bfct generic_bfct ann ann0}).
@end table

\BJP
@node $BF~NO%$%s%?%U%'!<%9(B,,, $BIUO?(B
@section $BF~NO%$%s%?%U%'!<%9(B
\E
\BEG
@node Input interfaces,,, Appendix
@section Input interfaces
\E

\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$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. 
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
* fep::
* asir.el::
@end menu

\JP @node fep,,, $BF~NO%$%s%?%U%'!<%9(B
\EG @node fep,,, Input interfaces
@subsection fep

@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
$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
$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
% fep asir
...
[0] fctr(x^5-1);
[[1,1],[x-1,1],[x^4+x^3+x^2+x+1,1]]
[1] !!                              /* !!+Return                      */
\BJP
fctr(x^5-1);                        /* $BD>A0$NF~NO$,8=$l$FJT=8$G$-$k(B */
...                                 /* $BJT=8(B+Return                  */
\E
\BEG
fctr(x^5-1);                        /* The last input appears.        */
...                                 /* Edit+Return                    */
\E
fctr(x^5+1);
[[1,1],[x+1,1],[x^4-x^3+x^2-x+1,1]]
@end example

@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
$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.
\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

\JP @node asir.el,,, $BF~NO%$%s%?%U%'!<%9(B
\EG @node asir.el,,, Input interfaces
@subsection asir.el

@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
$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
$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
\BJP
@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
$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
\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
@section $BJQ99E@(B
\E
\BEG
@node Changes,,, Appendix
@section Appendix
\E

@menu
* ChangeLog::
* Version 990831::
* Version 950831::
* Version 940420::
@end menu

\JP @node ChangeLog,,, $BJQ99E@(B
\EG @node ChangeLog,,, Changes
@subsection ChangeLog
\BJP
$B>\$7$/$O(B 
@uref{http://www.openxm.org}
$B$N(B cvsweb $B$r;2>H(B.
@itemize
@item 2018-03-28,  ctrl $B$N%9%$%C%A0lMw$NI=<((B.  builtin/ctrl.c, ...
@item 2018-03-28, abs $B$,(B pure func $B$K(B. N!. top level $B$N(B break. parse/puref.c, ...
@item 2018-03-27, ox_pari server $B$K(B ox_reset $B$,<BAu$5$l$?(B. ox_pari/ox_pari.c
@item 2018-03-27, sin($B?t;z(B) $BEy$,ITDj85$H$7$FBgNL$K@8@.$5$l$kLdBj$N2r7h0F(B. parse/puref.c, ...
@end itemize
\E

\BEG
See the Japanese document and the cvsweb at
@uref{http://www.openxm.org}
\E

\JP @node Version 990831,,, $BJQ99E@(B
\EG @node Version 990831,,, Changes
@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, 
$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. 

$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. 
\E

\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

@menu
\BJP
* $B%G%P%C%,(B($BJQ99(B)::
* $BAH$_9~$_H!?t(B($BJQ99(B)::
* $B%0%l%V%J4pDl(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

\BJP
@node $B%G%P%C%,(B($BJQ99(B),,, Version 950831
@subsubsection $B%G%P%C%,(B
\E
\BEG
@node Debugger(Changes),,, Version 950831
@subsubsection Debugger
\E

@itemize @bullet
@item
\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
\JP @code{finish} $B%3%^%s%I$NDI2C(B. 
\EG A command @code{finish} has been appended.
@item
\BJP
@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.
\E
\EG One can examine any stack frame with @code{up}, @code{down} and @code{frame}.
@item
\JP @code{trace} $B%3%^%s%I$NDI2C(B. 
\EG A command @code{trace} has been appended.
@end itemize

\BJP
@node $BAH$_9~$_H!?t(B($BJQ99(B),,, Version 950831
@subsubsection $BAH$_9~$_H!?t(B
\E
\BEG
@node Built-in functions(Changes),,, Version 950831
@subsubsection Built-in functions
\E

@itemize @bullet
\BJP
@item
@code{sdiv()} $B$J$I$K$*$1$k(B, $B<gJQ?t$N;XDj$N%5%]!<%H(B. 
@item
@code{sdivm()} $B$J$I(B, $BM-8BBN>e$G$NB?9`<0=|;;$NDI2C(B. 
@item
@code{det()}, @code{res()} $B$J$I$K$*$1$k(B, $BM-8BBN>e$G$N7W;;$N%5%]!<%H(B
@item
@code{vtol()} ($B%Y%/%H%k$+$i%j%9%H$X$NJQ49(B) $B$NDI2C(B. 
@item
@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

\BJP
@node $B%0%l%V%J4pDl(B($BJQ99(B),,, Version 950831
@subsubsection $B%0%l%V%J4pDl(B
\E
\BEG
@node Groebner basis computation(Changes),,, Version 950831
@subsubsection Groebner basis computation
\E

@itemize @bullet
\BJP
@item
$B%0%l%V%J4pDl7W;;5!G=$NAH$_9~$_H!?t2=(B. 
@item
@code{grm()}, @code{hgrm()} $B$,(B @code{gr()}, @code{hgr()} $B$KJQ99(B. 
@item
@code{gr()}, @code{hgr()} $B$K$*$$$F(B, $B9`=g=x$N;XDj$,I,MW$K$J$C$?(B. 
@item
$B9`=g=x$N;XDjJ}K!$,3HD%$5$l$?(B. 
@item
$BM-8BBN>e$N%0%l%V%J4pDl7W;;$N%5%]!<%H(B. 
@item
$B4pDlJQ49$K$h$k<-=q<0=g=x%0%l%V%J4pDl7W;;$N%5%]!<%H(B. 
@item
$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

\BJP
@node $B$=$NB>(B($BJQ99(B),,, Version 950831
@subsubsection $B$=$NB>(B
\E
\BEG
@node Others(Changes),,, Version 950831
@subsubsection Others
\E

@itemize @bullet
\BJP
@item
$BJ,;67W;;MQ%D!<%k(B, $BH!?t$NDI2C(B.
@item
$BBe?tBN>e$N(B GCD $B7W;;$K$*$1$k%b%8%e%i7W;;$N1~MQ(B.
@item
$B%$%G%"%k$N=`AGJ,2r$N%5%]!<%H(B. 
@item
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

\JP @node Version 940420,,, $BJQ99E@(B
\EG @node Version 940420,,, Changes
@subsection Version 940420

@noindent
\JP $B:G=i$N8x3+HG(B. 
\EG The first public verion.

\BJP
@node $BJ88%(B,,, $BIUO?(B
@section $BJ88%(B
\E
\BEG
@node References,,, Appendix
@section References
\E
@table @code
@item [Batut et al.]
Batut, C., Bernardi, D., Cohen, H., Olivier, M., "User's Guide to PARI-GP",
1993.
@item [Becker,Weispfenning] 
Becker, T., Weispfenning, V., "Groebner Bases", Graduate Texts in Math. 141,
Springer-Verlag, 1993.
@item [Boehm,Weiser] 
Boehm, H., Weiser, M., "Garbage Collection in an Uncooperative
Environment", Software Practice & Experience, September 1988, 807-820.
@item [Gebauer,Moeller] 
Gebauer, R., Moeller, H. M., "An installation of Buchberger's algorithm",
J. of Symbolic Computation 6, 275-286.
@item [Giovini et al.] 
Giovini, A., Mora, T., Niesi, G., Robbiano, L., Traverso, C., 
""One sugar cube, please" OR Selection strategies in the Buchberger algorithm",
Proc. ISSAC'91, 49-54.
@item [Noro,Takeshima] 
Noro, M., Takeshima, T., "Risa/Asir -- A Computer Algebra System",
Proc. ISSAC'92, 387-396.
@item [Noro,Yokoyama] 
Noro, M., Yokoyama, K., "A Modular Method to Compute the Rational Univariate
Representation of Zero-Dimensional Ideals", 
J. Symb. Comp. 28/1 (1999), 243-263.
@item [Saito,Sturmfels,Takayama]
Saito, M., Sturmfels, B., Takayama, N.,
"Groebner deformations of hypergeometric differential equations",
Algorithms and Computation in Mathematics 6, Springer-Verlag (2000).
@item [Shimoyama,Yokoyama]
Shimoyama, T., Yokoyama, K.,
"Localization and primary decomposition of polynomial ideals",
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]
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.
@item [Yokoyama]
Yokoyama, K., "Prime decomposition of polynomial ideals over finite fields", 
Proc. ICMS, (2002), 217-227.
@end table