version 1.2, 1999/12/10 06:58:49 |
version 1.6, 2000/03/17 08:27:28 |
|
|
|
@comment $OpenXM: OpenXM/src/asir-doc/parts/appendix.texi,v 1.5 2000/03/17 02:17:03 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> |
|
|
<$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>: |
<$B%*%W%7%g%s(B>: |
alphabet $B$G;O$^$kJ8;zNs(B @samp{=} $B<0(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 |
@end example |
|
|
@example |
@example |
|
\BJP |
<$B%*%W%7%g%sJB$S(B>: |
<$B%*%W%7%g%sJB$S(B>: |
<$B%*%W%7%g%s(B> |
<$B%*%W%7%g%s(B> |
<$B%*%W%7%g%s(B> [@samp{,} <$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 |
@end example |
|
|
|
|
@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> |
|
|
@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. |
|
\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 |
$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()} (@xref{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 217 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 |
|
\BJP |
$BIA2h(B (@xref{ifplot conplot plot plotover}) $B$N$?$a$NNc(B. @code{IS[]} $B$K$OM-L>$J(B |
$BIA2h(B (@xref{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 236 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 245 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 |
|
|
|
\BJP |
$B4{$K=R$Y$?$h$&$K(B, DOS $BHG(B, Windows $BHG(B, Macintosh $BHG$G$OF~NO%$%s%?%U%'!<%9$H(B |
$B4{$K=R$Y$?$h$&$K(B, DOS $BHG(B, Windows $BHG(B, Macintosh $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}. |
|
\E |
|
\BEG |
|
As already mentioned a command line editing facility and a history |
|
substitution facility are built-in for DOS, Windows Macintosh 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}. |
|
\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 |
|
(@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 333 fep $B$O%U%j!<%=%U%H$G%=!<%9$,F~<j2DG=$G$"$k$,(B, $ |
|
Line 952 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 382 plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B. |
|
Line 1042 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 402 plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B. |
|
Line 1083 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 416 plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B. |
|
Line 1123 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 447 Proc. ISSAC'91, 49-54. |
|
Line 1174 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 |
|
|