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

Annotation of OpenXM/src/asir-doc/parts/appendix.texi, Revision 1.12

1.12    ! noro        1: @comment $OpenXM: OpenXM/src/asir-doc/parts/appendix.texi,v 1.11 2003/04/20 08:01:24 noro Exp $
1.3       noro        2: \BJP
1.1       noro        3: @node $BIUO?(B,,, Top
                      4: @appendix $BIUO?(B
1.3       noro        5: \E
                      6: \BEG
                      7: @node Appendix,,, Top
                      8: @appendix Appendix
                      9: \E
1.1       noro       10:
                     11: @menu
1.3       noro       12: \BJP
1.1       noro       13: * $BJ8K!$N>\:Y(B::
                     14: * $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B::
                     15: * $BF~NO%$%s%?%U%'!<%9(B::
1.6       noro       16: * $B%i%$%V%i%j%$%s%?%U%'!<%9(B::
1.1       noro       17: * $BJQ99E@(B::
                     18: * $BJ88%(B::
1.3       noro       19: \E
                     20: \BEG
                     21: * Details of syntax::
                     22: * Files of user defined functions::
                     23: * Input interfaces::
1.6       noro       24: * Library interfaces::
1.3       noro       25: * Changes::
                     26: * References::
                     27: \E
1.1       noro       28: @end menu
                     29:
1.3       noro       30: \BJP
1.1       noro       31: @node $BJ8K!$N>\:Y(B,,, $BIUO?(B
                     32: @section $BJ8K!$N>\:Y(B
1.3       noro       33: \E
                     34: \BEG
                     35: @node Details of syntax,,, Appendix
                     36: @section Details of syntax
                     37: \E
1.1       noro       38:
                     39: @example
1.3       noro       40: \BJP
                     41: <$B<0(B>:
1.1       noro       42:     @samp{(}<$B<0(B>@samp{)}
                     43:     <$B<0(B> <$BFs9`1i;;;R(B> <$B<0(B>
                     44:     @samp{+} <$B<0(B>
                     45:     @samp{-} <$B<0(B>
                     46:     <$B:8JUCM(B>
                     47:     <$B:8JUCM(B> <$BBeF~1i;;;R(B> <$B<0(B>
                     48:     <$B:8JUCM(B> @samp{++}
                     49:     <$B:8JUCM(B> @samp{--}
                     50:     @samp{++} <$B:8JUCM(B>
                     51:     @samp{--} <$B:8JUCM(B>
                     52:     @samp{!} <$B<0(B>
                     53:     <$B<0(B> @samp{?} <$B<0(B> @samp{:} <$B<0(B>
                     54:     <$BH!?t(B> @samp{(} <$B<0JB$S(B> @samp{)}
1.2       noro       55:     <$BH!?t(B> @samp{(} <$B<0JB$S(B> @samp{|} <$B%*%W%7%g%sJB$S(B> @samp{)}
1.1       noro       56:     <$BJ8;zNs(B>
                     57:     <$B;X?t%Y%/%H%k(B>
                     58:     <$B%"%H%`(B>
                     59:     <$B%j%9%H(B>
1.3       noro       60: \E
                     61: \BEG
                     62: <expression>:
                     63:     @samp{(}<expression>@samp{)}
                     64:     <expression> <binary operator> <expression>
                     65:     @samp{+} <expression>
                     66:     @samp{-} <expression>
                     67:     <left value>
                     68:     <left value> <assignment operator> <expression>
                     69:     <left value> @samp{++}
                     70:     <left value> @samp{--}
                     71:     @samp{++} <left value>
                     72:     @samp{--} <left value>
                     73:     @samp{!} <expression>
                     74:     <expression> @samp{?} <expression> @samp{:} <expression>
                     75:     <function> @samp{(} <expr list> @samp{)}
                     76:     <function> @samp{(} <expr list> @samp{|} <option list> @samp{)}
                     77:     <string>
                     78:     <exponent vector>
                     79:     <atom>
                     80:     <list>
                     81: \E
1.1       noro       82: @end example
1.9       noro       83: \JP (@xref{$B$5$^$6$^$J<0(B}.)
                     84: \EG (@xref{various expressions}.)
1.1       noro       85:
                     86: @example
1.3       noro       87: \BJP
1.1       noro       88: <$B:8JUCM(B>:
                     89:     <$BJQ?t(B> [@samp{[}<$B<0(B>@samp{]}]*
1.3       noro       90: \E
                     91: \BEG
                     92: <left value>:
                     93:     <program variable> [@samp{[}<expression>@samp{]}]*
                     94: \E
1.1       noro       95: @end example
                     96:
                     97: @example
1.3       noro       98: \BJP
1.1       noro       99: <$BFs9`1i;;;R(B>:
                    100:     @samp{+} @samp{-} @samp{*} @samp{/} @samp{%} @samp{^}($BQQ(B)
1.3       noro      101: \E
                    102: \BEG
                    103: <binary operator>:
                    104:     @samp{+} @samp{-} @samp{*} @samp{/} @samp{%} @samp{^}(exponentiation)
                    105:     @samp{==} @samp{!=} @samp{<} @samp{>} @samp{<=} @samp{>=} @samp{&&} @samp{||}
                    106: \E
1.1       noro      107:     @samp{==} @samp{!=} @samp{<} @samp{>} @samp{<=} @samp{>=} @samp{&&} @samp{||}
                    108: @end example
                    109:
                    110: @example
1.3       noro      111: \JP <$BBeF~1i;;;R(B>:
                    112: \EG <assignment operator>:
1.1       noro      113:     @samp{=} @samp{+=} @samp{-=} @samp{*=} @samp{/=} @samp{%=} @samp{^=}
                    114: @end example
                    115:
                    116: @example
1.3       noro      117: \BJP
1.1       noro      118: <$B<0JB$S(B>:
                    119:     <$B6u(B>
                    120:     <$B<0(B> [@samp{,} <$B<0(B>]*
1.3       noro      121: \E
                    122: \BEG
                    123: <expr list>:
                    124:     <empty>
                    125:     <expression> [@samp{,} <expression>]*
                    126: \E
1.1       noro      127: @end example
1.2       noro      128:
                    129: @example
1.3       noro      130: \BJP
1.2       noro      131: <$B%*%W%7%g%s(B>:
1.3       noro      132:     alphabet $B$G;O$^$kJ8;zNs(B @samp{=} <$B<0(B>
                    133: \E
                    134: \BEG
                    135: <option>:
1.11      noro      136:     Character sequence beginning with an alphabetical letter @samp{=} <expr>
1.3       noro      137: \E
1.2       noro      138: @end example
                    139:
                    140: @example
1.3       noro      141: \BJP
1.2       noro      142: <$B%*%W%7%g%sJB$S(B>:
                    143:     <$B%*%W%7%g%s(B>
                    144:     <$B%*%W%7%g%s(B> [@samp{,} <$B%*%W%7%g%s(B>]*
1.3       noro      145: \E
                    146: \BEG
                    147: <option list>:
                    148:     <option>
                    149:     <option> [@samp{,} <option>]*
                    150: \E
1.2       noro      151: @end example
                    152:
1.1       noro      153:
                    154: @example
1.3       noro      155: \BJP
1.1       noro      156: <$B%j%9%H(B>:
                    157:     @samp{[} <$B<0JB$S(B> @samp{]}
1.3       noro      158: \E
                    159: \BEG
                    160: <list>:
                    161:     @samp{[} <expr list> @samp{]}
                    162: \E
1.1       noro      163: @end example
                    164:
                    165: @example
1.3       noro      166: \BJP
                    167: <$BJQ?t(B>:
1.1       noro      168:     $BBgJ8;z$G;O$^$kJ8;zNs(B (X,Y,Japan $B$J$I(B)
1.3       noro      169: \E
                    170: \BEG
                    171: <program variable>:
                    172:    Sequence of alphabetical letters or numeric digits or @code{_}
                    173:    that begins with a capital alphabetical letter
                    174:    (X,Y,Japan etc.)
                    175: \E
1.1       noro      176: @end example
1.9       noro      177: \JP (@xref{$BJQ?t$*$h$SITDj85(B}.)
                    178: \EG (@xref{variables and indeterminates}.)
1.1       noro      179:
                    180: @example
1.3       noro      181: \BJP
1.1       noro      182: <$BH!?t(B>:
                    183:    $B>.J8;z$G;O$^$kJ8;zNs(B (fctr,gcd $B$J$I(B)
1.3       noro      184: \E
                    185: \BEG
                    186: <function>:
                    187:    Sequence of alphabetical letters or numeric digits or @code{_}
                    188:    that begins with a small alphabetical letter
                    189:    (fctr,gcd etc.)
                    190: \E
1.1       noro      191: @end example
                    192:
                    193: @example
1.3       noro      194: \BJP
1.1       noro      195: <$B%"%H%`(B>:
                    196:    <$BITDj85(B>
                    197:    <$B?t(B>
1.3       noro      198: \E
                    199: \BEG
                    200: <atom>:
                    201:    <indeterminate>
                    202:    <number>
                    203: \E
1.1       noro      204: @end example
                    205:
                    206: @example
1.3       noro      207: \BJP
                    208: <$BITDj85(B>:
1.1       noro      209:    $B>.J8;z$G;O$^$kJ8;zNs(B (a,bCD,c1_2 $B$J$I(B)
1.3       noro      210: \E
                    211: \BEG
                    212: <indeterminate>:
                    213:    Sequence of alphabetical letters or numeric digits or @code{_}
                    214:    that begin with a small alphabetical letter
                    215:    (a,bCD,c1_2 etc.)
                    216: \E
1.1       noro      217: @end example
1.9       noro      218: \JP (@xref{$BJQ?t$*$h$SITDj85(B}.)
                    219: \EG (@xref{variables and indeterminates}.)
1.1       noro      220:
                    221: @example
1.3       noro      222: \BJP
                    223: <$B?t(B>:
1.1       noro      224:    <$BM-M}?t(B>
                    225:    <$BIbF0>.?t(B>
                    226:    <$BBe?tE*?t(B>
                    227:    <$BJ#AG?t(B>
1.3       noro      228: \E
                    229: \BEG
                    230: <number>:
                    231:    <rational number>
                    232:    <floating point number>
                    233:    <algebraic number>
                    234:    <complex number>
                    235: \E
1.1       noro      236: @end example
1.9       noro      237: \JP (@xref{$B?t$N7?(B}.)
                    238: \EG (@xref{Types of numbers}.)
1.1       noro      239:
                    240: @example
1.3       noro      241: \JP <$BM-M}?t(B>:
                    242: \EG <rational number>:
1.1       noro      243:    0, 1, -2, 3/4
                    244: @end example
                    245:
                    246: @example
1.3       noro      247: \JP <$BIbF0>.?t(B>:
                    248: \EG <floating point number>:
1.1       noro      249:    0.0, 1.2e10
                    250: @end example
                    251:
                    252: @example
1.3       noro      253: \JP <$BBe?tE*?t(B>:
                    254: \EG <algebraic number>:
1.1       noro      255:    newalg(x^2+1), alg(0)^2+1
                    256: @end example
1.9       noro      257: \JP (@xref{$BBe?tE*?t$K4X$9$k1i;;(B}.)
                    258: \EG (@xref{Algebraic numbers}.)
1.1       noro      259:
                    260: @example
1.3       noro      261: \JP <$BJ#AG?t(B>:
                    262: \EG <complex number>:
1.1       noro      263:    1+@code{@@i}, 2.3*@code{@@i}
                    264: @end example
                    265:
                    266: @example
1.3       noro      267: \BJP
1.1       noro      268: <$BJ8;zNs(B>:
                    269:    @samp{"} $B$G0O$^$l$?J8;zNs(B
1.3       noro      270: \E
                    271: \BEG
                    272: <string>:
                    273:    character sequence enclosed by two @samp{"}'s.
                    274: \E
1.1       noro      275: @end example
                    276:
                    277: @example
1.3       noro      278: \BJP
                    279: <$B;X?t%Y%/%H%k(B>:
1.1       noro      280:    @samp{<<} <$B<0JB$S(B> @samp{>>}
1.3       noro      281: \E
                    282: \BEG
                    283: <exponent vector>:
                    284:    @samp{<<} <expr list> @samp{>>}
                    285: \E
1.1       noro      286: @end example
1.9       noro      287: \JP (@xref{$B%0%l%V%J4pDl$N7W;;(B}.)
                    288: \EG (@xref{Groebner basis computation}.)
1.1       noro      289:
                    290: @example
1.3       noro      291: \BJP
                    292: <$BJ8(B>:
1.1       noro      293:     <$B<0(B> <$B=*C<(B>
                    294:     <$BJ#J8(B>
                    295:     @samp{break} <$B=*C<(B>
                    296:     @samp{continue} <$B=*C<(B>
                    297:     @samp{return} <$B=*C<(B>
                    298:     @samp{return} <$B<0(B> <$B=*C<(B>
                    299:     @samp{if} @samp{(} <$B<0JB$S(B> @samp{)} <$BJ8(B>
                    300:     @samp{if} @samp{(} <$B<0JB$S(B> @samp{)} <$BJ8(B> @samp{else} <$BJ8(B>
                    301:     @samp{for} @samp{(} <$B<0JB$S(B> @samp{;} <$B<0JB$S(B> @samp{;} <$B<0JB$S(B> @samp{)} <$BJ8(B>
                    302:     @samp{do} <$BJ8(B> @samp{while} @samp{(} <$B<0JB$S(B> @samp{)} <$B=*C<(B>
                    303:     @samp{while} @samp{(} <$B<0JB$S(B> @samp{)} <$BJ8(B>
                    304:     @samp{def} <$BH!?t(B> @samp{(} <$B<0JB$S(B> @samp{)} @samp{@{} <$BJQ?t@k8@(B> <$BJ8JB$S(B> @samp{@}}
                    305:     @samp{end(quit)} <$B=*C<(B>
1.3       noro      306: \E
                    307: \BEG
                    308: <statement>:
                    309:     <expression> <terminator>
                    310:     <compound statement>
                    311:     @samp{break} <terminator>
                    312:     @samp{continue} <terminator>
                    313:     @samp{return} <terminator>
                    314:     @samp{return} <expression> <terminator>
                    315:     @samp{if} @samp{(} <expr list> @samp{)} <statement>
                    316:     @samp{if} @samp{(} <expr list> @samp{)} <statement> @samp{else} <statement>
                    317:     @samp{for} @samp{(} <expr list> @samp{;} <expr list> @samp{;} <expr list> @samp{)} <statement>
                    318:     @samp{do} <statement> @samp{while} @samp{(} <expr list> @samp{)} <terminator>
                    319:     @samp{while} @samp{(} <expr list> @samp{)} <statement>
                    320:     @samp{def} <function> @samp{(} <expr list> @samp{)} @samp{@{} <variable declaration> <stat list> @samp{@}}
                    321:     @samp{end(quit)} <terminator>
                    322: \E
1.1       noro      323: @end example
1.9       noro      324: \JP (@xref{$BJ8(B}.)
                    325: \EG (@xref{statements}.)
1.1       noro      326:
                    327: @example
1.3       noro      328: \JP <$B=*C<(B>:
                    329: \EG <terminator>:
1.1       noro      330:     @samp{;} @samp{$}
                    331: @end example
                    332:
                    333: @example
1.3       noro      334: \BJP
1.1       noro      335: <$BJQ?t@k8@(B>:
                    336:     [@samp{extern} <$BJQ?t(B> [@samp{,} <$BJQ?t(B>]* <$B=*C<(B>]*
1.3       noro      337: \E
                    338: \BEG
                    339: <variable declaration>:
                    340:     [@samp{extern} <program variable> [@samp{,} <program variable>]* <terminator>]*
                    341: \E
1.1       noro      342: @end example
                    343:
                    344: @example
1.3       noro      345: \BJP
1.1       noro      346: <$BJ#J8(B>:
                    347:     @samp{@{} <$BJ8JB$S(B> @samp{@}}
1.3       noro      348: \E
                    349: \BEG
                    350: <compound statement>:
                    351:     @samp{@{} <stat list> @samp{@}}
                    352: \E
1.1       noro      353: @end example
                    354:
                    355: @example
1.3       noro      356: \BJP
1.1       noro      357: <$BJ8JB$S(B>:
                    358:     [<$BJ8(B>]*
1.3       noro      359: \E
                    360: \BEG
                    361: <stat list>:
                    362:     [<statement>]*
                    363: \E
1.1       noro      364: @end example
                    365:
1.3       noro      366: \BJP
1.1       noro      367: @node $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B,,, $BIUO?(B
                    368: @section $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B
1.3       noro      369: \E
                    370: \BEG
                    371: @node Files of user defined functions,,, Appendix
                    372: @section Files of user defined functions
                    373: \E
1.1       noro      374:
                    375: @noindent
1.3       noro      376: \BJP
1.1       noro      377: $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
                    378: $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
                    379: $B@bL@$9$k(B.
1.3       noro      380: \E
                    381: \BEG
                    382: There are several files of user defined functions under the standard
                    383: library directory. (@samp{/usr/local/lib/asir} by default.)
                    384: Here, we explain some of them.
                    385: \E
1.1       noro      386:
                    387: @table @samp
                    388: @item fff
1.9       noro      389: \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}.)
                    390: \EG Univariate factorizer over large finite fields (@xref{Finite fields}.)
1.1       noro      391: @item gr
1.9       noro      392: \JP $B%0%l%V%J4pDl7W;;%Q%C%1!<%8(B.  (@xref{$B%0%l%V%J4pDl$N7W;;(B}.)
                    393: \EG Groebner basis package.  (@xref{Groebner basis computation}.)
1.1       noro      394: @item sp
1.9       noro      395: \JP $BBe?tE*?t$N1i;;$*$h$S0x?tJ,2r(B, $B:G>.J,2rBN(B. (@xref{$BBe?tE*?t$K4X$9$k1i;;(B}.)
                    396: \EG Operations over algebraic numbers and factorization, Splitting fields. (@xref{Algebraic numbers}.)
1.1       noro      397: @item alpi
                    398: @itemx bgk
                    399: @itemx cyclic
                    400: @itemx katsura
                    401: @itemx kimura
1.3       noro      402: \JP $B%0%l%V%J4pDl7W;;$K$*$$$F(B, $B%Y%s%A%^!<%/$=$NB>$GMQ$$$i$l$kNc(B.
                    403: \EG Example polynomial sets for benchmarks of Groebner basis computation.
1.9       noro      404: (@xref{katsura hkatsura cyclic hcyclic}.)
1.1       noro      405: @item defs.h
1.9       noro      406: \JP $B$$$/$D$+$N%^%/%mDj5A(B. (@xref{$B%W%j%W%m%;%C%5(B}.)
                    407: \EG Macro definitions. (@xref{preprocessor}.)
1.1       noro      408: @item fctrtest
1.3       noro      409: \BJP
1.1       noro      410: $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
                    411: $B=EJ#EY$NBg$-$$$$$/$D$+$NNc$r4^$`(B. $B$3$l$O(B, @code{load()} $B$9$k$H(B
                    412: $BD>$A$K7W;;$,;O$^$k(B. $BF~<j$7$?(B @b{Asir} $B$,@5$7$/F0:n$7$F$$$k$+$N(B
                    413: $B%F%9%H$K$b;H$&$3$H$,$G$-$k(B.
1.3       noro      414: \E
                    415: \BEG
                    416: Test program of factorization of integral polynomials.
                    417: It includes  @samp{factor.tst} of REDUCE and several examples
                    418: for large multiplicity factors.  If this file is @code{load()}'ed,
                    419: computation will begin immediately.
                    420: You may use it as a first test whether @b{Asir} at you hand runs
                    421: correctly.
                    422: \E
1.1       noro      423: @item fctrdata
1.3       noro      424: \BJP
1.1       noro      425: @samp{fctrtest} $B$G;H$o$l$F$$$kNc$r4^$`(B, $B0x?tJ,2r%F%9%HMQ$NNc(B.
1.9       noro      426: @code{Alg[]} $B$K<}$a$i$l$F$$$kNc$O(B, @code{af()} (@ref{asq af af_noalg}) $BMQ$NNc$G$"$k(B.
1.3       noro      427: \E
                    428: \BEG
                    429: This contains example polynomials for factorization.  It includes
                    430: polynomials used in @samp{fctrtest}.
                    431: Polynomials contained in vector @code{Alg[]} is for the algebraic
1.9       noro      432: factorization @code{af()}. (@xref{asq af af_noalg}.)
1.3       noro      433: \E
1.1       noro      434: @example
                    435: [45] load("sp")$
                    436: [84] load("fctrdata")$
                    437: [175] cputime(1)$
                    438: 0msec
                    439: [176] Alg[5];
                    440: x^9-15*x^6-87*x^3-125
                    441: 0msec
                    442: [177] af(Alg[5],[newalg(Alg[5])]);
1.11      noro      443: [[1,1],[75*x^2+(10*#0^7-175*#0^4-470*#0)*x
                    444: +(3*#0^8-45*#0^5-261*#0^2),1],
                    445: [75*x^2+(-10*#0^7+175*#0^4+395*#0)*x
                    446: +(3*#0^8-45*#0^5-261*#0^2),1],
                    447: [25*x^2+(25*#0)*x+(#0^8-15*#0^5-87*#0^2),1],
                    448: [x^2+(#0)*x+(#0^2),1],[x+(-#0),1]]
1.1       noro      449: 3.600sec + gc : 1.040sec
                    450: @end example
                    451: @item ifplot
1.3       noro      452: \BJP
1.10      noro      453: $BIA2h(B (@ref{ifplot conplot plot polarplot plotover}) $B$N$?$a$NNc(B. @code{IS[]} $B$K$OM-L>$J(B
1.1       noro      454: $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,
                    455: $B%9%Z!<%I(B ($B$i$7$-(B) $B6J@~$NNc$,F~$C$F$$$k(B.
1.3       noro      456: \E
                    457: \BEG
1.10      noro      458: Examples for plotting. (@xref{ifplot conplot plot polarplot plotover}.)
1.3       noro      459: Vector @code{IS[]} contains several famous algebraic curves.
                    460: Variables @code{H, D, C, S} contains something like the suits
                    461: (Heart, Diamond, Club, and Spade) of cards.
                    462: \E
1.1       noro      463: @item num
1.3       noro      464: \JP $B?t$K4X$9$k4JC1$J1i;;H!?t$NNc(B.
                    465: \EG Examples of simple operations on numbers.
1.1       noro      466: @item mat
1.3       noro      467: \JP $B9TNs$K4X$9$k4JC1$J1i;;H!?t$NNc(B.
                    468: \EG Examples of simple operations on matrices.
1.1       noro      469: @item ratint
1.3       noro      470: \BJP
1.1       noro      471: $BM-M}H!?t$NITDj@QJ,(B. @samp{sp}, @samp{gr} $B$,I,MW(B. @code{ratint()} $B$H$$$&(B
                    472: $BH!?t$,Dj5A$5$l$F$$$k$,(B, $B$=$NJV$97k2L$O$d$dJ#;($G$"$k(B. $BNc$G@bL@$9$k(B.
1.3       noro      473: \E
                    474: \BEG
                    475: Indefinite integration of rational functions.  For this,
                    476: files @samp{sp} and @samp{gr} is necessary.  A function @code{ratint()}
                    477: is defined.  Its returns a rather complex result.
                    478: \E
1.1       noro      479: @example
                    480: [0] load("gr")$
                    481: [45] load("sp")$
                    482: [84] load("ratint")$
                    483: [102] ratint(x^6/(x^5+x+1),x);
                    484: [1/2*x^2,
1.11      noro      485: [[(#2)*log(-140*x+(-2737*#2^2+552*#2-131)),
                    486: 161*t#2^3-23*t#2^2+15*t#2-1],
1.1       noro      487: [(#1)*log(-5*x+(-21*#1-4)),21*t#1^2+3*t#1+1]]]
                    488: @end example
1.3       noro      489: \BJP
1.1       noro      490: $B$3$NNc$G$O(B, @code{x^6/(x^5+x+1)} $B$NITDj@QJ,$N7W;;$r9T$C$F$$$k(B.
                    491: $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,
                    492: $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,
                    493: @code{[root*log(poly),defpoly]} $B$H$$$&7A$r$7$F$$$k(B. $B$3$l$O(B, $BITDj@QJ,$K(B
                    494: $B$*$$$F$O(B, @code{defpoly} $B$NA4$F$N:,(B @code{root} $B$KBP$7$F(B @code{root*log(poly)}
                    495: $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
                    496: @code{root} $B$r4^$s$G$$$F(B, @code{root} $B$rF~$lBX$($k>l9g$K$O(B @code{poly}
                    497: $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
                    498: $B3F@.J,$KBP$7$F9T$C$F(B, $BA4$F$rB-$79g$o$;$?$b$N$,BP?tItJ,$H$J$k(B.
1.3       noro      499: \E
                    500: \BEG
                    501: In this example, indefinite integral of the rational function
                    502:  @code{x^6/(x^5+x+1)} is computed.
                    503: The result is a list which comprises two elements:
                    504: The first element is the rational part of the integral;
                    505: The second part is the logarithmic part of the integral.
                    506: The logarithmic part is again a list which comprises finite number of
                    507: elements, each of which is of form @code{[root*log(poly),defpoly]}.
                    508: This pair should be interpreted to sum up
                    509: the expression @code{root*log(poly)}
                    510: through all @b{root}'s @code{root}'s of the @code{defpoly}.
                    511: Here, @code{poly} contains @code{root}, and substitution for @code{root}
                    512: is equally applied to @code{poly}.
                    513: The logarithmic part in total is obtained by applying such
                    514: interpretation to all element pairs in the second element of the
                    515: result and then summing them up all.
                    516: \E
1.1       noro      517: @item primdec
1.3       noro      518: \BJP
1.11      noro      519: $BM-M}?tBN>e$NB?9`<0%$%G%"%k$N=`AG%$%G%"%kJ,2r$H$=$N:,4p$NAG%$%G%"%kJ,2r(B
1.4       noro      520: (@pxref{primadec primedec}).
1.3       noro      521: \E
                    522: \BEG
                    523: Primary ideal decomposition of polynomial ideals and prime compotision
1.11      noro      524: of radicals over the rationals (@pxref{primadec primedec}).
                    525: \E
                    526: @item primdec_mod
                    527: \BJP
                    528: $BM-8BBN>e$NB?9`<0%$%G%"%k$N:,4p$NAG%$%G%"%kJ,2r(B
                    529: (@pxref{primedec_mod}).
                    530: \E
                    531: \BEG
                    532: Prime decomposition of radicals of polynomial ideals
                    533: over finite fields (@pxref{primedec_mod}).
1.4       noro      534: \E
1.12    ! noro      535: @item bfct
        !           536: \BJP
        !           537: b $B4X?t$N7W;;(B.
        !           538: \E
        !           539: \BEG
        !           540: Computation of b-function.
        !           541: \E
        !           542: (@pxref{bfunction generic_bfct}).
1.1       noro      543: @end table
                    544:
1.3       noro      545: \BJP
1.1       noro      546: @node $BF~NO%$%s%?%U%'!<%9(B,,, $BIUO?(B
                    547: @section $BF~NO%$%s%?%U%'!<%9(B
1.3       noro      548: \E
                    549: \BEG
                    550: @node Input interfaces,,, Appendix
                    551: @section Input interfaces
                    552: \E
1.1       noro      553:
1.3       noro      554: \BJP
1.7       noro      555: DOS $BHG(B, Windows $BHG$G$OF~NO%$%s%?%U%'!<%9$H(B
1.1       noro      556: $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
                    557: $B$3$N$h$&$J5!G=$OAH$_9~$^$l$F$$$J$$$,(B, $B0J2<$G=R$Y$k$h$&$JF~NO%$%s%?%U%'!<%9(B
                    558: $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.
                    559: ftp server $B$K4X$7$F$O(B @xref{$BF~<jJ}K!(B}.
1.7       noro      560:
                    561: Windows $BHG(B @samp{asirgui.exe} $B$O(B, $BDL>o$N(B Windows $B$K$*$1$k47=,$H$O0[$J$k(B
                    562: $B7A$N%3%T!<%Z!<%9%H5!G=$rDs6!$7$F$$$k(B. Window $B>e$KI=<($5$l$F$$$kJ8;zNs(B
                    563: $B$KBP$7%^%&%9:8%\%?%s$r2!$7$J$,$i%I%i%C%0$9$k$HJ8;zNs$,A*Br$5$l$k(B.
                    564: $B%\%?%s$rN%$9$HH?E>I=<($,85$KLa$k$,(B, $B$=$NJ8;zNs$O%3%T!<%P%C%U%!$K(B
                    565: $B<h$j9~$^$l$F$$$k(B. $B%^%&%91&%\%?%s$r2!$9$H(B, $B%3%T!<%P%C%U%!Fb$NJ8;zNs$,(B
                    566: $B8=:_$N%+!<%=%k0LCV$KA^F~$5$l$k(B. $B4{$KI=<($5$l$?ItJ,$O(B readonly
                    567: $B$G$"$j(B, $B$=$NItJ,$r2~JQ$G$-$J$$$3$H$KCm0U$7$FM_$7$$(B.
1.3       noro      568: \E
                    569: \BEG
1.7       noro      570: A command line editing facility and a history
                    571: substitution facility are built-in for DOS, Windows version
1.3       noro      572: of @b{Asir}. UNIX versions of @b{Asir} do not have such built-in facilites.
                    573: Instead, the following input interfaces are prepared. This are also available
                    574: from our ftp server. As for our ftp server @xref{How to get Risa/Asir}.
1.7       noro      575:
                    576: On Windows, @samp{asirgui.exe} has a copy and paste functionality
                    577: different from Windows convention. Press the left button of the mouse
                    578: and drag the mouse cursor on a text, then the text is selected and is
                    579: highlighted.  When the button is released, highlighted text returns to
                    580: the normal state and it is saved in the copy buffer.  If the right
                    581: button is pressed, the text in the copy buffer is inserted at the
                    582: current text cursor position. Note that the existing text is read-only and
                    583: one cannot modify it.
1.3       noro      584: \E
1.1       noro      585:
                    586: @menu
                    587: * fep::
                    588: * asir.el::
                    589: @end menu
                    590:
1.3       noro      591: \JP @node fep,,, $BF~NO%$%s%?%U%'!<%9(B
                    592: \EG @node fep,,, Input interfaces
1.1       noro      593: @subsection fep
                    594:
                    595: @noindent
1.3       noro      596: \BJP
1.1       noro      597: 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
                    598: $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
                    599: $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
                    600: $BCV$-49$($,2DG=$K$J$k(B.
1.3       noro      601: \E
                    602: \BEG
                    603: Fep is a general purpose front end processor. The author is
                    604: K. Utashiro (SRA Inc.).
                    605:
                    606: Under fep,
                    607: emacs- or vi-like command line editing and csh-like history substitution are
                    608: available for UNIX commands, including @samp{asir}.
                    609: \E
1.1       noro      610: @example
                    611: % fep asir
                    612: ...
                    613: [0] fctr(x^5-1);
                    614: [[1,1],[x-1,1],[x^4+x^3+x^2+x+1,1]]
                    615: [1] !!                              /* !!+Return                      */
1.3       noro      616: \BJP
1.11      noro      617: fctr(x^5-1);                        /* $BD>A0$NF~NO$,8=$l$FJT=8$G$-$k(B */
                    618: ...                                 /* $BJT=8(B+Return                  */
1.3       noro      619: \E
                    620: \BEG
                    621: fctr(x^5-1);                        /* The last input appears.        */
                    622: ...                                 /* Edit+Return                    */
                    623: \E
1.1       noro      624: fctr(x^5+1);
                    625: [[1,1],[x+1,1],[x^4-x^3+x^2-x+1,1]]
                    626: @end example
                    627:
                    628: @noindent
1.3       noro      629: \BJP
1.1       noro      630: 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
                    631: $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
                    632: $B$,(B, ftp $B$GF~<j2DG=$G$"$k(B.
1.3       noro      633: \E
                    634: \BEG
                    635: Fep is a free software and the source is available. However
                    636: machines or operating systems on which the original one can run are limited.
                    637: The modified version by us running on several unsupported environments
                    638: is available from our ftp server.
                    639: \E
1.1       noro      640:
1.3       noro      641: \JP @node asir.el,,, $BF~NO%$%s%?%U%'!<%9(B
                    642: \EG @node asir.el,,, Input interfaces
1.1       noro      643: @subsection asir.el
                    644:
                    645: @noindent
1.3       noro      646: \BJP
1.1       noro      647: @samp{asir.el} $B$O(B, @b{Asir} $B$N(B GNU Emacs $B%$%s%?%U%'!<%9$G$"$k(B ($BCx<T$O(B
                    648: $B5\Eh8w<#;a(B (@code{YVE25250@@pcvan.or.jp}).  @samp{asir.el} $B$K$*$$$F$O(B,
                    649: $BDL>o$N(B emacs $B$G2DG=$JJT=85!G=$NB>$K(B, $B%U%!%$%kL>(B, $B%3%^%s%IL>$N(B completion
                    650: $B$,<B8=$5$l$F$$$k(B.
1.3       noro      651: \E
                    652: \BEG
                    653: @samp{asir.el} is a GNU Emacs interface for @b{Asir}.
                    654: The author is Koji Miyajima (@code{YVE25250@@pcvan.or.jp}).
                    655: In @samp{asir.el}, completion of file names and command names is
                    656: realized other than the ordinary editing functions
                    657: which are available on Emacs.
                    658: \E
1.1       noro      659:
                    660: @noindent
1.3       noro      661: \BJP
1.1       noro      662: @samp{asir.el} $B$O(B PC-VAN $B$G(B
                    663: $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
                    664: $BF~<j2DG=$G$"$k(B.
1.3       noro      665: \E
                    666: \BEG
                    667: @samp{asir.el} is distributed on PC-VAN. The version where several
                    668: changes have been made according to the current version of @b{Asir}
                    669: is available via ftp.
                    670: \E
1.1       noro      671:
                    672: @noindent
1.3       noro      673: \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.
                    674: \BEG
                    675: The way of setting up and the usage can be found at the top of
                    676: @samp{asir.el}.
                    677: \E
1.6       noro      678:
                    679: \BJP
                    680: @node $B%i%$%V%i%j%$%s%?%U%'!<%9(B,,, $BIUO?(B
                    681: @section $B%i%$%V%i%j%$%s%?%U%'!<%9(B
                    682: \E
                    683: \BEG
                    684: @node Library interfaces,,, Appendix
                    685: @section Library interfaces
                    686: \E
                    687:
                    688: \BJP
                    689: @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
                    690: $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,
                    691: GC $B%i%$%V%i%j$G$"$k(B @samp{libasir-gc.a} $B$H$H$b$K(B @b{OpenXM}
                    692: distribution (@code{http://www.math.kobe-u.ac.jp/OpenXM}) $B$K4^$^$l$k(B.
                    693: $B8=>u$G$O(B@b{OpenXM} $B%$%s%?%U%'!<%9$N$_$,8x3+$5$l$F$$$k$?$a(B, $B0J2<$G$O(B
                    694: @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
                    695: @code{$OpenXM_HOME}$B$H=q$/(B. $B%i%$%V%i%j%U%!%$%k$OA4$F(B @samp{$OpenXM_HOME/lib}
                    696: $B$K$*$+$l$F$$$k(B. $B%i%$%V%i%j$K$O0J2<$N(B 3 $B<oN`$,$"$k(B.
                    697: \E
                    698: \BEG
                    699: It is possible to link an @b{Asir} library to use the functionalities of
                    700: @b{Asir} from other programs.
                    701: The necessary libraries are included in the @b{OpenXM} distribution
1.8       noro      702: @ifhtml
                    703: (<A HREF="http://www.math.kobe-u.ac.jp/OpenXM">OpenXM </A>)
                    704: @end ifhtml
1.6       noro      705: (@code{http://www.math.kobe-u.ac.jp/OpenXM}).
                    706: At present only the @b{OpenXM} interfaces are available. Here we assume
                    707: that @b{OpenXM} is already installed. In the following
                    708: @code{$OpenXM_HOME} denotes the @b{OpenXM} root directory.
                    709: All the library files are placed in @samp{$OpenXM_HOME/lib}.
                    710: There are three kinds of libraries as follows.
                    711: \E
                    712: @itemize @bullet
                    713: @item @samp{libasir.a}
                    714: @*
                    715: \BJP
                    716: @b{PARI}, @b{X11} $B4XO"$N5!G=$r4^$^$J$$(B.
                    717: $B%j%s%/$K$O(B @samp{libasir-gc.a} $B$N$_$,I,MW(B.
                    718: \E
                    719: \BEG
                    720: It does not contain the functionalities related to @b{PARI} and @b{X11}.
                    721: Only @samp{libasir-gc.a} is necessary for linking.
                    722: \E
                    723:
                    724: @item @samp{libasir_pari.a}
                    725: @*
                    726: \BJP
                    727: @b{X11} $B4XO"$N5!G=$r4^$^$J$$(B. $B%j%s%/$K$O(B @samp{libasir-gc.a},
                    728: @samp{libpari.a} $B$,I,MW(B.
                    729: \E
                    730: \BEG
                    731: It does not contain the functionalities related to @b{X11}.
                    732: @samp{libasir-gc.a}, @samp{libpari.a} are necessary for linking.
                    733: \E
                    734:
                    735: @item @samp{libasir_pari_X.a}
                    736: @*
                    737: \BJP
                    738: $BA4$F$N5!G=$r4^$`(B. $B%j%s%/$K$O(B @samp{libasir-gc.a}, @samp{libpari.a}
                    739: $B$*$h$S(B @b{X11} $B4XO"$N%i%$%V%i%j;XDj$,I,MW(B.
                    740: \E
                    741: \BEG
                    742: All the functionalities are included. @samp{libasir-gc.a}, @samp{libpari.a}
                    743: and libraries related to @b{X11} are necessary for linking.
                    744: \E
                    745: @end itemize
                    746: \BJP
                    747: $BDs6!$5$l$F$$$k4X?t$O0J2<$NDL$j$G$"$k(B.
                    748: \E
                    749: @itemize @bullet
                    750: @item @code{int asir_ox_init(int @var{byteorder})}
                    751: @*
                    752: \BJP
                    753: $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
                    754: $B$X$NE83+J}K!$r;XDj$9$k(B. @var{byteorder} $B$,(B 0 $B$N$H$-%^%7%s8GM-$N(B byteorder
                    755: $B$rMQ$$$k(B. 1 $B$N$H$-(B network byteorder $B$rMQ$$$k(B. $B=i4|2=$K@.8y$7$?>l9g(B 0,
                    756: $B<:GT$N;~(B -1 $B$rJV$9(B.
                    757: \E
                    758: \BEG
                    759: It initializes the library.
                    760: @var{byteorder} specifies the format of binary CMO data on the memory.
                    761: If @var{byteorder} is 0, the byteorder native to the machine is used.
                    762: If @var{byteorder} is 1, the network byteorder is used. It returns
                    763: 0 if the initialization is successful, -1 otherwise.
                    764: \E
                    765:
                    766: @item @code{void asir_ox_push_cmo(void *@var{cmo})}
                    767: @*
                    768: \BJP
                    769: $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
                    770: push $B$9$k(B.
                    771: \E
                    772: \BJP
                    773: It converts CMO data pointed by @var{cmo} into an @b{Asir} object and
                    774: it pushes the object onto the stack.
                    775: \E
                    776:
                    777: @item @code{int asir_ox_peek_cmo_size()}
                    778: @*
                    779: \BJP
                    780: $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.
                    781: $BJQ49ITG=$J>l9g$K$O(B -1 $B$rJV$9(B.
                    782: \E
                    783: \BEG
                    784: It returns the size of the object at the top of the stack as CMO object.
                    785: It returns -1 if the object cannot be converted into CMO object.
                    786: \E
                    787:
                    788: @item @code{int asir_ox_pop_cmo(void *@var{cmo}, int @var{limit})}
                    789: @*
                    790: \BJP
                    791: $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
                    792: $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
                    793: @var{limit} $B$h$jBg$-$$>l9g$K$O(B -1 $B$rJV$9(B. @var{cmo} $B$OD9$5$,>/$J$/$H$b(B
                    794: @var{limit}$B%P%$%H$NG[Ns$r;X$9I,MW$,$"$k(B. $BJQ49$5$l$?(B CMO $B$r<}MF$G$-$k(B
                    795: $BG[Ns$ND9$5$rCN$k$?$a$K(B, @code{asir_ox_peek_cmo_size} $B$rMQ$$$k(B.
                    796: \E
                    797: \BEG
                    798: It pops an @b{Asir} object at the top of the stack and it converts
                    799: the object into CMO data. If the size of the CMO data is not greater
                    800: than @var{limit}, then the data is written in @var{cmo} and the size
                    801: is returned. Otherwise -1 is returned. The size of the array pointed
                    802: by @var{cmo} must be at least @var{limit}. In order to know the size
                    803: of converted CMO data in advance @code{asir_ox_peek_cmo_size} is called.
                    804: \E
                    805:
                    806: @item @code{void asir_ox_push_cmd(int @var{cmd})}
                    807: @*
                    808: \BJP
                    809: $B%9%?%C%/%^%7%s%3%^%s%I(B @var{cmd} $B$r<B9T$9$k(B.
                    810: \E
                    811: \BEG
                    812: It executes a stack machine command @var{cmd}.
                    813: \E
                    814:
                    815: @item @code{void asir_ox_execute_string(char *@var{str})}
                    816: @*
                    817: \BJP
                    818: @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.
                    819: \E
                    820: \BEG
                    821: It evaluates @var{str} as a string written in the @b{Asir} user language.
                    822: The result is pushed onto the stack.
                    823: \E
                    824: @end itemize
                    825:
                    826: \BJP
                    827: include $B$9$Y$-(B header file $B$O(B @samp{$OpenXM_HOME/include/asir/ox.h} $B$G$"$k(B.
                    828: $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
                    829: $B$$$k(B.
                    830: $B<!$NNc(B (@samp{$OpenXM_HOME/doc/oxlib/test3.c}) $B$O>e5-4X?t$N;HMQ(B
                    831: $BK!$r<($9(B.
                    832: \E
                    833: \BEG
                    834: A program calling the above functions should include
                    835: @samp{$OpenXM_HOME/include/asir/ox.h}.
                    836: In this file all the definitions of @b{OpenXM} tags and commands.
                    837: The following example
                    838: (@samp{$OpenXM_HOME/doc/oxlib/test3.c}) illustrates the usage of
                    839: the above functions.
                    840: \E
                    841:
                    842: @example
                    843: #include <asir/ox.h>
                    844: #include <signal.h>
                    845:
                    846: main(int argc, char **argv)
                    847: @{
                    848:   char buf[BUFSIZ+1];
                    849:   int c;
                    850:   unsigned char sendbuf[BUFSIZ+10];
                    851:   unsigned char *result;
                    852:   unsigned char h[3];
                    853:   int len,i,j;
                    854:   static int result_len = 0;
                    855:   char *kwd,*bdy;
                    856:   unsigned int cmd;
                    857:
                    858:   signal(SIGINT,SIG_IGN);
                    859:   asir_ox_init(1); /* 1: network byte order; 0: native byte order */
                    860:   result_len = BUFSIZ;
                    861:   result = (void *)malloc(BUFSIZ);
                    862:   while ( 1 ) @{
                    863:     printf("Input>"); fflush(stdout);
                    864:     fgets(buf,BUFSIZ,stdin);
                    865:     for ( i = 0; buf[i] && isspace(buf[i]); i++ );
                    866:     if ( !buf[i] )
                    867:       continue;
                    868:     kwd = buf+i;
                    869:     for ( ; buf[i] && !isspace(buf[i]); i++ );
                    870:     buf[i] = 0;
                    871:     bdy = buf+i+1;
                    872:     if ( !strcmp(kwd,"asir") ) @{
                    873:       sprintf(sendbuf,"%s;",bdy);
                    874:       asir_ox_execute_string(sendbuf);
                    875:     @} else if ( !strcmp(kwd,"push") ) @{
                    876:       h[0] = 0;
                    877:       h[2] = 0;
                    878:       j = 0;
                    879:       while ( 1 ) @{
                    880:         for ( ; (c= *bdy) && isspace(c); bdy++ );
                    881:         if ( !c )
                    882:           break;
                    883:         else if ( h[0] ) @{
                    884:           h[1] = c;
                    885:           sendbuf[j++] = strtoul(h,0,16);
                    886:           h[0] = 0;
                    887:         @} else
                    888:           h[0] = c;
                    889:         bdy++;
                    890:       @}
                    891:       if ( h[0] )
                    892:         fprintf(stderr,"Number of characters is odd.\n");
                    893:       else @{
                    894:         sendbuf[j] = 0;
                    895:         asir_ox_push_cmo(sendbuf);
                    896:       @}
                    897:     @} else if ( !strcmp(kwd,"cmd") ) @{
                    898:       cmd = atoi(bdy);
                    899:       asir_ox_push_cmd(cmd);
                    900:     @} else if ( !strcmp(kwd,"pop") ) @{
                    901:       len = asir_ox_peek_cmo_size();
                    902:       if ( !len )
                    903:         continue;
                    904:       if ( len > result_len ) @{
                    905:         result = (char *)realloc(result,len);
                    906:         result_len = len;
                    907:       @}
                    908:       asir_ox_pop_cmo(result,len);
                    909:       printf("Output>"); fflush(stdout);
                    910:       printf("\n");
                    911:       for ( i = 0; i < len; ) @{
                    912:         printf("%02x ",result[i]);
                    913:         i++;
                    914:         if ( !(i%16) )
                    915:           printf("\n");
                    916:       @}
                    917:       printf("\n");
                    918:     @}
                    919:   @}
                    920: @}
                    921: @end example
                    922: \BJP
                    923: $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
                    924: @var{keyword} $B$K1~$8$F<!$N$h$&$JF0:n$r9T$&(B.
                    925: \E
                    926: \BEG
                    927: This program receives a line in the form of @var{keyword} @var{body}
                    928: as an input and it executes the following operations according to
                    929: @var{keyword}.
                    930: \E
                    931: @itemize @bullet
                    932: @item @code{asir} @var{body}
                    933: @*
                    934: \BJP
                    935: @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.
                    936: @code{asir_ox_execute_string()} $B$,MQ$$$i$l$k(B.
                    937: \E
                    938: \BEG
                    939: @var{body} is regarded as an expression written in the @b{Asir} user language.
                    940: The expression is evaluated and the result is pushed onto the stack.
                    941: @code{asir_ox_execute_string()} is called.
                    942: \E
                    943:
                    944: @item @code{push} @var{body}
                    945: @*
                    946: \BJP
                    947: @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
                    948: $B$7$F%9%?%C%/$K(B push $B$9$k(B. @code{asir_ox_push_cmo()} $B$,MQ$$$i$l$k(B.
                    949: \E
                    950: \BEG
                    951: @var{body} is regarded as a CMO object in the hexadecimal form.
                    952: The CMO object is converted into an @b{Asir} object and is pushed onto the stack.
                    953: @code{asir_ox_push_cmo()} is called.
                    954: \E
                    955:
                    956: @item @code{pop}
                    957: @*
                    958: \BJP
                    959: $B%9%?%C%/:G>e0L$N%*%V%8%'%/%H$r(B CMO $B$KJQ49$7(B, 16 $B?J?t$GI=<($9$k(B.
                    960: @code{asir_ox_peek_cmo_size()} $B$*$h$S(B @code{asir_ox_pop_cmo()} $B$,MQ$$$i$l$k(B.
                    961: \E
                    962: \BEG
                    963: The object at the top of the stack is converted into a CMO object
                    964: and it is displayed in the hexadecimal form.
                    965: @code{asir_ox_peek_cmo_size()} and @code{asir_ox_pop_cmo()} are called.
                    966: \E
                    967:
                    968: @item @code{cmd} @var{body}
                    969: @*
                    970: \BJP
                    971: @var{body} $B$r(B SM $B%3%^%s%I$H$_$J$7(B, $B<B9T$9$k(B.
                    972: @code{asir_ox_push_cmd()} $B$,MQ$$$i$l$k(B.
                    973: \E
                    974: \BEG
                    975: @var{body} is regarded as an SM command and the command is executed.
                    976: @code{asir_ox_push_cmd()} is called.
                    977: \E
                    978: @end itemize
1.1       noro      979:
1.3       noro      980: \BJP
1.1       noro      981: @node $BJQ99E@(B,,, $BIUO?(B
                    982: @section $BJQ99E@(B
1.3       noro      983: \E
                    984: \BEG
                    985: @node Changes,,, Appendix
                    986: @section Appendix
                    987: \E
1.1       noro      988:
                    989: @menu
                    990: * Version 990831::
                    991: * Version 950831::
                    992: * Version 940420::
                    993: @end menu
                    994:
1.3       noro      995: \JP @node Version 990831,,, $BJQ99E@(B
                    996: \EG @node Version 990831,,, Changes
1.1       noro      997: @subsection Version 990831
                    998:
1.3       noro      999: \BJP
1.1       noro     1000: 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,
                   1001: $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,
                   1002: plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B.
                   1003:
                   1004: $B5lHG$N%f!<%6$,$b$C$H$bCm0U$9$Y$-E@$O(B, $B5lHG$G:n$C$?(B bsave file $B$rFI$_9~$`(B
                   1005: $B>l9g$O(B @code{bload27} $B$r;H$&I,MW$,$"$k(B, $B$H$$$&E@$G$"$k(B.
1.3       noro     1006: \E
                   1007:
                   1008: \BEG
                   1009: Four years have passed since the last distribution.
                   1010: Though the look and feel seem unchanged, internally there are
                   1011: several changes such as 32-bit representation of bignums.
                   1012: Plotting facilities are not available on Windows.
                   1013:
                   1014: If you have files created by @code{bsave} on the older version,
                   1015: you have to use @code{bload27} to read such files.
                   1016: \E
1.1       noro     1017:
1.3       noro     1018: \JP @node Version 950831,,, $BJQ99E@(B
                   1019: \EG @node Version 950831,,, Changes
1.1       noro     1020: @subsection Version 950831
                   1021:
                   1022: @menu
1.3       noro     1023: \BJP
1.1       noro     1024: * $B%G%P%C%,(B($BJQ99(B)::
                   1025: * $BAH$_9~$_H!?t(B($BJQ99(B)::
                   1026: * $B%0%l%V%J4pDl(B($BJQ99(B)::
                   1027: * $B$=$NB>(B($BJQ99(B)::
1.3       noro     1028: \E
                   1029: \BEG
                   1030: * Debugger(Changes)::
                   1031: * Built-in functions(Changes)::
                   1032: * Groebner basis computation(Changes)::
                   1033: * Others(Changes)::
                   1034: \E
1.1       noro     1035: @end menu
                   1036:
1.3       noro     1037: \BJP
1.1       noro     1038: @node $B%G%P%C%,(B($BJQ99(B),,, Version 950831
                   1039: @subsubsection $B%G%P%C%,(B
1.3       noro     1040: \E
                   1041: \BEG
                   1042: @node Debugger(Changes),,, Version 950831
                   1043: @subsubsection Debugger
                   1044: \E
1.1       noro     1045:
                   1046: @itemize @bullet
                   1047: @item
1.3       noro     1048: \JP $BG$0U$N;~E@$K%G%P%C%0%b!<%I$KF~$l$k(B.
                   1049: \EG One can enter the debug mode anytime.
1.1       noro     1050: @item
1.3       noro     1051: \JP @code{finish} $B%3%^%s%I$NDI2C(B.
                   1052: \EG A command @code{finish} has been appended.
1.1       noro     1053: @item
1.3       noro     1054: \BJP
1.1       noro     1055: @code{up}, @code{down}, @code{frame} $B%3%^%s%I$K$h$k(B, $BG$0U$N%9%?%C%/%U%l!<%`(B
1.3       noro     1056: $B$N;2>H(B.
                   1057: \E
                   1058: \EG One can examine any stack frame with @code{up}, @code{down} and @code{frame}.
1.1       noro     1059: @item
1.3       noro     1060: \JP @code{trace} $B%3%^%s%I$NDI2C(B.
                   1061: \EG A command @code{trace} has been appended.
1.1       noro     1062: @end itemize
                   1063:
1.3       noro     1064: \BJP
1.1       noro     1065: @node $BAH$_9~$_H!?t(B($BJQ99(B),,, Version 950831
                   1066: @subsubsection $BAH$_9~$_H!?t(B
1.3       noro     1067: \E
                   1068: \BEG
                   1069: @node Built-in functions(Changes),,, Version 950831
                   1070: @subsubsection Built-in functions
                   1071: \E
1.1       noro     1072:
                   1073: @itemize @bullet
1.3       noro     1074: \BJP
1.1       noro     1075: @item
                   1076: @code{sdiv()} $B$J$I$K$*$1$k(B, $B<gJQ?t$N;XDj$N%5%]!<%H(B.
                   1077: @item
                   1078: @code{sdivm()} $B$J$I(B, $BM-8BBN>e$G$NB?9`<0=|;;$NDI2C(B.
                   1079: @item
                   1080: @code{det()}, @code{res()} $B$J$I$K$*$1$k(B, $BM-8BBN>e$G$N7W;;$N%5%]!<%H(B
                   1081: @item
                   1082: @code{vtol()} ($B%Y%/%H%k$+$i%j%9%H$X$NJQ49(B) $B$NDI2C(B.
                   1083: @item
                   1084: @code{map()} $B$NDI2C(B.
1.3       noro     1085: \E
                   1086: \BEG
                   1087: @item
                   1088: One can specify a main variable for @code{sdiv()} etc.
                   1089: @item
                   1090: Functions for polynomial division over finite fields
                   1091: such as @code{sdivm()} have been appended.
                   1092: @item
                   1093: @code{det()}, @code{res()} can produce results over finite fields.
                   1094: @item
                   1095: @code{vtol()}, conversion from a vector to a list has been appended.
                   1096: @item
                   1097: @code{map()} has been appended.
                   1098: \E
1.1       noro     1099: @end itemize
                   1100:
1.3       noro     1101: \BJP
1.1       noro     1102: @node $B%0%l%V%J4pDl(B($BJQ99(B),,, Version 950831
                   1103: @subsubsection $B%0%l%V%J4pDl(B
1.3       noro     1104: \E
                   1105: \BEG
                   1106: @node Groebner basis computation(Changes),,, Version 950831
                   1107: @subsubsection Groebner basis computation
                   1108: \E
1.1       noro     1109:
                   1110: @itemize @bullet
1.3       noro     1111: \BJP
1.1       noro     1112: @item
                   1113: $B%0%l%V%J4pDl7W;;5!G=$NAH$_9~$_H!?t2=(B.
                   1114: @item
                   1115: @code{grm()}, @code{hgrm()} $B$,(B @code{gr()}, @code{hgr()} $B$KJQ99(B.
                   1116: @item
                   1117: @code{gr()}, @code{hgr()} $B$K$*$$$F(B, $B9`=g=x$N;XDj$,I,MW$K$J$C$?(B.
                   1118: @item
                   1119: $B9`=g=x$N;XDjJ}K!$,3HD%$5$l$?(B.
                   1120: @item
                   1121: $BM-8BBN>e$N%0%l%V%J4pDl7W;;$N%5%]!<%H(B.
                   1122: @item
                   1123: $B4pDlJQ49$K$h$k<-=q<0=g=x%0%l%V%J4pDl7W;;$N%5%]!<%H(B.
                   1124: @item
                   1125: $B$$$/$D$+$N?7$7$$AH$_9~$_H!?t$NDs6!(B.
1.3       noro     1126: \E
                   1127: \BEG
                   1128: @item Functions for Groebner basis computation have been implemented
                   1129: as built-in functions.
                   1130: @item
                   1131: @code{grm()} and @code{hgrm()} have been changed to @code{gr()} and
                   1132: @code{hgr()} respectively.
                   1133: @item
                   1134: @code{gr()} and @code{hgr()} requires explicit specification of
                   1135: an ordering type.
                   1136: @item
                   1137: Extension of specification of a term ordering type.
                   1138: @item
                   1139: Groebner basis computations over finite fields.
                   1140: @item
                   1141: Lex order Groebner basis computation via a modular change of ordering algorithm.
                   1142: @item
                   1143: Several new built-in functions.
                   1144: \E
1.1       noro     1145: @end itemize
                   1146:
1.3       noro     1147: \BJP
1.1       noro     1148: @node $B$=$NB>(B($BJQ99(B),,, Version 950831
                   1149: @subsubsection $B$=$NB>(B
1.3       noro     1150: \E
                   1151: \BEG
                   1152: @node Others(Changes),,, Version 950831
                   1153: @subsubsection Others
                   1154: \E
1.1       noro     1155:
                   1156: @itemize @bullet
1.3       noro     1157: \BJP
1.1       noro     1158: @item
                   1159: $BJ,;67W;;MQ%D!<%k(B, $BH!?t$NDI2C(B.
                   1160: @item
                   1161: $BBe?tBN>e$N(B GCD $B7W;;$K$*$1$k%b%8%e%i7W;;$N1~MQ(B.
                   1162: @item
                   1163: $B%$%G%"%k$N=`AGJ,2r$N%5%]!<%H(B.
                   1164: @item
                   1165: Windows $B$X$N0\?"(B.
1.3       noro     1166: \E
                   1167: \BEG
                   1168: @item
                   1169: Implementation of tools for distributed computation.
                   1170: @item
                   1171: Application of modular computation for GCD computation over algebraic number
                   1172: fields.
                   1173: @item
                   1174: Implementation of primary decompostion of ideals.
                   1175: @item
                   1176: Porting to Windows.
                   1177: \E
1.1       noro     1178: @end itemize
                   1179:
1.3       noro     1180: \JP @node Version 940420,,, $BJQ99E@(B
                   1181: \EG @node Version 940420,,, Changes
1.1       noro     1182: @subsection Version 940420
                   1183:
                   1184: @noindent
1.3       noro     1185: \JP $B:G=i$N8x3+HG(B.
                   1186: \EG The first public verion.
1.1       noro     1187:
1.3       noro     1188: \BJP
1.1       noro     1189: @node $BJ88%(B,,, $BIUO?(B
                   1190: @section $BJ88%(B
1.3       noro     1191: \E
                   1192: \BEG
                   1193: @node References,,, Appendix
                   1194: @section References
                   1195: \E
1.1       noro     1196: @table @code
                   1197: @item [Batut et al.]
                   1198: Batut, C., Bernardi, D., Cohen, H., Olivier, M., "User's Guide to PARI-GP",
                   1199: 1993.
                   1200: @item [Becker,Weispfenning]
                   1201: Becker, T., Weispfenning, V., "Groebner Bases", Graduate Texts in Math. 141,
                   1202: Springer-Verlag, 1993.
                   1203: @item [Boehm,Weiser]
                   1204: Boehm, H., Weiser, M., "Garbage Collection in an Uncooperative
                   1205: Environment", Software Practice & Experience, September 1988, 807-820.
                   1206: @item [Gebauer,Moeller]
                   1207: Gebauer, R., Moeller, H. M., "An installation of Buchberger's algorithm",
                   1208: J. of Symbolic Computation 6, 275-286.
                   1209: @item [Giovini et al.]
                   1210: Giovini, A., Mora, T., Niesi, G., Robbiano, L., Traverso, C.,
                   1211: ""One sugar cube, please" OR Selection strategies in the Buchberger algorithm",
                   1212: Proc. ISSAC'91, 49-54.
                   1213: @item [Noro,Takeshima]
                   1214: Noro, M., Takeshima, T., "Risa/Asir -- A Computer Algebra System",
                   1215: Proc. ISSAC'92, 387-396.
                   1216: @item [Noro,Yokoyama]
1.3       noro     1217: Noro, M., Yokoyama, K., "A Modular Method to Compute the Rational Univariate
                   1218: Representation of Zero-Dimensional Ideals",
                   1219: J. Symb. Comp. 28/1 (1999), 243-263.
1.12    ! noro     1220: @item [Saito,Sturmfels,Takayama]
        !          1221: Saito, M., Sturmfels, B., Takayama, N.,
        !          1222: "Groebner deformations of hypergeometric differential equations",
        !          1223: Algorithms and Computation in Mathematics 6, Springer-Verlag (2000).
1.1       noro     1224: @item [Shimoyama,Yokoyama]
                   1225: Shimoyama, T., Yokoyama, K.,
                   1226: "Localization and primary decomposition of polynomial ideals",
1.3       noro     1227: J. Symb. Comp. 22 (1996), 247-277.
                   1228: @item [Shoup]
                   1229: Shoup, V., "A new polynomial factorization algorithm and its implementation",
                   1230: J. Symb. Comp. 20 (1995), 364-397.
1.1       noro     1231: @item [Traverso]
                   1232: Traverso, C., "Groebner trace algorithms", Proc. ISSAC '88(LNCS 358), 125-138.
1.3       noro     1233: @item [Weber]
                   1234: Weber, K., "The accelerated Integer GCD Algorithm", ACM TOMS, 21, 1(1995), 111-122.
1.11      noro     1235: @item [Yokoyama]
                   1236: Yokoyama, K., "Prime decomposition of polynomial ideals over finite fields",
                   1237: Proc. ICMS, (2002), 217-227.
1.1       noro     1238: @end table

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