version 1.3, 1999/12/21 02:47:30 |
version 1.16, 2018/03/29 02:48:36 |
|
|
@comment $OpenXM$ |
@comment $OpenXM: OpenXM/src/asir-doc/parts/appendix.texi,v 1.15 2018/03/28 08:43:19 takayama Exp $ |
\BJP |
\BJP |
@node $BIUO?(B,,, Top |
@node $BIUO?(B,,, Top |
@appendix $BIUO?(B |
@appendix $BIUO?(B |
|
|
* $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 |
\E |
|
|
* Details of syntax:: |
* Details of syntax:: |
* Files of user defined functions:: |
* Files of user defined functions:: |
* Input interfaces:: |
* Input interfaces:: |
|
* Library interfaces:: |
* Changes:: |
* Changes:: |
* References:: |
* References:: |
\E |
\E |
|
|
<list> |
<list> |
\E |
\E |
@end example |
@end example |
\JP (@xref{$B$5$^$6$^$J<0(B}) |
\JP (@xref{$B$5$^$6$^$J<0(B}.) |
\EG (@xref{various expressions}) |
\EG (@xref{various expressions}.) |
|
|
@example |
@example |
\BJP |
\BJP |
|
|
\E |
\E |
\BEG |
\BEG |
<option>: |
<option>: |
Character sequence beginning with an alphabetical letter @samp{=} <expression> |
Character sequence beginning with an alphabetical letter @samp{=} <expr> |
\E |
\E |
@end example |
@end example |
|
|
|
|
(X,Y,Japan etc.) |
(X,Y,Japan etc.) |
\E |
\E |
@end example |
@end example |
\JP (@xref{$BJQ?t$*$h$SITDj85(B}) |
\JP (@xref{$BJQ?t$*$h$SITDj85(B}.) |
\EG (@xref{variables and indeterminates}) |
\EG (@xref{variables and indeterminates}.) |
|
|
@example |
@example |
\BJP |
\BJP |
|
|
(a,bCD,c1_2 etc.) |
(a,bCD,c1_2 etc.) |
\E |
\E |
@end example |
@end example |
\JP (@xref{$BJQ?t$*$h$SITDj85(B}) |
\JP (@xref{$BJQ?t$*$h$SITDj85(B}.) |
\EG (@xref{variables and indeterminates}) |
\EG (@xref{variables and indeterminates}.) |
|
|
@example |
@example |
\BJP |
\BJP |
|
|
<complex number> |
<complex number> |
\E |
\E |
@end example |
@end example |
\JP (@xref{$B?t$N7?(B}) |
\JP (@xref{$B?t$N7?(B}.) |
\EG (@xref{Types of numbers}) |
\EG (@xref{Types of numbers}.) |
|
|
@example |
@example |
\JP <$BM-M}?t(B>: |
\JP <$BM-M}?t(B>: |
|
|
\EG <algebraic number>: |
\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}) |
\JP (@xref{$BBe?tE*?t$K4X$9$k1i;;(B}.) |
\EG (@xref{Algebraic numbers}) |
\EG (@xref{Algebraic numbers}.) |
|
|
@example |
@example |
\JP <$BJ#AG?t(B>: |
\JP <$BJ#AG?t(B>: |
|
|
@samp{<<} <expr list> @samp{>>} |
@samp{<<} <expr list> @samp{>>} |
\E |
\E |
@end example |
@end example |
\JP (@xref{$B%0%l%V%J4pDl$N7W;;(B}) |
\JP (@xref{$B%0%l%V%J4pDl$N7W;;(B}.) |
\EG (@xref{Groebner basis computation}) |
\EG (@xref{Groebner basis computation}.) |
|
|
@example |
@example |
\BJP |
\BJP |
|
|
@samp{end(quit)} <terminator> |
@samp{end(quit)} <terminator> |
\E |
\E |
@end example |
@end example |
\JP (@xref{$BJ8(B}) |
\JP (@xref{$BJ8(B}.) |
\EG (@xref{statements}) |
\EG (@xref{statements}.) |
|
|
@example |
@example |
\JP <$B=*C<(B>: |
\JP <$B=*C<(B>: |
Line 384 Here, we explain some of them. |
|
Line 386 Here, we explain some of them. |
|
|
|
@table @samp |
@table @samp |
@item fff |
@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}) |
\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}) |
\EG Univariate factorizer over large finite fields (@xref{Finite fields}.) |
@item gr |
@item gr |
\JP $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}) |
\EG Groebner basis package. (@xref{Groebner basis computation}.) |
@item sp |
@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}) |
\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}) |
\EG Operations over algebraic numbers and factorization, Splitting fields. (@xref{Algebraic numbers}.) |
@item alpi |
@item alpi |
@itemx bgk |
@itemx bgk |
@itemx cyclic |
@itemx cyclic |
Line 399 Here, we explain some of them. |
|
Line 401 Here, we explain some of them. |
|
@itemx kimura |
@itemx kimura |
\JP $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. |
\EG Example polynomial sets for benchmarks of Groebner basis computation. |
\EG Example polynomial sets for benchmarks of Groebner basis computation. |
(@xref{katsura hkatsura cyclic hcyclic}) |
(@xref{katsura hkatsura cyclic hcyclic}.) |
@item defs.h |
@item defs.h |
\JP $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}) |
\EG Macro definitions. (@xref{preprocessor}.) |
@item fctrtest |
@item fctrtest |
\BJP |
\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 |
|
|
@item fctrdata |
@item fctrdata |
\BJP |
\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 |
\E |
\BEG |
\BEG |
This contains example polynomials for factorization. It includes |
This contains example polynomials for factorization. It includes |
polynomials used in @samp{fctrtest}. |
polynomials used in @samp{fctrtest}. |
Polynomials contained in vector @code{Alg[]} is for the algebraic |
Polynomials contained in vector @code{Alg[]} is for the algebraic |
factorization @code{af()} (@xref{asq af}). |
factorization @code{af()}. (@xref{asq af af_noalg}.) |
\E |
\E |
@example |
@example |
[45] load("sp")$ |
[45] load("sp")$ |
Line 438 factorization @code{af()} (@xref{asq af}). |
|
Line 440 factorization @code{af()} (@xref{asq af}). |
|
x^9-15*x^6-87*x^3-125 |
x^9-15*x^6-87*x^3-125 |
0msec |
0msec |
[177] af(Alg[5],[newalg(Alg[5])]); |
[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], |
[[1,1],[75*x^2+(10*#0^7-175*#0^4-470*#0)*x |
[75*x^2+(-10*#0^7+175*#0^4+395*#0)*x+(3*#0^8-45*#0^5-261*#0^2),1], |
+(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], |
[75*x^2+(-10*#0^7+175*#0^4+395*#0)*x |
[x+(-#0),1]] |
+(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 |
3.600sec + gc : 1.040sec |
@end example |
@end example |
@item ifplot |
@item ifplot |
\BJP |
\BJP |
$BIA2h(B (@xref{ifplot conplot plot plotover}) $B$N$?$a$NNc(B. @code{IS[]} $B$K$OM-L>$J(B |
$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, |
$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 |
\E |
\BEG |
\BEG |
Examples for plotting (@xref{ifplot conplot plot plotover}). |
Examples for plotting. (@xref{ifplot conplot plot polarplot plotover}.) |
Vector @code{IS[]} contains several famous algebraic curves. |
Vector @code{IS[]} contains several famous algebraic curves. |
Variables @code{H, D, C, S} contains something like the suits |
Variables @code{H, D, C, S} contains something like the suits |
(Heart, Diamond, Club, and Spade) of cards. |
(Heart, Diamond, Club, and Spade) of cards. |
Line 478 is defined. Its returns a rather complex result. |
|
Line 482 is defined. Its returns a rather complex result. |
|
[84] load("ratint")$ |
[84] load("ratint")$ |
[102] ratint(x^6/(x^5+x+1),x); |
[102] ratint(x^6/(x^5+x+1),x); |
[1/2*x^2, |
[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], |
[[(#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 |
\BJP |
Line 511 result and then summing them up all. |
|
Line 516 result and then summing them up all. |
|
\E |
\E |
@item primdec |
@item primdec |
\BJP |
\BJP |
$BB?9`<0%$%G%"%k$N=`AG%$%G%"%kJ,2r$H$=$N:,4p$NAG%$%G%"%kJ,2r(B |
$BM-M}?tBN>e$NB?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()} |
|
$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. |
|
$BM-M}<078?t$NB?9`<0%$%G%"%k$d(B, 0$B<!85$G$J$$%$%G%"%k$b07$($k(B. |
|
@code{primadec} $B$O(B, $B=`AG@.J,$H$=$NAG@.J,$N%Z%"%j%9%H$N%j%9%H$rJV$9(B. |
|
@code{primedec} $B$O(B, $BAG@.J,$N%j%9%H$rJV$9(B. |
|
$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. |
|
\E |
\E |
\BEG |
\BEG |
Primary ideal decomposition of polynomial ideals and prime compotision |
Primary ideal decomposition of polynomial ideals and prime compotision |
of radicals |
of radicals over the rationals (@pxref{primadec primedec}). |
(Refer to @code{[Shimoyama,Yokoyama]}). |
|
@code{primadec()}, @code{primedec()} are the function for primary |
|
ideal decomposition and prime decomposition of the radical respectively. |
|
The arguments are a list of polynomials and a list of variables. |
|
These functions accept ideals with rational function coefficients |
|
and non zero-dimenstional ideals. |
|
@code{primadec} returns the list of pair lists consisting a primary component |
|
and its associated prime. |
|
@code{primedec} returns the list of prime components. |
|
Each component is a Groebner basis and the corresponding term order |
|
is indicated by the global variables @code{PRIMAORD}, @code{PRIMEORD} |
|
respectively. |
|
\E |
\E |
@example |
@item primdec_mod |
[84] load("primdec")$ |
\BJP |
[102] primedec([p*q*x-q^2*y^2+q^2*y,-p^2*x^2+p^2*x+p*q*y, |
$BM-8BBN>e$NB?9`<0%$%G%"%k$N:,4p$NAG%$%G%"%kJ,2r(B |
(q^3*y^4-2*q^3*y^3+q^3*y^2)*x-q^3*y^4+q^3*y^3, |
(@pxref{primedec_mod}). |
-q^3*y^4+2*q^3*y^3+(-q^3+p*q^2)*y^2],[p,q,x,y]); |
\E |
[[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]] |
\BEG |
[103] primadec([x,z*y,w*y^2,w^2*y-z^3,y^3],[x,y,z,w]); |
Prime decomposition of radicals of polynomial ideals |
[[[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]]] |
over finite fields (@pxref{primedec_mod}). |
@end example |
\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 |
@end table |
|
|
\BJP |
\BJP |
|
|
\E |
\E |
|
|
\BJP |
\BJP |
$B4{$K=R$Y$?$h$&$K(B, DOS $BHG(B, Windows $BHG(B, Macintosh $BHG$G$OF~NO%$%s%?%U%'!<%9$H(B |
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 |
\E |
\BEG |
\BEG |
As already mentioned a command line editing facility and a history |
A command line editing facility and a history |
substitution facility are built-in for DOS, Windows Macintosh version |
substitution facility are built-in for DOS, Windows version |
of @b{Asir}. UNIX versions of @b{Asir} do not have such built-in facilites. |
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 |
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}. |
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 |
\E |
|
|
@menu |
@menu |
Line 604 available for UNIX commands, including @samp{asir}. |
|
Line 614 available for UNIX commands, including @samp{asir}. |
|
[[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 |
\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$FJT=8$G$-$k(B */ |
... /* $BJT=8(B+Return */ |
... /* $BJT=8(B+Return */ |
\E |
\E |
\BEG |
\BEG |
fctr(x^5-1); /* The last input appears. */ |
fctr(x^5-1); /* The last input appears. */ |
Line 667 The way of setting up and the usage can be found at th |
|
Line 677 The way of setting up and the usage can be found at th |
|
\E |
\E |
|
|
\BJP |
\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 |
\E |
Line 676 The way of setting up and the usage can be found at th |
|
Line 987 The way of setting up and the usage can be found at th |
|
\E |
\E |
|
|
@menu |
@menu |
|
* ChangeLog:: |
* Version 990831:: |
* Version 990831:: |
* Version 950831:: |
* Version 950831:: |
* Version 940420:: |
* Version 940420:: |
@end menu |
@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 |
\JP @node Version 990831,,, $BJQ99E@(B |
\EG @node Version 990831,,, Changes |
\EG @node Version 990831,,, Changes |
@subsection Version 990831 |
@subsection Version 990831 |
Line 906 Proc. ISSAC'92, 387-396. |
|
Line 1238 Proc. ISSAC'92, 387-396. |
|
Noro, M., Yokoyama, K., "A Modular Method to Compute the Rational Univariate |
Noro, M., Yokoyama, K., "A Modular Method to Compute the Rational Univariate |
Representation of Zero-Dimensional Ideals", |
Representation of Zero-Dimensional Ideals", |
J. Symb. Comp. 28/1 (1999), 243-263. |
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] |
@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", |
Line 917 J. Symb. Comp. 20 (1995), 364-397. |
|
Line 1253 J. Symb. Comp. 20 (1995), 364-397. |
|
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] |
@item [Weber] |
Weber, K., "The accelerated Integer GCD Algorithm", ACM TOMS, 21, 1(1995), 111-122. |
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 |
@end table |
|
|