Annotation of OpenXM/src/asir-doc/parts/appendix.texi, Revision 1.3
1.3 ! noro 1: @comment $OpenXM$
! 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::
16: * $BJQ99E@(B::
17: * $BJ88%(B::
1.3 ! noro 18: \E
! 19: \BEG
! 20: * Details of syntax::
! 21: * Files of user defined functions::
! 22: * Input interfaces::
! 23: * Changes::
! 24: * References::
! 25: \E
1.1 noro 26: @end menu
27:
1.3 ! noro 28: \BJP
1.1 noro 29: @node $BJ8K!$N>\:Y(B,,, $BIUO?(B
30: @section $BJ8K!$N>\:Y(B
1.3 ! noro 31: \E
! 32: \BEG
! 33: @node Details of syntax,,, Appendix
! 34: @section Details of syntax
! 35: \E
1.1 noro 36:
37: @example
1.3 ! noro 38: \BJP
! 39: <$B<0(B>:
1.1 noro 40: @samp{(}<$B<0(B>@samp{)}
41: <$B<0(B> <$BFs9`1i;;;R(B> <$B<0(B>
42: @samp{+} <$B<0(B>
43: @samp{-} <$B<0(B>
44: <$B:8JUCM(B>
45: <$B:8JUCM(B> <$BBeF~1i;;;R(B> <$B<0(B>
46: <$B:8JUCM(B> @samp{++}
47: <$B:8JUCM(B> @samp{--}
48: @samp{++} <$B:8JUCM(B>
49: @samp{--} <$B:8JUCM(B>
50: @samp{!} <$B<0(B>
51: <$B<0(B> @samp{?} <$B<0(B> @samp{:} <$B<0(B>
52: <$BH!?t(B> @samp{(} <$B<0JB$S(B> @samp{)}
1.2 noro 53: <$BH!?t(B> @samp{(} <$B<0JB$S(B> @samp{|} <$B%*%W%7%g%sJB$S(B> @samp{)}
1.1 noro 54: <$BJ8;zNs(B>
55: <$B;X?t%Y%/%H%k(B>
56: <$B%"%H%`(B>
57: <$B%j%9%H(B>
1.3 ! noro 58: \E
! 59: \BEG
! 60: <expression>:
! 61: @samp{(}<expression>@samp{)}
! 62: <expression> <binary operator> <expression>
! 63: @samp{+} <expression>
! 64: @samp{-} <expression>
! 65: <left value>
! 66: <left value> <assignment operator> <expression>
! 67: <left value> @samp{++}
! 68: <left value> @samp{--}
! 69: @samp{++} <left value>
! 70: @samp{--} <left value>
! 71: @samp{!} <expression>
! 72: <expression> @samp{?} <expression> @samp{:} <expression>
! 73: <function> @samp{(} <expr list> @samp{)}
! 74: <function> @samp{(} <expr list> @samp{|} <option list> @samp{)}
! 75: <string>
! 76: <exponent vector>
! 77: <atom>
! 78: <list>
! 79: \E
1.1 noro 80: @end example
1.3 ! noro 81: \JP (@xref{$B$5$^$6$^$J<0(B})
! 82: \EG (@xref{various expressions})
1.1 noro 83:
84: @example
1.3 ! noro 85: \BJP
1.1 noro 86: <$B:8JUCM(B>:
87: <$BJQ?t(B> [@samp{[}<$B<0(B>@samp{]}]*
1.3 ! noro 88: \E
! 89: \BEG
! 90: <left value>:
! 91: <program variable> [@samp{[}<expression>@samp{]}]*
! 92: \E
1.1 noro 93: @end example
94:
95: @example
1.3 ! noro 96: \BJP
1.1 noro 97: <$BFs9`1i;;;R(B>:
98: @samp{+} @samp{-} @samp{*} @samp{/} @samp{%} @samp{^}($BQQ(B)
1.3 ! noro 99: \E
! 100: \BEG
! 101: <binary operator>:
! 102: @samp{+} @samp{-} @samp{*} @samp{/} @samp{%} @samp{^}(exponentiation)
! 103: @samp{==} @samp{!=} @samp{<} @samp{>} @samp{<=} @samp{>=} @samp{&&} @samp{||}
! 104: \E
1.1 noro 105: @samp{==} @samp{!=} @samp{<} @samp{>} @samp{<=} @samp{>=} @samp{&&} @samp{||}
106: @end example
107:
108: @example
1.3 ! noro 109: \JP <$BBeF~1i;;;R(B>:
! 110: \EG <assignment operator>:
1.1 noro 111: @samp{=} @samp{+=} @samp{-=} @samp{*=} @samp{/=} @samp{%=} @samp{^=}
112: @end example
113:
114: @example
1.3 ! noro 115: \BJP
1.1 noro 116: <$B<0JB$S(B>:
117: <$B6u(B>
118: <$B<0(B> [@samp{,} <$B<0(B>]*
1.3 ! noro 119: \E
! 120: \BEG
! 121: <expr list>:
! 122: <empty>
! 123: <expression> [@samp{,} <expression>]*
! 124: \E
1.1 noro 125: @end example
1.2 noro 126:
127: @example
1.3 ! noro 128: \BJP
1.2 noro 129: <$B%*%W%7%g%s(B>:
1.3 ! noro 130: alphabet $B$G;O$^$kJ8;zNs(B @samp{=} <$B<0(B>
! 131: \E
! 132: \BEG
! 133: <option>:
! 134: Character sequence beginning with an alphabetical letter @samp{=} <expression>
! 135: \E
1.2 noro 136: @end example
137:
138: @example
1.3 ! noro 139: \BJP
1.2 noro 140: <$B%*%W%7%g%sJB$S(B>:
141: <$B%*%W%7%g%s(B>
142: <$B%*%W%7%g%s(B> [@samp{,} <$B%*%W%7%g%s(B>]*
1.3 ! noro 143: \E
! 144: \BEG
! 145: <option list>:
! 146: <option>
! 147: <option> [@samp{,} <option>]*
! 148: \E
1.2 noro 149: @end example
150:
1.1 noro 151:
152: @example
1.3 ! noro 153: \BJP
1.1 noro 154: <$B%j%9%H(B>:
155: @samp{[} <$B<0JB$S(B> @samp{]}
1.3 ! noro 156: \E
! 157: \BEG
! 158: <list>:
! 159: @samp{[} <expr list> @samp{]}
! 160: \E
1.1 noro 161: @end example
162:
163: @example
1.3 ! noro 164: \BJP
! 165: <$BJQ?t(B>:
1.1 noro 166: $BBgJ8;z$G;O$^$kJ8;zNs(B (X,Y,Japan $B$J$I(B)
1.3 ! noro 167: \E
! 168: \BEG
! 169: <program variable>:
! 170: Sequence of alphabetical letters or numeric digits or @code{_}
! 171: that begins with a capital alphabetical letter
! 172: (X,Y,Japan etc.)
! 173: \E
1.1 noro 174: @end example
1.3 ! noro 175: \JP (@xref{$BJQ?t$*$h$SITDj85(B})
! 176: \EG (@xref{variables and indeterminates})
1.1 noro 177:
178: @example
1.3 ! noro 179: \BJP
1.1 noro 180: <$BH!?t(B>:
181: $B>.J8;z$G;O$^$kJ8;zNs(B (fctr,gcd $B$J$I(B)
1.3 ! noro 182: \E
! 183: \BEG
! 184: <function>:
! 185: Sequence of alphabetical letters or numeric digits or @code{_}
! 186: that begins with a small alphabetical letter
! 187: (fctr,gcd etc.)
! 188: \E
1.1 noro 189: @end example
190:
191: @example
1.3 ! noro 192: \BJP
1.1 noro 193: <$B%"%H%`(B>:
194: <$BITDj85(B>
195: <$B?t(B>
1.3 ! noro 196: \E
! 197: \BEG
! 198: <atom>:
! 199: <indeterminate>
! 200: <number>
! 201: \E
1.1 noro 202: @end example
203:
204: @example
1.3 ! noro 205: \BJP
! 206: <$BITDj85(B>:
1.1 noro 207: $B>.J8;z$G;O$^$kJ8;zNs(B (a,bCD,c1_2 $B$J$I(B)
1.3 ! noro 208: \E
! 209: \BEG
! 210: <indeterminate>:
! 211: Sequence of alphabetical letters or numeric digits or @code{_}
! 212: that begin with a small alphabetical letter
! 213: (a,bCD,c1_2 etc.)
! 214: \E
1.1 noro 215: @end example
1.3 ! noro 216: \JP (@xref{$BJQ?t$*$h$SITDj85(B})
! 217: \EG (@xref{variables and indeterminates})
1.1 noro 218:
219: @example
1.3 ! noro 220: \BJP
! 221: <$B?t(B>:
1.1 noro 222: <$BM-M}?t(B>
223: <$BIbF0>.?t(B>
224: <$BBe?tE*?t(B>
225: <$BJ#AG?t(B>
1.3 ! noro 226: \E
! 227: \BEG
! 228: <number>:
! 229: <rational number>
! 230: <floating point number>
! 231: <algebraic number>
! 232: <complex number>
! 233: \E
1.1 noro 234: @end example
1.3 ! noro 235: \JP (@xref{$B?t$N7?(B})
! 236: \EG (@xref{Types of numbers})
1.1 noro 237:
238: @example
1.3 ! noro 239: \JP <$BM-M}?t(B>:
! 240: \EG <rational number>:
1.1 noro 241: 0, 1, -2, 3/4
242: @end example
243:
244: @example
1.3 ! noro 245: \JP <$BIbF0>.?t(B>:
! 246: \EG <floating point number>:
1.1 noro 247: 0.0, 1.2e10
248: @end example
249:
250: @example
1.3 ! noro 251: \JP <$BBe?tE*?t(B>:
! 252: \EG <algebraic number>:
1.1 noro 253: newalg(x^2+1), alg(0)^2+1
254: @end example
1.3 ! noro 255: \JP (@xref{$BBe?tE*?t$K4X$9$k1i;;(B})
! 256: \EG (@xref{Algebraic numbers})
1.1 noro 257:
258: @example
1.3 ! noro 259: \JP <$BJ#AG?t(B>:
! 260: \EG <complex number>:
1.1 noro 261: 1+@code{@@i}, 2.3*@code{@@i}
262: @end example
263:
264: @example
1.3 ! noro 265: \BJP
1.1 noro 266: <$BJ8;zNs(B>:
267: @samp{"} $B$G0O$^$l$?J8;zNs(B
1.3 ! noro 268: \E
! 269: \BEG
! 270: <string>:
! 271: character sequence enclosed by two @samp{"}'s.
! 272: \E
1.1 noro 273: @end example
274:
275: @example
1.3 ! noro 276: \BJP
! 277: <$B;X?t%Y%/%H%k(B>:
1.1 noro 278: @samp{<<} <$B<0JB$S(B> @samp{>>}
1.3 ! noro 279: \E
! 280: \BEG
! 281: <exponent vector>:
! 282: @samp{<<} <expr list> @samp{>>}
! 283: \E
1.1 noro 284: @end example
1.3 ! noro 285: \JP (@xref{$B%0%l%V%J4pDl$N7W;;(B})
! 286: \EG (@xref{Groebner basis computation})
1.1 noro 287:
288: @example
1.3 ! noro 289: \BJP
! 290: <$BJ8(B>:
1.1 noro 291: <$B<0(B> <$B=*C<(B>
292: <$BJ#J8(B>
293: @samp{break} <$B=*C<(B>
294: @samp{continue} <$B=*C<(B>
295: @samp{return} <$B=*C<(B>
296: @samp{return} <$B<0(B> <$B=*C<(B>
297: @samp{if} @samp{(} <$B<0JB$S(B> @samp{)} <$BJ8(B>
298: @samp{if} @samp{(} <$B<0JB$S(B> @samp{)} <$BJ8(B> @samp{else} <$BJ8(B>
299: @samp{for} @samp{(} <$B<0JB$S(B> @samp{;} <$B<0JB$S(B> @samp{;} <$B<0JB$S(B> @samp{)} <$BJ8(B>
300: @samp{do} <$BJ8(B> @samp{while} @samp{(} <$B<0JB$S(B> @samp{)} <$B=*C<(B>
301: @samp{while} @samp{(} <$B<0JB$S(B> @samp{)} <$BJ8(B>
302: @samp{def} <$BH!?t(B> @samp{(} <$B<0JB$S(B> @samp{)} @samp{@{} <$BJQ?t@k8@(B> <$BJ8JB$S(B> @samp{@}}
303: @samp{end(quit)} <$B=*C<(B>
1.3 ! noro 304: \E
! 305: \BEG
! 306: <statement>:
! 307: <expression> <terminator>
! 308: <compound statement>
! 309: @samp{break} <terminator>
! 310: @samp{continue} <terminator>
! 311: @samp{return} <terminator>
! 312: @samp{return} <expression> <terminator>
! 313: @samp{if} @samp{(} <expr list> @samp{)} <statement>
! 314: @samp{if} @samp{(} <expr list> @samp{)} <statement> @samp{else} <statement>
! 315: @samp{for} @samp{(} <expr list> @samp{;} <expr list> @samp{;} <expr list> @samp{)} <statement>
! 316: @samp{do} <statement> @samp{while} @samp{(} <expr list> @samp{)} <terminator>
! 317: @samp{while} @samp{(} <expr list> @samp{)} <statement>
! 318: @samp{def} <function> @samp{(} <expr list> @samp{)} @samp{@{} <variable declaration> <stat list> @samp{@}}
! 319: @samp{end(quit)} <terminator>
! 320: \E
1.1 noro 321: @end example
1.3 ! noro 322: \JP (@xref{$BJ8(B})
! 323: \EG (@xref{statements})
1.1 noro 324:
325: @example
1.3 ! noro 326: \JP <$B=*C<(B>:
! 327: \EG <terminator>:
1.1 noro 328: @samp{;} @samp{$}
329: @end example
330:
331: @example
1.3 ! noro 332: \BJP
1.1 noro 333: <$BJQ?t@k8@(B>:
334: [@samp{extern} <$BJQ?t(B> [@samp{,} <$BJQ?t(B>]* <$B=*C<(B>]*
1.3 ! noro 335: \E
! 336: \BEG
! 337: <variable declaration>:
! 338: [@samp{extern} <program variable> [@samp{,} <program variable>]* <terminator>]*
! 339: \E
1.1 noro 340: @end example
341:
342: @example
1.3 ! noro 343: \BJP
1.1 noro 344: <$BJ#J8(B>:
345: @samp{@{} <$BJ8JB$S(B> @samp{@}}
1.3 ! noro 346: \E
! 347: \BEG
! 348: <compound statement>:
! 349: @samp{@{} <stat list> @samp{@}}
! 350: \E
1.1 noro 351: @end example
352:
353: @example
1.3 ! noro 354: \BJP
1.1 noro 355: <$BJ8JB$S(B>:
356: [<$BJ8(B>]*
1.3 ! noro 357: \E
! 358: \BEG
! 359: <stat list>:
! 360: [<statement>]*
! 361: \E
1.1 noro 362: @end example
363:
1.3 ! noro 364: \BJP
1.1 noro 365: @node $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B,,, $BIUO?(B
366: @section $BE:IU$N%f!<%6Dj5AH!?t%U%!%$%k(B
1.3 ! noro 367: \E
! 368: \BEG
! 369: @node Files of user defined functions,,, Appendix
! 370: @section Files of user defined functions
! 371: \E
1.1 noro 372:
373: @noindent
1.3 ! noro 374: \BJP
1.1 noro 375: $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
376: $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
377: $B@bL@$9$k(B.
1.3 ! noro 378: \E
! 379: \BEG
! 380: There are several files of user defined functions under the standard
! 381: library directory. (@samp{/usr/local/lib/asir} by default.)
! 382: Here, we explain some of them.
! 383: \E
1.1 noro 384:
385: @table @samp
386: @item fff
1.3 ! noro 387: \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})
! 388: \EG Univariate factorizer over large finite fields (@xref{Finite fields})
1.1 noro 389: @item gr
1.3 ! noro 390: \JP $B%0%l%V%J4pDl7W;;%Q%C%1!<%8(B. (@xref{$B%0%l%V%J4pDl$N7W;;(B})
! 391: \EG Groebner basis package. (@xref{Groebner basis computation})
1.1 noro 392: @item sp
1.3 ! noro 393: \JP $BBe?tE*?t$N1i;;$*$h$S0x?tJ,2r(B, $B:G>.J,2rBN(B. (@xref{$BBe?tE*?t$K4X$9$k1i;;(B})
! 394: \EG Operations over algebraic numbers and factorization, Splitting fields. (@xref{Algebraic numbers})
1.1 noro 395: @item alpi
396: @itemx bgk
397: @itemx cyclic
398: @itemx katsura
399: @itemx kimura
1.3 ! noro 400: \JP $B%0%l%V%J4pDl7W;;$K$*$$$F(B, $B%Y%s%A%^!<%/$=$NB>$GMQ$$$i$l$kNc(B.
! 401: \EG Example polynomial sets for benchmarks of Groebner basis computation.
1.1 noro 402: (@xref{katsura hkatsura cyclic hcyclic})
403: @item defs.h
1.3 ! noro 404: \JP $B$$$/$D$+$N%^%/%mDj5A(B. (@xref{$B%W%j%W%m%;%C%5(B})
! 405: \EG Macro definitions. (@xref{preprocessor})
1.1 noro 406: @item fctrtest
1.3 ! noro 407: \BJP
1.1 noro 408: $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
409: $B=EJ#EY$NBg$-$$$$$/$D$+$NNc$r4^$`(B. $B$3$l$O(B, @code{load()} $B$9$k$H(B
410: $BD>$A$K7W;;$,;O$^$k(B. $BF~<j$7$?(B @b{Asir} $B$,@5$7$/F0:n$7$F$$$k$+$N(B
411: $B%F%9%H$K$b;H$&$3$H$,$G$-$k(B.
1.3 ! noro 412: \E
! 413: \BEG
! 414: Test program of factorization of integral polynomials.
! 415: It includes @samp{factor.tst} of REDUCE and several examples
! 416: for large multiplicity factors. If this file is @code{load()}'ed,
! 417: computation will begin immediately.
! 418: You may use it as a first test whether @b{Asir} at you hand runs
! 419: correctly.
! 420: \E
1.1 noro 421: @item fctrdata
1.3 ! noro 422: \BJP
1.1 noro 423: @samp{fctrtest} $B$G;H$o$l$F$$$kNc$r4^$`(B, $B0x?tJ,2r%F%9%HMQ$NNc(B.
424: @code{Alg[]} $B$K<}$a$i$l$F$$$kNc$O(B, @code{af()} (@xref{asq af}) $BMQ$NNc$G$"$k(B.
1.3 ! noro 425: \E
! 426: \BEG
! 427: This contains example polynomials for factorization. It includes
! 428: polynomials used in @samp{fctrtest}.
! 429: Polynomials contained in vector @code{Alg[]} is for the algebraic
! 430: factorization @code{af()} (@xref{asq af}).
! 431: \E
1.1 noro 432: @example
433: [45] load("sp")$
434: [84] load("fctrdata")$
435: [175] cputime(1)$
436: 0msec
437: [176] Alg[5];
438: x^9-15*x^6-87*x^3-125
439: 0msec
440: [177] af(Alg[5],[newalg(Alg[5])]);
441: [[1,1],[75*x^2+(10*#0^7-175*#0^4-470*#0)*x+(3*#0^8-45*#0^5-261*#0^2),1],
442: [75*x^2+(-10*#0^7+175*#0^4+395*#0)*x+(3*#0^8-45*#0^5-261*#0^2),1],
443: [25*x^2+(25*#0)*x+(#0^8-15*#0^5-87*#0^2),1],[x^2+(#0)*x+(#0^2),1],
444: [x+(-#0),1]]
445: 3.600sec + gc : 1.040sec
446: @end example
447: @item ifplot
1.3 ! noro 448: \BJP
1.1 noro 449: $BIA2h(B (@xref{ifplot conplot plot plotover}) $B$N$?$a$NNc(B. @code{IS[]} $B$K$OM-L>$J(B
450: $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,
451: $B%9%Z!<%I(B ($B$i$7$-(B) $B6J@~$NNc$,F~$C$F$$$k(B.
1.3 ! noro 452: \E
! 453: \BEG
! 454: Examples for plotting (@xref{ifplot conplot plot plotover}).
! 455: Vector @code{IS[]} contains several famous algebraic curves.
! 456: Variables @code{H, D, C, S} contains something like the suits
! 457: (Heart, Diamond, Club, and Spade) of cards.
! 458: \E
1.1 noro 459: @item num
1.3 ! noro 460: \JP $B?t$K4X$9$k4JC1$J1i;;H!?t$NNc(B.
! 461: \EG Examples of simple operations on numbers.
1.1 noro 462: @item mat
1.3 ! noro 463: \JP $B9TNs$K4X$9$k4JC1$J1i;;H!?t$NNc(B.
! 464: \EG Examples of simple operations on matrices.
1.1 noro 465: @item ratint
1.3 ! noro 466: \BJP
1.1 noro 467: $BM-M}H!?t$NITDj@QJ,(B. @samp{sp}, @samp{gr} $B$,I,MW(B. @code{ratint()} $B$H$$$&(B
468: $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 469: \E
! 470: \BEG
! 471: Indefinite integration of rational functions. For this,
! 472: files @samp{sp} and @samp{gr} is necessary. A function @code{ratint()}
! 473: is defined. Its returns a rather complex result.
! 474: \E
1.1 noro 475: @example
476: [0] load("gr")$
477: [45] load("sp")$
478: [84] load("ratint")$
479: [102] ratint(x^6/(x^5+x+1),x);
480: [1/2*x^2,
481: [[(#2)*log(-140*x+(-2737*#2^2+552*#2-131)),161*t#2^3-23*t#2^2+15*t#2-1],
482: [(#1)*log(-5*x+(-21*#1-4)),21*t#1^2+3*t#1+1]]]
483: @end example
1.3 ! noro 484: \BJP
1.1 noro 485: $B$3$NNc$G$O(B, @code{x^6/(x^5+x+1)} $B$NITDj@QJ,$N7W;;$r9T$C$F$$$k(B.
486: $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,
487: $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,
488: @code{[root*log(poly),defpoly]} $B$H$$$&7A$r$7$F$$$k(B. $B$3$l$O(B, $BITDj@QJ,$K(B
489: $B$*$$$F$O(B, @code{defpoly} $B$NA4$F$N:,(B @code{root} $B$KBP$7$F(B @code{root*log(poly)}
490: $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
491: @code{root} $B$r4^$s$G$$$F(B, @code{root} $B$rF~$lBX$($k>l9g$K$O(B @code{poly}
492: $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
493: $B3F@.J,$KBP$7$F9T$C$F(B, $BA4$F$rB-$79g$o$;$?$b$N$,BP?tItJ,$H$J$k(B.
1.3 ! noro 494: \E
! 495: \BEG
! 496: In this example, indefinite integral of the rational function
! 497: @code{x^6/(x^5+x+1)} is computed.
! 498: The result is a list which comprises two elements:
! 499: The first element is the rational part of the integral;
! 500: The second part is the logarithmic part of the integral.
! 501: The logarithmic part is again a list which comprises finite number of
! 502: elements, each of which is of form @code{[root*log(poly),defpoly]}.
! 503: This pair should be interpreted to sum up
! 504: the expression @code{root*log(poly)}
! 505: through all @b{root}'s @code{root}'s of the @code{defpoly}.
! 506: Here, @code{poly} contains @code{root}, and substitution for @code{root}
! 507: is equally applied to @code{poly}.
! 508: The logarithmic part in total is obtained by applying such
! 509: interpretation to all element pairs in the second element of the
! 510: result and then summing them up all.
! 511: \E
1.1 noro 512: @item primdec
1.3 ! noro 513: \BJP
1.1 noro 514: $BB?9`<0%$%G%"%k$N=`AG%$%G%"%kJ,2r$H$=$N:,4p$NAG%$%G%"%kJ,2r(B
515: (@code{[Shimoyama,Yokoyama]} $B;2>H(B).
516: $B=`AG%$%G%"%kJ,2r$O(B @code{primadec()}, $BAG%$%G%"%kJ,2r$O(B, @code{primedec()}
517: $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.
518: $BM-M}<078?t$NB?9`<0%$%G%"%k$d(B, 0$B<!85$G$J$$%$%G%"%k$b07$($k(B.
519: @code{primadec} $B$O(B, $B=`AG@.J,$H$=$NAG@.J,$N%Z%"%j%9%H$N%j%9%H$rJV$9(B.
520: @code{primedec} $B$O(B, $BAG@.J,$N%j%9%H$rJV$9(B.
521: $B$=$N7k2L$O$$$:$l$b%0%l%V%J4pDl$K$J$C$F$$$k$,(B, $B$=$N(B
522: $BJQ?t=g=x$O(B, $B$=$l$>$lBg0hJQ?t(B @code{PRIMAORD}, @code{PRIMEORD}
523: $B$NCM(B 0,1 $B$"$k$$$O(B 2 $B$K$h$C$F7h$^$k(B.
1.3 ! noro 524: \E
! 525: \BEG
! 526: Primary ideal decomposition of polynomial ideals and prime compotision
! 527: of radicals
! 528: (Refer to @code{[Shimoyama,Yokoyama]}).
! 529: @code{primadec()}, @code{primedec()} are the function for primary
! 530: ideal decomposition and prime decomposition of the radical respectively.
! 531: The arguments are a list of polynomials and a list of variables.
! 532: These functions accept ideals with rational function coefficients
! 533: and non zero-dimenstional ideals.
! 534: @code{primadec} returns the list of pair lists consisting a primary component
! 535: and its associated prime.
! 536: @code{primedec} returns the list of prime components.
! 537: Each component is a Groebner basis and the corresponding term order
! 538: is indicated by the global variables @code{PRIMAORD}, @code{PRIMEORD}
! 539: respectively.
! 540: \E
1.1 noro 541: @example
542: [84] load("primdec")$
543: [102] primedec([p*q*x-q^2*y^2+q^2*y,-p^2*x^2+p^2*x+p*q*y,
544: (q^3*y^4-2*q^3*y^3+q^3*y^2)*x-q^3*y^4+q^3*y^3,
545: -q^3*y^4+2*q^3*y^3+(-q^3+p*q^2)*y^2],[p,q,x,y]);
546: [[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]]
547: [103] primadec([x,z*y,w*y^2,w^2*y-z^3,y^3],[x,y,z,w]);
548: [[[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]]]
549: @end example
550: @end table
551:
1.3 ! noro 552: \BJP
1.1 noro 553: @node $BF~NO%$%s%?%U%'!<%9(B,,, $BIUO?(B
554: @section $BF~NO%$%s%?%U%'!<%9(B
1.3 ! noro 555: \E
! 556: \BEG
! 557: @node Input interfaces,,, Appendix
! 558: @section Input interfaces
! 559: \E
1.1 noro 560:
1.3 ! noro 561: \BJP
1.1 noro 562: $B4{$K=R$Y$?$h$&$K(B, DOS $BHG(B, Windows $BHG(B, Macintosh $BHG$G$OF~NO%$%s%?%U%'!<%9$H(B
563: $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
564: $B$3$N$h$&$J5!G=$OAH$_9~$^$l$F$$$J$$$,(B, $B0J2<$G=R$Y$k$h$&$JF~NO%$%s%?%U%'!<%9(B
565: $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.
566: ftp server $B$K4X$7$F$O(B @xref{$BF~<jJ}K!(B}.
1.3 ! noro 567: \E
! 568: \BEG
! 569: As already mentioned a command line editing facility and a history
! 570: substitution facility are built-in for DOS, Windows Macintosh version
! 571: of @b{Asir}. UNIX versions of @b{Asir} do not have such built-in facilites.
! 572: Instead, the following input interfaces are prepared. This are also available
! 573: from our ftp server. As for our ftp server @xref{How to get Risa/Asir}.
! 574: \E
1.1 noro 575:
576: @menu
577: * fep::
578: * asir.el::
579: @end menu
580:
1.3 ! noro 581: \JP @node fep,,, $BF~NO%$%s%?%U%'!<%9(B
! 582: \EG @node fep,,, Input interfaces
1.1 noro 583: @subsection fep
584:
585: @noindent
1.3 ! noro 586: \BJP
1.1 noro 587: 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
588: $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
589: $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
590: $BCV$-49$($,2DG=$K$J$k(B.
1.3 ! noro 591: \E
! 592: \BEG
! 593: Fep is a general purpose front end processor. The author is
! 594: K. Utashiro (SRA Inc.).
! 595:
! 596: Under fep,
! 597: emacs- or vi-like command line editing and csh-like history substitution are
! 598: available for UNIX commands, including @samp{asir}.
! 599: \E
1.1 noro 600: @example
601: % fep asir
602: ...
603: [0] fctr(x^5-1);
604: [[1,1],[x-1,1],[x^4+x^3+x^2+x+1,1]]
605: [1] !! /* !!+Return */
1.3 ! noro 606: \BJP
1.1 noro 607: fctr(x^5-1); /* $BD>A0$NF~NO$,8=$l$k$FJT=8$G$-$k(B */
608: ... /* $BJT=8(B+Return */
1.3 ! noro 609: \E
! 610: \BEG
! 611: fctr(x^5-1); /* The last input appears. */
! 612: ... /* Edit+Return */
! 613: \E
1.1 noro 614: fctr(x^5+1);
615: [[1,1],[x+1,1],[x^4-x^3+x^2-x+1,1]]
616: @end example
617:
618: @noindent
1.3 ! noro 619: \BJP
1.1 noro 620: 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
621: $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
622: $B$,(B, ftp $B$GF~<j2DG=$G$"$k(B.
1.3 ! noro 623: \E
! 624: \BEG
! 625: Fep is a free software and the source is available. However
! 626: machines or operating systems on which the original one can run are limited.
! 627: The modified version by us running on several unsupported environments
! 628: is available from our ftp server.
! 629: \E
1.1 noro 630:
1.3 ! noro 631: \JP @node asir.el,,, $BF~NO%$%s%?%U%'!<%9(B
! 632: \EG @node asir.el,,, Input interfaces
1.1 noro 633: @subsection asir.el
634:
635: @noindent
1.3 ! noro 636: \BJP
1.1 noro 637: @samp{asir.el} $B$O(B, @b{Asir} $B$N(B GNU Emacs $B%$%s%?%U%'!<%9$G$"$k(B ($BCx<T$O(B
638: $B5\Eh8w<#;a(B (@code{YVE25250@@pcvan.or.jp}). @samp{asir.el} $B$K$*$$$F$O(B,
639: $BDL>o$N(B emacs $B$G2DG=$JJT=85!G=$NB>$K(B, $B%U%!%$%kL>(B, $B%3%^%s%IL>$N(B completion
640: $B$,<B8=$5$l$F$$$k(B.
1.3 ! noro 641: \E
! 642: \BEG
! 643: @samp{asir.el} is a GNU Emacs interface for @b{Asir}.
! 644: The author is Koji Miyajima (@code{YVE25250@@pcvan.or.jp}).
! 645: In @samp{asir.el}, completion of file names and command names is
! 646: realized other than the ordinary editing functions
! 647: which are available on Emacs.
! 648: \E
1.1 noro 649:
650: @noindent
1.3 ! noro 651: \BJP
1.1 noro 652: @samp{asir.el} $B$O(B PC-VAN $B$G(B
653: $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
654: $BF~<j2DG=$G$"$k(B.
1.3 ! noro 655: \E
! 656: \BEG
! 657: @samp{asir.el} is distributed on PC-VAN. The version where several
! 658: changes have been made according to the current version of @b{Asir}
! 659: is available via ftp.
! 660: \E
1.1 noro 661:
662: @noindent
1.3 ! noro 663: \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.
! 664: \BEG
! 665: The way of setting up and the usage can be found at the top of
! 666: @samp{asir.el}.
! 667: \E
1.1 noro 668:
1.3 ! noro 669: \BJP
1.1 noro 670: @node $BJQ99E@(B,,, $BIUO?(B
671: @section $BJQ99E@(B
1.3 ! noro 672: \E
! 673: \BEG
! 674: @node Changes,,, Appendix
! 675: @section Appendix
! 676: \E
1.1 noro 677:
678: @menu
679: * Version 990831::
680: * Version 950831::
681: * Version 940420::
682: @end menu
683:
1.3 ! noro 684: \JP @node Version 990831,,, $BJQ99E@(B
! 685: \EG @node Version 990831,,, Changes
1.1 noro 686: @subsection Version 990831
687:
1.3 ! noro 688: \BJP
1.1 noro 689: 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,
690: $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,
691: plot $B$,;H$($J$$$?$a(B, $BB`2=$7$F$$$k(B.
692:
693: $B5lHG$N%f!<%6$,$b$C$H$bCm0U$9$Y$-E@$O(B, $B5lHG$G:n$C$?(B bsave file $B$rFI$_9~$`(B
694: $B>l9g$O(B @code{bload27} $B$r;H$&I,MW$,$"$k(B, $B$H$$$&E@$G$"$k(B.
1.3 ! noro 695: \E
! 696:
! 697: \BEG
! 698: Four years have passed since the last distribution.
! 699: Though the look and feel seem unchanged, internally there are
! 700: several changes such as 32-bit representation of bignums.
! 701: Plotting facilities are not available on Windows.
! 702:
! 703: If you have files created by @code{bsave} on the older version,
! 704: you have to use @code{bload27} to read such files.
! 705: \E
1.1 noro 706:
1.3 ! noro 707: \JP @node Version 950831,,, $BJQ99E@(B
! 708: \EG @node Version 950831,,, Changes
1.1 noro 709: @subsection Version 950831
710:
711: @menu
1.3 ! noro 712: \BJP
1.1 noro 713: * $B%G%P%C%,(B($BJQ99(B)::
714: * $BAH$_9~$_H!?t(B($BJQ99(B)::
715: * $B%0%l%V%J4pDl(B($BJQ99(B)::
716: * $B$=$NB>(B($BJQ99(B)::
1.3 ! noro 717: \E
! 718: \BEG
! 719: * Debugger(Changes)::
! 720: * Built-in functions(Changes)::
! 721: * Groebner basis computation(Changes)::
! 722: * Others(Changes)::
! 723: \E
1.1 noro 724: @end menu
725:
1.3 ! noro 726: \BJP
1.1 noro 727: @node $B%G%P%C%,(B($BJQ99(B),,, Version 950831
728: @subsubsection $B%G%P%C%,(B
1.3 ! noro 729: \E
! 730: \BEG
! 731: @node Debugger(Changes),,, Version 950831
! 732: @subsubsection Debugger
! 733: \E
1.1 noro 734:
735: @itemize @bullet
736: @item
1.3 ! noro 737: \JP $BG$0U$N;~E@$K%G%P%C%0%b!<%I$KF~$l$k(B.
! 738: \EG One can enter the debug mode anytime.
1.1 noro 739: @item
1.3 ! noro 740: \JP @code{finish} $B%3%^%s%I$NDI2C(B.
! 741: \EG A command @code{finish} has been appended.
1.1 noro 742: @item
1.3 ! noro 743: \BJP
1.1 noro 744: @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 745: $B$N;2>H(B.
! 746: \E
! 747: \EG One can examine any stack frame with @code{up}, @code{down} and @code{frame}.
1.1 noro 748: @item
1.3 ! noro 749: \JP @code{trace} $B%3%^%s%I$NDI2C(B.
! 750: \EG A command @code{trace} has been appended.
1.1 noro 751: @end itemize
752:
1.3 ! noro 753: \BJP
1.1 noro 754: @node $BAH$_9~$_H!?t(B($BJQ99(B),,, Version 950831
755: @subsubsection $BAH$_9~$_H!?t(B
1.3 ! noro 756: \E
! 757: \BEG
! 758: @node Built-in functions(Changes),,, Version 950831
! 759: @subsubsection Built-in functions
! 760: \E
1.1 noro 761:
762: @itemize @bullet
1.3 ! noro 763: \BJP
1.1 noro 764: @item
765: @code{sdiv()} $B$J$I$K$*$1$k(B, $B<gJQ?t$N;XDj$N%5%]!<%H(B.
766: @item
767: @code{sdivm()} $B$J$I(B, $BM-8BBN>e$G$NB?9`<0=|;;$NDI2C(B.
768: @item
769: @code{det()}, @code{res()} $B$J$I$K$*$1$k(B, $BM-8BBN>e$G$N7W;;$N%5%]!<%H(B
770: @item
771: @code{vtol()} ($B%Y%/%H%k$+$i%j%9%H$X$NJQ49(B) $B$NDI2C(B.
772: @item
773: @code{map()} $B$NDI2C(B.
1.3 ! noro 774: \E
! 775: \BEG
! 776: @item
! 777: One can specify a main variable for @code{sdiv()} etc.
! 778: @item
! 779: Functions for polynomial division over finite fields
! 780: such as @code{sdivm()} have been appended.
! 781: @item
! 782: @code{det()}, @code{res()} can produce results over finite fields.
! 783: @item
! 784: @code{vtol()}, conversion from a vector to a list has been appended.
! 785: @item
! 786: @code{map()} has been appended.
! 787: \E
1.1 noro 788: @end itemize
789:
1.3 ! noro 790: \BJP
1.1 noro 791: @node $B%0%l%V%J4pDl(B($BJQ99(B),,, Version 950831
792: @subsubsection $B%0%l%V%J4pDl(B
1.3 ! noro 793: \E
! 794: \BEG
! 795: @node Groebner basis computation(Changes),,, Version 950831
! 796: @subsubsection Groebner basis computation
! 797: \E
1.1 noro 798:
799: @itemize @bullet
1.3 ! noro 800: \BJP
1.1 noro 801: @item
802: $B%0%l%V%J4pDl7W;;5!G=$NAH$_9~$_H!?t2=(B.
803: @item
804: @code{grm()}, @code{hgrm()} $B$,(B @code{gr()}, @code{hgr()} $B$KJQ99(B.
805: @item
806: @code{gr()}, @code{hgr()} $B$K$*$$$F(B, $B9`=g=x$N;XDj$,I,MW$K$J$C$?(B.
807: @item
808: $B9`=g=x$N;XDjJ}K!$,3HD%$5$l$?(B.
809: @item
810: $BM-8BBN>e$N%0%l%V%J4pDl7W;;$N%5%]!<%H(B.
811: @item
812: $B4pDlJQ49$K$h$k<-=q<0=g=x%0%l%V%J4pDl7W;;$N%5%]!<%H(B.
813: @item
814: $B$$$/$D$+$N?7$7$$AH$_9~$_H!?t$NDs6!(B.
1.3 ! noro 815: \E
! 816: \BEG
! 817: @item Functions for Groebner basis computation have been implemented
! 818: as built-in functions.
! 819: @item
! 820: @code{grm()} and @code{hgrm()} have been changed to @code{gr()} and
! 821: @code{hgr()} respectively.
! 822: @item
! 823: @code{gr()} and @code{hgr()} requires explicit specification of
! 824: an ordering type.
! 825: @item
! 826: Extension of specification of a term ordering type.
! 827: @item
! 828: Groebner basis computations over finite fields.
! 829: @item
! 830: Lex order Groebner basis computation via a modular change of ordering algorithm.
! 831: @item
! 832: Several new built-in functions.
! 833: \E
1.1 noro 834: @end itemize
835:
1.3 ! noro 836: \BJP
1.1 noro 837: @node $B$=$NB>(B($BJQ99(B),,, Version 950831
838: @subsubsection $B$=$NB>(B
1.3 ! noro 839: \E
! 840: \BEG
! 841: @node Others(Changes),,, Version 950831
! 842: @subsubsection Others
! 843: \E
1.1 noro 844:
845: @itemize @bullet
1.3 ! noro 846: \BJP
1.1 noro 847: @item
848: $BJ,;67W;;MQ%D!<%k(B, $BH!?t$NDI2C(B.
849: @item
850: $BBe?tBN>e$N(B GCD $B7W;;$K$*$1$k%b%8%e%i7W;;$N1~MQ(B.
851: @item
852: $B%$%G%"%k$N=`AGJ,2r$N%5%]!<%H(B.
853: @item
854: Windows $B$X$N0\?"(B.
1.3 ! noro 855: \E
! 856: \BEG
! 857: @item
! 858: Implementation of tools for distributed computation.
! 859: @item
! 860: Application of modular computation for GCD computation over algebraic number
! 861: fields.
! 862: @item
! 863: Implementation of primary decompostion of ideals.
! 864: @item
! 865: Porting to Windows.
! 866: \E
1.1 noro 867: @end itemize
868:
1.3 ! noro 869: \JP @node Version 940420,,, $BJQ99E@(B
! 870: \EG @node Version 940420,,, Changes
1.1 noro 871: @subsection Version 940420
872:
873: @noindent
1.3 ! noro 874: \JP $B:G=i$N8x3+HG(B.
! 875: \EG The first public verion.
1.1 noro 876:
1.3 ! noro 877: \BJP
1.1 noro 878: @node $BJ88%(B,,, $BIUO?(B
879: @section $BJ88%(B
1.3 ! noro 880: \E
! 881: \BEG
! 882: @node References,,, Appendix
! 883: @section References
! 884: \E
1.1 noro 885: @table @code
886: @item [Batut et al.]
887: Batut, C., Bernardi, D., Cohen, H., Olivier, M., "User's Guide to PARI-GP",
888: 1993.
889: @item [Becker,Weispfenning]
890: Becker, T., Weispfenning, V., "Groebner Bases", Graduate Texts in Math. 141,
891: Springer-Verlag, 1993.
892: @item [Boehm,Weiser]
893: Boehm, H., Weiser, M., "Garbage Collection in an Uncooperative
894: Environment", Software Practice & Experience, September 1988, 807-820.
895: @item [Gebauer,Moeller]
896: Gebauer, R., Moeller, H. M., "An installation of Buchberger's algorithm",
897: J. of Symbolic Computation 6, 275-286.
898: @item [Giovini et al.]
899: Giovini, A., Mora, T., Niesi, G., Robbiano, L., Traverso, C.,
900: ""One sugar cube, please" OR Selection strategies in the Buchberger algorithm",
901: Proc. ISSAC'91, 49-54.
902: @item [Noro,Takeshima]
903: Noro, M., Takeshima, T., "Risa/Asir -- A Computer Algebra System",
904: Proc. ISSAC'92, 387-396.
905: @item [Noro,Yokoyama]
1.3 ! noro 906: Noro, M., Yokoyama, K., "A Modular Method to Compute the Rational Univariate
! 907: Representation of Zero-Dimensional Ideals",
! 908: J. Symb. Comp. 28/1 (1999), 243-263.
1.1 noro 909: @item [Shimoyama,Yokoyama]
910: Shimoyama, T., Yokoyama, K.,
911: "Localization and primary decomposition of polynomial ideals",
1.3 ! noro 912: J. Symb. Comp. 22 (1996), 247-277.
! 913: @item [Shoup]
! 914: Shoup, V., "A new polynomial factorization algorithm and its implementation",
! 915: J. Symb. Comp. 20 (1995), 364-397.
1.1 noro 916: @item [Traverso]
917: Traverso, C., "Groebner trace algorithms", Proc. ISSAC '88(LNCS 358), 125-138.
1.3 ! noro 918: @item [Weber]
! 919: Weber, K., "The accelerated Integer GCD Algorithm", ACM TOMS, 21, 1(1995), 111-122.
1.1 noro 920: @end table
921:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>