Annotation of OpenXM/src/asir-doc/parts/risa.texi, Revision 1.2
1.2 ! noro 1: @comment $OpenXM$
1.1 noro 2: @node Risa/Asir,,, Top
3: @chapter Risa/Asir
4:
5: @menu
1.2 ! noro 6: \BJP
1.1 noro 7: * Risa $B$*$h$S(B Asir::
8: * Asir $B$NFCD'(B::
9: * $B%$%s%9%H%l!<%7%g%s(B::
10: * $B%3%^%s%I%i%$%s%*%W%7%g%s(B::
11: * $B4D6-JQ?t(B::
12: * $B5/F0$+$i=*N;$^$G(B::
13: * $B3d$j9~$_(B::
14: * $B%(%i!<=hM}(B::
15: * $B7W;;7k2L$*$h$SFC<l$J?t(B::
1.2 ! noro 16: \E
! 17: \BEG
! 18: * Risa and Asir::
! 19: * Features of Asir::
! 20: * Installation::
! 21: * Command line options::
! 22: * Environment variable::
! 23: * Starting and Terminating an Asir session::
! 24: * Interruption::
! 25: * Error handling::
! 26: * Referencing results and special numbers::
! 27: \E
1.1 noro 28: @end menu
29:
1.2 ! noro 30: \BJP
1.1 noro 31: @node Risa $B$*$h$S(B Asir,,, Risa/Asir
32: @section Risa $B$*$h$S(B Asir
1.2 ! noro 33: \E
! 34: \BEG
! 35: @node Risa and Asir,,, Risa/Asir
! 36: @section @b{Risa} and @b{Asir}
! 37: \E
1.1 noro 38:
39: @noindent
1.2 ! noro 40: \BJP
1.1 noro 41: @b{Risa} $B$O(B, $BIY;NDL8&$G3+H/Cf$N?t<0=hM}%7%9%F%`(B/$B%i%$%V%i%j$NAm>N$G$"$k(B.
42: @b{Risa} $B$N9=@.$O<!$NDL$j$G$"$k(B.
1.2 ! noro 43: \E
! 44: \BEG
! 45: @b{Risa} is the name of whole libraries of a computer algebra system
! 46: which is under development at FUJITSU LABORATORIES LIMITED.
! 47: The structure of @b{Risa} is as follows.
! 48: \E
1.1 noro 49:
50: @itemize @bullet
51: @item
1.2 ! noro 52: \JP @code{$B4pK\1i;;It(B}
! 53: \EG @b{The basic algebraic engine}
1.1 noro 54:
1.2 ! noro 55: \BJP
1.1 noro 56: $B$3$l$O(B, @b{Risa} $B$NFbIt7A<0$KJQ49$5$l$?%*%V%8%'%/%H(B ($B?t(B, $BB?9`<0$J$I(B)
57: $B$N4V$N1i;;$r<B9T$9$kItJ,$G$"$j(B, UNIX $B$N(B @samp{libc.a} $B$J$I$HF1MM$N(B, $B%i%$%V%i(B
58: $B%j$H$7$FB8:_$9$k(B. $B%(%s%8%s$O(B, C $B$*$h$S(B $B%"%;%s%V%i$G5-=R$5$l(B, $B8e=R$9$k(B
1.2 ! noro 59: $B8@8l%$%s%?%U%'!<%9(B @b{Asir} $B$N4pK\1i;;It$H$7$FMQ$$$i$l$F$$$k(B.
! 60: @comment $B0lJ}(B, $B?t<07W;;$rI,MW$H$9$k$5$^$6$^$J%W%m%0%i%`Cf$K%j%s%/$7$FMQ$$$k$3$H$,$G$-$k(B.
! 61: \E
! 62: \BEG
! 63: This is the part which performs basic algebraic operations,
! 64: such as arithmetic operations, to algebraic objects, e.g., numbers and
! 65: polynomials, which are already converted into internal forms.
! 66: It exists, like @samp{libc.a} of UNIX, as a library of ordinary UNIX system.
! 67: The algebraic engine is written mainly in C language and
! 68: partly in assembler.
! 69: It serves as the basic operation part of @b{Asir}, a standard
! 70: language interface of @b{Risa}.
! 71: @comment It can also be linked to various programs that need some symbolic
! 72: @comment and algebraic computation.
! 73: \E
! 74:
1.1 noro 75: @item
1.2 ! noro 76: \JP @code{$B%a%b%j4IM}It(B}
! 77: \EG @b{Memory Manager}
1.1 noro 78:
1.2 ! noro 79: \BJP
1.1 noro 80: @b{Risa} $B$G$O(B, $B%a%b%j4IM}It$H$7$F(B, @code{[Boehm,Weiser]} $B$K$h$k%U%j!<(B
81: $B%=%U%H%&%'%"(B (@code{gc-5.0alpha2}) $B$rMQ$$$F$$$k(B. $B$3$l$O%,!<%Y%8%3%l%/%7%g%s(B
82: ($B0J2<(B GC $B$H8F$V(B) $B$r<+F0E*$K9T$&%a%b%j3d$jEv$F5!9=$r;}$A(B, @b{Risa} $B$N3F(B
83: $BItJ,$O$9$Y$F$3$l$K$h$jI,MW$J%a%b%j$rF@$F$$$k(B.
1.2 ! noro 84: \E
! 85: \BEG
! 86: @b{Risa} employs, as its memory management component (the memory
! 87: manager), a free software distributed by Boehm (@code{gc-5.0alpha2}).
! 88: It is proposed by @code{[Boehm,Weiser]}, and developed by Boehm and
! 89: his colleagues.
! 90: The memory manager has a memory allocator which automatically
! 91: reclaims garbages, i.e., allocated but unused memories,
! 92: and refreshes them for further use.
! 93: The algebraic engine gets all its necessary memories through the memory
! 94: manager.
! 95: \E
1.1 noro 96:
97: @item
98: @b{Asir}
99:
1.2 ! noro 100: \BJP
1.1 noro 101: @b{Asir} $B$O(B, @b{Risa} $B$N7W;;%(%s%8%s$N8@8l%$%s%?%U%'!<%9$G(B
102: $B$"$k(B. @b{Risa} $B$G$O(B, $BHf3SE*MF0W$K%f!<%6MQ$N8@8l%$%s%?%U%'!<%9$r:n$k(B
103: $B$3$H$,$G$-$k(B. @b{Asir} $B$O$=$N0l$D$NNc$H$7$F:n$C$?$b$N$G(B, C $B8@8l$K6a(B
104: $B$$J8K!$r$b$D(B. $B$^$?(B, C $B$N%G%P%C%,$H$7$F9-$/MQ$$$i$l$F$$$k(B @code{dbx} $BIw(B
105: $B$N%G%P%C%,$bHw$($F$$$k(B.
1.2 ! noro 106: \E
! 107: \BEG
! 108: @b{Asir} is a standard language interface of @b{Risa}'s algebraic
! 109: engine. It is one of the possible language interfaces, because
! 110: one can develop one's own language interface easily on @b{Risa}
! 111: system.
! 112: @b{Asir} is an example of such language interfaces.
! 113: @b{Asir} has very similar syntax and semantics as C language.
! 114: Furthermore, it has a debugger that provide a subset of commands of
! 115: @code{dbx}, a widely used debugger of C language.
! 116: \E
1.1 noro 117: @end itemize
118:
1.2 ! noro 119: \BJP
1.1 noro 120: @node Asir $B$NFCD'(B,,, Risa/Asir
121: @section Asir $B$NFCD'(B
1.2 ! noro 122: \E
! 123: \BEG
! 124: @node Features of Asir,,, Risa/Asir
! 125: @section Features of @b{Asir}
! 126: \E
1.1 noro 127:
128: @noindent
1.2 ! noro 129: \BJP
1.1 noro 130: @b{Asir} $B$O(B, $BA0=R$NDL$j(B, $B7W;;%(%s%8%s$N8@8l%$%s%?%U%'!<%9$G$"(B
131: $B$k(B. $BDL>o(B @b{Asir} $B$H$$$&L>A0$N<B9T2DG=%U%!%$%k$H$7$FDs6!$5$l$k(B.
132: $B8=:_%5%]!<%H$5$l$F$$$k5!G=$O35$M<!$NDL$j$G$"$k(B.
1.2 ! noro 133: \E
! 134: \BEG
! 135: As mentioned in the previous section, @b{Asir} is a standard language
! 136: interface for@b{Risa}'s algebraic engine.
! 137: Usually, it is provided as an executable file named @code{asir}.
! 138: Main features supported for the current version of Asir is as follows.
! 139: \E
1.1 noro 140:
141: @itemize @bullet
1.2 ! noro 142: \BJP
1.1 noro 143: @item
144: C $B8@8lIw$N%f!<%68@8l(B
145:
146: @item
147: $B?t(B, $BB?9`<0(B, $BM-M}<0$N2C8:>h(B($B=|(B)
148:
149: @item
150: $B%Y%/%H%k(B, $B9TNs$N1i;;(B
151:
152: @item
153: $B:G>.8B$N%j%9%H=hM}(B
154:
155: @item
156: $BAH$_9~$_H!?t(B ($B0x?tJ,2r(B, GCD, $B%0%l%V%J4pDl$J$I(B)
157:
158: @item
159: $B%f!<%6Dj5AH!?t$K$h$k%D!<%k(B ($BBe?tBN>e$N0x?tJ,2r$J$I(B)
160:
161: @item
162: @code{dbx} $BIw$N%G%P%C%,(B
163:
164: @item
165: $B1"H!?t$NIA2h(B
166:
167: @item
168: @b{PARI} (@pxref{pari}) $B$K$h$k=iEyD61[H!?t$r4^$`<0$NI>2A(B
169:
170: @item
171: UNIX $B>e$G$NJ,;67W;;5!G=(B (Open XM)
172: @comment @item
173: @comment $B%R%9%H%jCV495!G=$r$b$D(B X11 $B%$%s%?%U%'!<%9(B
1.2 ! noro 174: \E
! 175: \BEG
! 176: @item
! 177: A C-like programming language
! 178:
! 179: @item
! 180: Arithmetic operations (addition, subtraction, multiplication
! 181: and division) on numbers, polynomials and rational expressions
! 182:
! 183: @item
! 184: Operations on vectors and matrices
! 185:
! 186: @item
! 187: List processing operations at the minimum
! 188:
! 189: @item
! 190: Several Built-in functions (factorization, GCD computation, Groebner basis
! 191: computation etc.)
! 192:
! 193: @item
! 194: Useful user defined functions(e.g., factorization over algebraic number fields)
! 195:
! 196: @item
! 197: A @code{dbx}-like debugger
! 198:
! 199: @item
! 200: Plotting of implicit functions
! 201:
! 202: @item
! 203: Numerical evaluation of mathematical expressions including elementary
! 204: transcendental functions at arbitrary precision. This feature is
! 205: in force only if @b{PARI} system (@pxref{pari}).
! 206:
! 207: @item
! 208: Distributed computation over UNIX
! 209: \E
1.1 noro 210: @end itemize
211:
1.2 ! noro 212: \BJP
1.1 noro 213: @node $B%$%s%9%H%l!<%7%g%s(B,,, Risa/Asir
214: @section $B%$%s%9%H%l!<%7%g%s(B
1.2 ! noro 215: \E
! 216: \BEG
! 217: @node Installation,,, Risa/Asir
! 218: @section Installation
! 219: \E
! 220:
! 221: \JP $B0J2<$N<jB3$-$GITL@$JE@(B, $BITET9g$JE@$,$"$C$?>l9g$NLd$$9g$o$;$O(B
! 222: \BEG
! 223: Any questions and any comments on this manual are well come by e-mails
! 224: to the following address.
! 225: \E
1.1 noro 226:
227: @example
1.2 ! noro 228: noryo@@flab.fujitsu.co.jp
1.1 noro 229: @end example
230:
231: @noindent
1.2 ! noro 232: \JP $B08$K(B e-mail $B$G$*4j$$$7$^$9(B.
1.1 noro 233:
234: @menu
1.2 ! noro 235: \BJP
1.1 noro 236: * UNIX $BHG(B::
237: * Windows $BHG(B::
1.2 ! noro 238: \E
! 239: \BEG
! 240: * UNIX version::
! 241: * Windows version::
! 242: \E
1.1 noro 243: @end menu
244:
1.2 ! noro 245: \BJP
1.1 noro 246: @node UNIX $BHG(B,,, $B%$%s%9%H%l!<%7%g%s(B
247: @subsection UNIX $BHG(B
1.2 ! noro 248: \E
! 249: \BEG
! 250: @node UNIX version,,, Installation
! 251: @subsection UNIX version
! 252: \E
1.1 noro 253:
254: @noindent
1.2 ! noro 255: \BJP
1.1 noro 256: $BI,MW$J%U%!%$%k$O(B @samp{asir.tgz} $B$G$"$k(B.
257: $B$3$l$i$OA4$F(B @code{gzip} $B$G05=L$7$F$"$k$N$G(B, $BF~<j8e(B @code{gzip} $B$G(B
258: $BE83+$9$k(B. $B$^$:(B, $B%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r7h$a$k(B. $B%G%U%)%k%H$G$O(B
259: @samp{/usr/local/lib} $B$K(B @samp{asir} $B$H$$$&%G%#%l%/%H%j$H$7$F(B
260: $B%$%s%9%H!<%k$5$l$k$3$H$r2>Dj$7$F$$$k(B. $B0J2<$3$N%G%#%l%/%H%j$r%i%$%V%i%j(B
261: $B%G%#%l%/%H%j$H8F$V(B.
1.2 ! noro 262: \E
! 263: \BEG
! 264: A file @samp{asir.tgz} suitable for the taget machine/architecture
! 265: is required. After getting it,
! 266: you have to unpack it by @code{gzip}. First of all, determine
! 267: a derectory where binaries and library files are installed.
! 268: We call the directory the @b{library directory}.
! 269: The following installs the files in @samp{/usr/local/lib/asir}.
! 270: \E
1.1 noro 271:
272: @example
273: # gzip -dc asir.tgz | ( cd /usr/local/lib; tar xf - )
274: @end example
275:
1.2 ! noro 276: \JP $B8D?ME*$K;HMQ$9$k>l9g$K$O(B, @samp{$HOME}$B$J$I$KCV$$$F$b$h$$(B.
! 277: \BEG
! 278: In this case you don't have to set any environment variable.
1.1 noro 279:
1.2 ! noro 280: You can install them elsewhere.
! 281: \E
1.1 noro 282: @example
283: % gzip -dc asir.tgz | ( cd $HOME; tar xf - )
284: @end example
285:
286: @noindent
1.2 ! noro 287: \BJP
1.1 noro 288: $B$3$N>l9g(B, $B%i%$%V%i%j%G%#%l%/%H%j$NL>A0$r4D6-JQ?t(B
289: @code{ASIR_LIBDIR} $B$K@_Dj$9$kI,MW$,$"$k(B.
1.2 ! noro 290: \E
! 291: \BEG
! 292: In this case you have to set the name of the library directory
! 293: to the environment variable @code{ASIR_LIBDIR}.
! 294: \E
1.1 noro 295:
296: @example
297: % setenv ASIR_LIBDIR $HOME/asir
298: @end example
299:
300: @noindent
1.2 ! noro 301: \BJP
1.1 noro 302: Asir $BK\BN$O(B, $B%i%$%V%i%j%G%#%l%/%H%j$N(B @samp{asir} $B$G$"$k(B.
303: @samp{/usr/local/bin} $B$"$k$$$O%f!<%6$N<B9T%U%!%$%k%5!<%A%Q%9(B
304: $B$N$I$3$+$K%7%s%\%j%C%/%j%s%/$r:n$k$HJXMx$G$"$k(B.
1.2 ! noro 305: \E
! 306: \BEG
! 307: @b{Asir} itself is in the library directory. It will be convenient
! 308: to create a symbolic link to it from @samp{/usr/local/bin} or
! 309: the user's search path.
! 310: \E
1.1 noro 311:
312: @example
313: # ln -s /usr/local/lib/asir/asir /usr/local/bin/asir
314: @end example
315:
316: @noindent
1.2 ! noro 317: \JP $B$3$N>uBV$G(B @samp{asir} $B$r5/F0$7$F$_$k(B.
! 318: \BEG
! 319: Start @samp{asir}, and @b{Asir} will immediately terminate leaving you
! 320: a message as follows.
! 321: \E
1.1 noro 322:
323: @example
324: % /usr/local/bin/asir
325: asir_key not found.
326: ID for this machine is XXXXXXXX.
327: See the file ASIR_INSTALL to get the correct key.
328: @end example
329:
330: @noindent
1.2 ! noro 331: \BJP
1.1 noro 332: $B$9$k$H(B, $B$3$N$h$&$J%a%C%;!<%8$,=P$F(B @samp{asir} $B$O=*N;$9$k(B. UNIX $BHG(B
333: $B$G$O(B, $B%^%7%s$4$H$K(B @code{key} $B$H8F$P$l$kJ8;zNs$,I,MW$G$"$k(B.
334: @code{key} $B$rF~<j$9$k$?$a$K$O(B,
335:
336: @example
337: risa@@para.flab.fujitsu.co.jp
338: @end example
339:
340: $B08$K(B,
341:
342: @example
343: ASIR XXXXXXXX
344: @end example
345:
346: $B$H$$$&(B 1 $B9T$N$_$+$i$J$k(B e-mail $B$rAw$l$P$h$$(B. @code{XXXXXXXX} $B$OI=<($5$l$?(B
347: @code{ID} $B$G$"$k(B. $B@^$jJV$7(B
348:
349: @example
350: YYYYYYYY YYYYYYYY YYYYYYYY
351: @end example
352:
353: @noindent
354: $B$H$$$&7A$N(B 1 $B9T$N$_$+$i$J$k(B e-mail $B$,FO$/$N$G(B, $B$3$N(B 1 $B9T$r4^$`(B @samp{asir_key}
355: $B$J$k%U%!%$%k$r%+%l%s%H%G%#%l%/%H%j$K:n$C$F(B @samp{asir} $B$r5/F0$7$F$_$k(B.
1.2 ! noro 356: \E
! 357:
! 358: \BEG
! 359: For UNIX version of @b{Asir}, you need a @code{key}, a string,
! 360: for each machine you want to run @b{Asir}.
! 361: In order to get the @code{key}, you just need to send an e-mail
! 362: consisting of a single line like
! 363:
! 364: @example
! 365: ASIR XXXXXXXX
! 366: @end example
! 367:
! 368: to address
! 369:
! 370: @example
! 371: risa@@para.flab.fujitsu.co.jp
! 372: @end example
! 373:
! 374: @noindent
! 375: Here, @code{XXXXXXXX} is the machine ID notified in the first message
! 376: from @b{Asir}.
! 377:
! 378: After a while, an e-mail will be returned containing only one line like
! 379:
! 380: @example
! 381: YYYYYYYY YYYYYYYY YYYYYYYY
! 382: @end example
! 383:
! 384: @noindent
! 385: Then, you shall create a new file in the current directory
! 386: named @samp{asir_key} containing the returned string in one line.
! 387:
! 388: All after this, call again @samp{asir}.
! 389: \E
1.1 noro 390:
391: @example
392: % /usr/local/bin/asir
393: This is Asir, Version 990831.
394: Copyright (C) FUJITSU LABORATORIES LIMITED.
395: 3 March 1994. All rights reserved.
396: [0]
397: @end example
398:
399: @noindent
1.2 ! noro 400: \BJP
1.1 noro 401: $B$3$N$h$&$J%W%m%s%W%H$,=P$l$P(B, $BF~<j$7$?(B @code{key} $B$O$=$N%^%7%s$KBP$7$FM-8z(B
402: $B$G$"$k(B. @code{key} $B$r=q$$$F$*$/%U%!%$%k$K4X$7$F$O(B, $B4D6-JQ?t(B @code{ASIR_KEY}
403: $B$N@bL@$N9`$G>\$7$/=R$Y$k$,(B, $B%i%$%V%i%j%G%#%l%/%H%j$K$3$3$G:n@.$7$?(B
404: $B%U%!%$%k(B @samp{asir_key} $B$rCV$1$P(B, $B$=$N%^%7%s>e$GA4$F$N%f!<%6$,(B @samp{asir}
405: $B$r;HMQ$G$-$k$h$&$K$J$k(B. @samp{asir_key} $B$K$OJ#?t$N%^%7%s$KBP$9$k(B @code{key}
406: $B$r=q$1$k$N$G(B, $B%i%$%V%i%j%G%#%l%/%H%j$r6&M-$7$F$$$k>l9g$G$b(B @samp{asir_key}
407: $B$K9T$rDI2C$7$F$$$1$P$h$$(B.
1.2 ! noro 408: \E
! 409: \BEG
! 410: If you get such a prompt (@samp{[0]}) from @b{Asir},
! 411: the key you have is valid to the machine you are currently running
! 412: @code{asir}.
! 413:
! 414: When the file @samp{asir_key} is located on the library directory,
! 415: all the users of the machine can execute @samp{asir}.
! 416: The file @samp{asir_key} can contain several lines for
! 417: several @code{key}'s.
! 418: This enables users to run several machines sharing the same library
! 419: directory by simply adding lines for machines to be used.
! 420: We shall describe about the file for @code{key}'s in detail in
! 421: @ref{Environment variable}.
! 422: \E
1.1 noro 423:
424: @example
425: # cp asir_key /usr/local/lib/asir
426: @end example
427:
1.2 ! noro 428: \BJP
1.1 noro 429: @node Windows $BHG(B,,, $B%$%s%9%H%l!<%7%g%s(B
430: @subsection Windows $BHG(B
1.2 ! noro 431: \E
! 432: \BEG
! 433: @node Windows version,,, Installation
! 434: @subsection Windows version
! 435: \E
1.1 noro 436:
437: @noindent
1.2 ! noro 438: \BJP
1.1 noro 439: $BI,MW$J%U%!%$%k$O(B @samp{asirwin.tgz} $B$G$"$k(B. $BB>$K(B, @samp{gzip.exe},
440: @samp{tar.exe} $B$,I,MW$@$,(B, asirwin.tgz $B$HF1$8%G%#%l%/%H%j$KMQ0U$7$F(B
441: $B$"$k(B. $B$3$l$i(B 3 $B$D$N%U%!%$%k$rF10l%G%#%l%/%H%j$K$*$-(B, DOS $B%W%m%s%W%H(B
442: $B$+$i(B
1.2 ! noro 443: \E
! 444: \BEG
! 445: The necessary file is @samp{asirwin.tgz}. To unpack it @samp{gzip.exe}
! 446: and @samp{tar.exe} are necessary. They are in the same
! 447: directory as @samp{asirwin.tgz} on the ftp server.
! 448: Putting them in the same directory, execute the following:
! 449: \E
1.1 noro 450:
451: @example
1.2 ! noro 452: \JP C:\...> tar xzf asirwin.tgz
! 453: \EG C:\...> tar xzf asirwin.tgz
1.1 noro 454: @end example
455:
456: @noindent
1.2 ! noro 457: \BJP
1.1 noro 458: $B$r<B9T$9$l$P(B, @samp{Asir} $B$H$$$&%G%#%l%/%H%j(B (Asir $B%k!<%H%G%#%l%/%H%j(B)
459: $B$,$G$-$k(B. 990831 $BHG$G$O(B, GUI $B$HK\BN$,J,N%$5$l(B, $B$^$?%G%P%C%0%&%#%s%I%&$b(B
460: $BJL%W%m%;%9$H$7$F(B GUI $B$,8F$S=P$5$l$k$?$a(B, Asir $B%k!<%H%G%#%l%/%H%j$,@5$7$/(B
461: $BEPO?$5$l$F$$$k$3$H$,I,MW$G$"$k(B. Asir $B%k!<%H%G%#%l%/%H%j$N%5%V%G%#%l%/%H(B
462: $B%j(B @samp{bin} $B$K(B @samp{asirgui.exe} (GUI), @samp{engine.exe} ($BK\BN(B) $B$,(B
463: $BCV$+$l$F$$$k(B. @samp{asirgui.exe} $B$N=i2s$NN)$A>e$2$O(B, $B%(%/%9%W%m!<%i$+$i9T(B
464: $B$&(B. $B$3$l$K$h$j(B
1.2 ! noro 465: \E
! 466:
! 467: \BEG
! 468: Then a directory @samp{Asir} (@b{Asir root directory}) is created,
! 469: which has subdirectories named @samp{bin} and @samp{lib}. To set up it,
! 470: invoke @samp{bin\asirgui.exe} from Explorer and
! 471: click @code{OK}. Then the name of @b{Asir root directory} is set to the
! 472: following registries.
! 473: \E
1.1 noro 474:
475: @example
1.2 ! noro 476: \JP HKEY_LOCAL_MACHINE\SOFTWARE\FUJITSU\Asir\99.03.31\Directory
! 477: \EG HKEY_LOCAL_MACHINE\SOFTWARE\FUJITSU\Asir\99.03.31\Directory
1.1 noro 478: @end example
479:
480: @noindent
1.2 ! noro 481: \JP $B$H$$$&%l%8%9%H%j$K(B Asir $B%k!<%H%G%#%l%/%H%j$,@5$7$/EPO?$5$l$k(B.
1.1 noro 482:
1.2 ! noro 483: \BJP
1.1 noro 484: @node $B%3%^%s%I%i%$%s%*%W%7%g%s(B,,, Risa/Asir
485: @section $B%3%^%s%I%i%$%s%*%W%7%g%s(B
1.2 ! noro 486: \E
! 487: \BEG
! 488: @node Command line options,,, Risa/Asir
! 489: @section Command line options
! 490: \E
1.1 noro 491:
492: @noindent
1.2 ! noro 493: \JP $B%3%^%s%I%i%$%s%*%W%7%g%s$O<!$NDL$j(B.
! 494: \EG Command-line options for the command @samp{asir} are as follows.
1.1 noro 495:
496: @table @code
497:
498: @item -heap @var{number}
1.2 ! noro 499: \BJP
1.1 noro 500: @code{Risa/Asir} $B$G$O(B, 4KB $B$N%V%m%C%/$r%a%b%j3d$jEv$F$NC10L$H$7$FMQ$$$F$$$k(B.
501: $B%G%U%)%k%H$G$O(B, $B=i4|(B heap $B$H$7$F(B, 16 $B%V%m%C%/(B (64KB) $B3d$jEv$F$k$,(B, $B$=$l(B
502: $B$rJQ99$9$k>l9g(B, @code{-heap} $B$rMQ$$$k(B. $BC10L$O%V%m%C%/$G$"$k(B.
503: heap $B$NBg$-$5$O(B, @code{heap()} $BH!?t$GD4$Y$k$3$H$,$G$-$k(B ($BC10L$O%P%$%H(B).
1.2 ! noro 504: \E
! 505: \BEG
! 506: In @b{Risa/Asir}, 4KB is used as an unit, called block,
! 507: for memory allocation.
! 508: By default, 16 blocks (64KB) are allocated initially.
! 509: This value can be changed by giving an option @code{-heap}
! 510: a number parameter in unit block.
! 511: Size of the heap area is obtained by a Built-in function heap(),
! 512: the result of which is a number in Bytes.
! 513: \E
1.1 noro 514:
515: @item -adj @var{number}
1.2 ! noro 516: \BJP
1.1 noro 517: $B$3$NCM$,Bg$-$$$[$I(B, $B;HMQ%a%b%jNL$OBg$-$/$J$k$,(B, GC $B;~4V$,>/$J$/$J(B
518: $B$k(B. @var{number} $B$H$7$F(B 1 $B0J>e$N@0?t$,;XDj$G$-$k(B. $B%G%U%)%k%H$G$O(B 3 $B$G$"(B
519: $B$k(B. $B$3$NCM$,(B 1 $B0J2<$K$J$k$H(B GC $B$r$7$J$$@_Dj$K$J$k$N$GMWCm0U$G$"$k(B. heap
520: $B$r$J$k$Y$/?-$P$5$:$K(B, GC $B$r<gBN$K$7$F%a%b%j4IM}$7$?$$>l9g$K$O(B, $B$3$NCM$r(B
521: $BBg$-$/(B ($BNc$($P(B 8) $B@_Dj$9$k(B.
1.2 ! noro 522: \E
! 523: \BEG
! 524: Heap area will be stretched by the memory manager,
! 525: if the size of reclaimed memories is less than 1/@var{number}
! 526: of currently allocated heap area.
! 527: The default value for @var{number} is 3.
! 528: If you do not prefer to stretch heap area by some reason, perhaps by
! 529: restriction of available memories, but if prefer to resort to
! 530: reclaiming garbages as far as possible,
! 531: then a large value should be chosen for @var{number}, e.g., 8.
! 532: \E
1.1 noro 533:
534: @item -norc
1.2 ! noro 535: \JP $B=i4|2=%U%!%$%k(B @samp{$HOME/.asirrc} $B$rFI$^$J$$(B.
! 536: \BEG
! 537: When this option is specified, @b{Asir} does not read the
! 538: initial file @samp{$HOME/.asirrc}.
! 539: \E
1.1 noro 540:
541: @item -f @var{file}
1.2 ! noro 542: \BJP
1.1 noro 543: $BI8=`F~NO$NBe$o$j$K(B, @var{file} $B$+$iF~NO$rFI$_9~$s$G<B9T$9$k(B.
544: $B%(%i!<$N:]$K$O$?$@$A$K=*N;$9$k(B.
1.2 ! noro 545: \E
! 546: \BEG
! 547: Instead of the standard input, @var{file} is used as the input.
! 548: Upon an error, the execution immediately terminates.
! 549: \E
1.1 noro 550:
551: @item -paristack @var{number}
1.2 ! noro 552: \BJP
1.1 noro 553: @b{PARI} (@pxref{pari}) $B@lMQ$NNN0h$NBg$-$5$r;XDj$9$k(B. $BC10L$O%P%$%H(B. $B%G%U%)(B
554: $B%k%H$G$O(B 1 MB.
1.2 ! noro 555: \E
! 556: \BEG
! 557: This option specifies the private memory size for @code{PARI} (@pxref{pari}).
! 558: The unit is Bytes. By default, it is set to 1 MB.
! 559: \E
1.1 noro 560:
561: @item -maxheap @var{number}
1.2 ! noro 562: \BJP
1.1 noro 563: heap $BNN0h$N>e8B$r;XDj$9$k(B. $BC10L$O%P%$%H(B. $B%G%U%)%k%H$G$OL5@)8B(B. UNIX $B$N(B
564: $B>l9g(B, $B<B:]$K$O(B @code{limit} $B%3%^%s%I$GI=<($5$l$k(B @code{datasize} $B$NCM(B
565: $B$K@)8B$5$l$F$$$k$?$a(B, @code{-maxheap} $B$N;XDj$,$J$/$F$b0lDjNL0J>e$K(B
566: heap $B$r3MF@$G$-$J$$>l9g$,$"$k$N$GCm0U(B.)
1.2 ! noro 567: \E
! 568: \BEG
! 569: This option sets an upper limit of the heap size. The unit is Bytes.
! 570: Note that the size is already limited by the value of @code{datasize}
! 571: displayed by the command @code{limit} on UNIX.
! 572: \E
1.1 noro 573: @end table
574:
1.2 ! noro 575: \BJP
1.1 noro 576: @node $B4D6-JQ?t(B,,, Risa/Asir
577: @section $B4D6-JQ?t(B
1.2 ! noro 578: \E
! 579: \BEG
! 580: @node Environment variable,,, Risa/Asir
! 581: @section Environment variable
! 582: \E
1.1 noro 583:
584: @noindent
1.2 ! noro 585: \BJP
1.1 noro 586: @b{Asir} $B$N<B9T$K4X$9$k$$$/$D$+$N4D6-JQ?t$,B8:_$9$k(B. UNIX $B>e$G$O4D6-JQ?t(B
587: $B$O(B shell $B$N%3%^%s%I%i%$%s$+$iD>@\@_Dj$9$k$+(B, shell $B$N(B rc $B%U%!%$%k$G@_Dj(B
588: $B$9$k(B. Windows NT $B$G$O(B, [$B@_Dj(B]->[$B%7%9%F%`(B]->[$B4D6-(B] $B$G@_Dj$9$k(B. Windows 95/98
589: $B$G$O(B, @samp{c:\autoexec.bat} $B$K=q$$$F(B reboot $B$9$k(B.
1.2 ! noro 590: \E
! 591: \BEG
! 592: There exist several environment variables concerning with an execution
! 593: of @b{Asir}. On UNIX, an environment variable is set from shells, or
! 594: in rc files of shells. On Windows NT, it can be set from [Control Panel]
! 595: ->[Environment]. On Windows 95/98, it can be set in @samp{c:\autoexec.bat}.
! 596: Note that the setting takes effect after rebooting the machine on Windows
! 597: 95/98.
! 598: \E
1.1 noro 599: @itemize @bullet
600: @item
601: @code{ASIR_KEY}
602:
1.2 ! noro 603: \BJP
1.1 noro 604: UNIX $BHG$G$O(B, @b{Asir} $B$,5/F0$5$l$?%^%7%s$KBP$9$k(B @code{key} $B$,$J$1(B
605: $B$l$P$=$N%^%7%s>e$G(B @b{Asir} $B$OF0:n$7$J$$(B. @code{key} $B$O(B 16 $B?J(B 8
606: $B7e(B 3 $B%o!<%I$+$i$J$j(B,
1.2 ! noro 607: \E
! 608: \BEG
! 609: @b{Asir} shall not work unless a @code{key} for the machine
! 610: on which @b{Asir} is invoked is given.
! 611: The @code{key} consists of a string which denotes 3 word hexadecimal
! 612: number, each of which has 8 hexadecimal digits.
! 613: In order to run @b{Asir} for several machines,
! 614: several @code{key}'s can be written together on a same file as follows.
! 615: \E
1.1 noro 616: @example
617: % cat asir_key
618: cf6f236c 61a35091 dddc4529 geisha
619: 82281685 d1929945 a8bd24ca yorktown
620: 34b75d30 63f8df93 3e881113 nyanchu
621: @end example
622:
1.2 ! noro 623: \BJP
1.1 noro 624: $B$H$$$&7A$GJ#?tBf$N%^%7%s$KBP$9$k(B @code{key} $B$r0l$D$N%U%!%$%k$K$^$H$a$F(B
625: $B=q$/$3$H$,$G$-$k(B. @code{key} $B$N8e$m$OL5;k$5$l$k$N$G(B, $B%3%a%s%H$r=q$/(B
626: $B$3$H$,$G$-$k(B. @code{key} $B$r4^$`%U%!%$%k$O(B, $B0J2<$N=g$G%5!<%A$5$l$k(B.
1.2 ! noro 627: \E
! 628: \BEG
! 629: The text after each @code{key} is neglected to the end-of-line.
! 630: This is convenient to comment on the respective @code{key}.
! 631: Files containing @code{key}'s are searched by the following order.
! 632: \E
1.1 noro 633:
634: @enumerate
635: @item
1.2 ! noro 636: \JP $B4D6-JQ?t(B @code{ASIR_KEY} $B$K;XDj$5$l$?%U%!%$%k(B
! 637: \EG File set to environment @code{ASIR_KEY}
1.1 noro 638:
639: @item
1.2 ! noro 640: \JP $B%+%l%s%H%G%#%l%/%H%j$N(B @samp{asir_key}
! 641: \EG File @samp{asir_key} on the current directory.
1.1 noro 642:
643: @item
1.2 ! noro 644: \BJP
1.1 noro 645: $B4D6-JQ?t(B @code{ASIR_LIBDIR} $B$G;XDj$5$l$?%G%#%l%/%H%j(B ($B;XDj$,$J$1$l$P(B
646: @samp{/usr/local/lib/asir}) $B$N(B @samp{asir_key}
1.2 ! noro 647: \E
! 648: \BEG
! 649: Files on the directory specified by environment @code{ASIR_LIBDIR}.
! 650: (File @samp{asir_key} on @samp{/usr/local/lib/asir/},
! 651: if environment @code{ASIR_LIBDIR} is not set.)
! 652: \E
! 653:
1.1 noro 654: @end enumerate
655:
656: @item
657: @code{ASIR_LIBDIR}
658:
1.2 ! noro 659: \BJP
1.1 noro 660: @b{Asir} $B$N%i%$%V%i%j%G%#%l%/%H%j(B, $B$9$J$o$A%f!<%68@8l$G=q$+$l$?%U%!%$%k(B
661: $B$J$I$,$*$+$l$k%G%#%l%/%H%j(B. $B;XDj$,$J$$>l9g(B UNIX $BHG$G$O(B
662: @samp{/usr/local/lib/asir}, Windows $BHG$G$O(B Asir $B%a%$%s%G%#%l%/%H%j$N2<$N(B
663: @samp{lib} $B%G%#%l%/%H%j$,MQ$$$i$l$k(B.
1.2 ! noro 664: \E
! 665: \BEG
! 666: The library directory of @b{Asir}, i.e., the directory where
! 667: , for example, files containing programs written in @b{Asir}.
! 668: If not specified, on UNIX, @samp{/usr/local/lib/asir} is used by default.
! 669: On Windows, @samp{lib} in @b{Asir root directory} is used by default.
! 670: This environment will be useful in a case where @b{Asir} binaries
! 671: are installed on a private directory of the user.
! 672: \E
1.1 noro 673:
674: @item
675: @code{ASIRLOADPATH}
676:
1.2 ! noro 677: \BJP
1.1 noro 678: $B%m!<%I$5$l$k%U%!%$%k$,$"$k%G%#%l%/%H%j$r(B UNIX $B$N>l9g(B ':',
679: Windows$B$N>l9g(B ';' $B$G6h@Z$C$FJB$Y$k(B. $B%G%#%l(B
680: $B%/%H%j$O:8$+$i=g$K%5!<%A$5$l$k(B. $B$3$N;XDj$,$J$$>l9g(B, $B$*$h$S;XDj$5$l$?(B
681: $B%U%!%$%k$,(B @code{ASIRLOADPATH} $B$K$J$+$C$?>l9g(B, $B%i%$%V%i%j%G%#%l%/%H%j(B
682: $B$b%5!<%A$5$l$k(B.
1.2 ! noro 683: \E
! 684: \BEG
! 685: This environment specifies directories which contains files to be
! 686: loaded by @b{Asir} command @code{load()}.
! 687: Directories are separated by a `:' on UNIX, a ';' on Windows respectively.
! 688: The search order is from the left to the right.
! 689: After searching out all directories in @code{ASIRLOADPATH},
! 690: or in case of no specification at all,
! 691: the library directory will be searched.
! 692: \E
1.1 noro 693: @item
694: @code{HOME}
695:
1.2 ! noro 696: \BJP
1.1 noro 697: @var{-norc} $B%*%W%7%g%s$D$-$G5/F0$7$J$$>l9g(B, @samp{$HOME/.asirrc}$B$,$"$l$P(B,
698: $BM=$a$3$N%U%!%$%k$r<B9T$9$k(B. @code{HOME} $B$,@_Dj$5$l$F$$$J$$>l9g(B, UNIX $BHG(B
699: $B$G$O$J$K$bFI$^$J$$$,(B, Windows $BHG$G$O(B Asir $B%a%$%s%G%#%l%/%H%j(B
700: (@code{get_rootdir()} $B$GJV$5$l$k%G%#%l%/%H%j(B) $B$N(B @samp{.asirrc} $B$rC5$7(B,
701: $B$"$l$P$=$l$r<B9T$9$k(B.
1.2 ! noro 702: \E
! 703: \BEG
! 704: If @b{Asir} is invoked without @var{-norc}, @samp{$HOME/.asirrc}, if exists,
! 705: is executed. If @code{HOME} is not set, nothing is done on UNIX. On Windows,
! 706: @samp{.asirrc} in @b{Asir root directory} is executed if it exists.
! 707: \E
1.1 noro 708: @end itemize
709:
1.2 ! noro 710: \BJP
1.1 noro 711: @node $B5/F0$+$i=*N;$^$G(B,,, Risa/Asir
712: @section $B5/F0$+$i=*N;$^$G(B
1.2 ! noro 713: \E
! 714: \BEG
! 715: @node Starting and Terminating an Asir session,,, Risa/Asir
! 716: @section Starting and Terminating an @b{Asir} session
! 717: \E
1.1 noro 718:
719: @noindent
1.2 ! noro 720: \JP @b{Asir} $B$r5/F0$9$k$H(B,
! 721: \BEG
! 722: Run @b{Asir}, then the copyright notice and the first prompt
! 723: will appear on your screen,
! 724: and a new @b{Asir} session will be started.
! 725: \E
! 726:
1.1 noro 727: @example
728: [0]
729: @end example
730:
731: @noindent
1.2 ! noro 732: \BJP
1.1 noro 733: $B$J$k%W%m%s%W%H$,I=<($5$l(B, $B%;%C%7%g%s$,3+;O$9$k(B. @samp{$HOME/.asirrc}
734: (Windows $BHG$N>l9g(B, @code{HOME} $B@_Dj$5$l$F$$$J$$>l9g$K$O(B @code{get_rootdir()}
735: $B$GJV$5$l$k%G%#%l%/%H%j$K$"$k(B @samp{.asirrc})
736: $B$,B8:_$7$F$$$k>l9g(B, $B$3$N%U%!%$%k$r(B @b{Asir} $B%f!<%68@8l$G$+$+$l$?(B
737: $B%U%!%$%k$H8+$J$7(B, $B2r<a<B9T$9$k(B.
1.2 ! noro 738: \E
! 739: \BEG
! 740: When initialization file @samp{$HOME/.asirrc} exists,
! 741: @b{Asir} interpreter executes it at first taking it as a program
! 742: file written in @b{Asir}.
! 743: \E
1.1 noro 744:
745: @noindent
1.2 ! noro 746: \BJP
1.1 noro 747: $B%W%m%s%W%H$OF~NO$NHV9f$rI=$9(B. $B%;%C%7%g%s$O(B, @code{end;} $B$^$?$O(B
748: @code{quit;} $B$rF~NO$9$k$3$H$K$h$j=*N;$9$k(B. $BF~NO$O(B, @samp{;} $B$^$?$O(B
749: @samp{$} $B$^$G$r0l6h@Z$j$H$7$FI>2A$5$l$k(B. @samp{;} $B$N$H$-7k2L$OI=<($5$l(B,
750: @samp{$} $B$N$H$-I=<($5$l$J$$(B.
1.2 ! noro 751: \E
! 752: \BEG
! 753: The prompt indicates the sequential number of your input commands to
! 754: @b{Asir}.
! 755: The session will terminate when you input @code{end;} or @code{quit;}
! 756: to @b{Asir}.
! 757: Input commands are evaluated statement by statement.
! 758: A statement normally ends with its terminator
! 759: @samp{;} or @samp{$}.
! 760: (There are some exceptions. See, syntax of @b{Asir}.)
! 761: The result will be displayed when the command, i.e. statement,
! 762: is terminated by a @samp{;},
! 763: and will not when terminated by a @samp{$}.
! 764: \E
1.1 noro 765:
766: @example
767: % asir
768: [0] A;
769: 0
770: [1] A=(x+y)^5;
771: x^5+5*y*x^4+10*y^2*x^3+10*y^3*x^2+5*y^4*x+y^5
772: [2] A;
773: x^5+5*y*x^4+10*y^2*x^3+10*y^3*x^2+5*y^4*x+y^5
774: [3] a=(x+y)^5;
775: evalpv : invalid assignment
776: return to toplevel
777: [3] a;
778: a
779: [4] fctr(A);
780: [[1,1],[x+y,5]]
781: [5] quit;
782: %
783: @end example
784:
785: @noindent
1.2 ! noro 786: \BJP
1.1 noro 787: $B$3$NNc$G$O(B, @code{A}, @code{a}, @code{x}, @code{y} $B$J$kJ8;z$,;HMQ$5$l$F$$$k(B.
788: @code{A} $B$O%W%m%0%i%`$K$*$1$kJQ?t$G(B, @code{a}, @code{x}, @code{y} $B$O?t3XE*(B
789: $B$J0UL#$G$NITDj85$G$"$k(B. $B0lHL$K%W%m%0%i%`JQ?t$OBgJ8;z$G;O$^$j(B,
790: $BITDj85$O>.J8;z$G;O$^$k(B. $B$3$NNc$G$o$+$k$h$&$K(B, $B%W%m%0%i%`JQ?t$O(B,
791: $B?t(B, $B<0$J$I$r3JG<$7$F$*$/$?$a$N$b$N$G$"$j(B, C $B8@8l$J$I$K$*$1$kJQ?t$KBP1~$9$k(B.
792: $B0lJ}(B, $BITDj85$O$=$l<+?H$GCM$r;}$D$3$H$O$G$-$:(B, $B=>$C$F(B, $BITDj85$KBP$9$k(B
793: $BBeF~$O5v$5$l$J$$(B. $B8e$K<($9$,(B, $BITDj85$KBP$9$kBeF~$O(B, $BAH$_9~$_H!?t(B @code{subst()}
794: $B$K$h$jL@<(E*$K9T$o$l$k(B.
1.2 ! noro 795: \E
! 796: \BEG
! 797: In the above example, names @code{A}, @code{a}, @code{x} and @code{y}
! 798: are used to identify mathematical and programming objects.
! 799: There, the name @code{A} denotes a program variable
! 800: (some times called simply as a program variable.)
! 801: while the other names, @code{a}, @code{x} and @code{y}, denote
! 802: mathematical objects, that is, indeterminates.
! 803: In general, program variables have names which begin with
! 804: capital letters, while names of indeterminates begin with
! 805: small letters.
! 806: As you can see in the example, program variables are used to hold and
! 807: keep objects, such as numbers and expressions, as their values,
! 808: just like variables in C programming language.
! 809: Whereas, indeterminates cannot have values so that assignment to
! 810: indeterminates are illegal.
! 811: If one wants to get a result by substituting a value for an indeterminate
! 812: in an expression, it is achieved by the function @code{subst} as the
! 813: value of the function.
! 814: \E
1.1 noro 815:
1.2 ! noro 816: \BJP
1.1 noro 817: @node $B3d$j9~$_(B,,, Risa/Asir
818: @section $B3d$j9~$_(B
1.2 ! noro 819: \E
! 820: \BEG
! 821: @node Interruption,,, Risa/Asir
! 822: @section Interruption
! 823: \E
1.1 noro 824:
825: @noindent
1.2 ! noro 826: \BJP
1.1 noro 827: $B7W;;$r<B9TCf$K3d$j9~$_$r$+$1$?$$>l9g(B, $B3d$j9~$_%-%c%i%/%?(B($BDL>o$O(B
828: @kbd{C-c}, DOS $BHG$G$O(B @kbd{C-x}, Mac $BHG$G$O(B
829: @code{command+}@samp{.} ) $B$rF~NO$9$k(B.
1.2 ! noro 830: \E
! 831: \BEG
! 832: To interrupt the @b{Asir} execution, input an interrupt character
! 833: from the keyboard. A @kbd{C-c} is usually used for it.
! 834: (Notice: @kbd{C-x} for DOS version; @code{command+}@samp{.} for Macintosh
! 835: version.)
! 836: \E
1.1 noro 837:
838: @example
839: @@ (x+y)^1000;
840: @kbd{C-c}interrupt ?(q/t/c/d/u/w/?)
841: @end example
842:
843: @noindent
1.2 ! noro 844: \JP $B3FA*Br;h$N0UL#$O<!$NDL$j(B.
! 845: \EG Here, the meaning of options are as follows.
1.1 noro 846:
847: @table @code
1.2 ! noro 848: \BJP
1.1 noro 849: @item q
850: @b{Asir} $B$r=*N;$9$k(B. ($B3NG'$"$j(B)
851: @item t
852: $B%H%C%W%l%Y%k$KLa$k(B. ($B3NG'$"$j(B)
853: @item c
854: $B<B9T$r7QB3$9$k(B.
855: @item d
856: $B%G%P%C%0%b!<%I$KF~$k(B. $B%G%P%C%,$K4X$7$F$O(B @xref{$B%G%P%C%,(B}.
857: @item u
858: @code{register_handler()} (@pxref{ox_reset register_handler}) $B$GEPO?$5$l$?(B
859: $B4X?t$r<B9T8e%H%C%W%l%Y%k$KLa$k(B. ($B3NG'$"$j(B)
860: @item w
861: $BCfCGE@$^$G$NH!?t$N8F$S=P$7Ns$rI=<($9$k(B.
862: @item ?
863: $B3FA*Br;h$N0UL#$r@bL@$9$k(B.
1.2 ! noro 864: \E
! 865: \BEG
! 866: @item q
! 867: Terminates @b{Asir} session. (Confirmation requested.)
! 868: @item t
! 869: Returns to toplevel. (Confirmation requested.)
! 870: @item c
! 871: Resumes to continue the execution.
! 872: @item d
! 873: Enters debugging mode at the next statement of the @b{Asir} program,
! 874: if @b{Asir} has been executing a program loaded from a file.
! 875: Note that it will sometimes take a long time before entering
! 876: debugging mode when @b{Asir} is executing basic functions in the
! 877: algebraic engine, (e.g., arithmetic operation, factorization etc.)
! 878: Detailed description about the debugger will be given in @ref{Debugger}.
! 879: @item u
! 880: After executing a function registered by @code{register_handler()}
! 881: (@pxref{ox_reset register_handler}), returns to toplevel. A confirmation
! 882: is prompted.
! 883: @item w
! 884: Displays the calling sequence up to the interruption.
! 885: @item ?
! 886: Show a brief description of options.
! 887: \E
1.1 noro 888: @end table
889:
1.2 ! noro 890: \BJP
1.1 noro 891: @node $B%(%i!<=hM}(B,,, Risa/Asir
892: @section $B%(%i!<=hM}(B
1.2 ! noro 893: \E
! 894: \BEG
! 895: @node Error handling,,, Risa/Asir
! 896: @section Error handling
! 897: \E
1.1 noro 898:
899: @noindent
1.2 ! noro 900: \BJP
1.1 noro 901: $BAH$_9~$_H!?t$KIT@5$J7?$N0z?t$rEO$7$?>l9g$J$I$K$O<B9T$,CfCG$5$l$k$,(B,
902: $B%f!<%6H!?t$NCf$G%(%i!<$,5/$-$?>l9g$K$O%H%C%W%l%Y%k$KLa$kA0$K<+F0E*$K%G%P%C%0(B
903: $B%b!<%I$KF~$k(B. $B$3$N>uBV$G(B
904: $B%(%i!<$N>l=j(B, $BD>A0$N0z?t$NCM$J$I$rD4$Y$k$3$H$,$G$-$k(B.
905: $BI=<($5$l$k%(%i!<%a%C%;!<%8$O$5$^$6$^$G$"$j(B, $BFbIt$NH!?tL>$K0z$-B3$$$F(B
906: $B%a%C%;!<%8$,I=<($5$l$k(B. $B$3$l$O(B, $B8F$S=P$5$l$?AH$_9~$_H!?t(B
907: $B$HI,$:$7$bBP1~$O$7$J$$(B.
1.2 ! noro 908: \E
! 909: \BEG
! 910: When arguments with illegal types are given to a built-in function,
! 911: an error will be detected and the execution will be quit.
! 912: In many cases, when an error is detected in a built-in function,
! 913: @b{Asir} automatically enters debugging mode before coming back
! 914: to toplevel.
! 915: At that time, one can examine the state of the program,
! 916: for example, inspect argument values just before the error occurred.
! 917: Messages reported there are various depending on cases. They are
! 918: reported after the internal function name. The internal function name
! 919: sometimes differs from the built-in function name that is specified by
! 920: the user program.
! 921: \E
1.1 noro 922:
923: @noindent
1.2 ! noro 924: \BJP
1.1 noro 925: $B$=$NB>(B, $B$5$^$6$^$J860x$K$h$jFbIt1i;;H!?t$K$*$$$F%(%i!<$,@8$:$k$3$H$,(B
926: $B$"$k(B. UNIX $BHG$N>l9g(B, $B$3$l$O<!$N$$$:$l$+$N(B
927: @code{internal error} $B$H$7$FJs9p$5$l(B, $BDL>o$N%(%i!<$HF1MM$K07$C$F(B,
928: $B%G%P%C%0%b!<%I$KF~$k(B.
1.2 ! noro 929: \E
! 930: \BEG
! 931: In the execution of internal functions, errors may happen by various
! 932: reasons. The UNIX version of @b{Asir} will report those errors as one of
! 933: the following @code{internal error}'s, and enters debugging mode just
! 934: like normal errors.
! 935: \E
1.1 noro 936:
937: @table @code
938: @item SEGV
939: @itemx BUS ERROR
940:
1.2 ! noro 941: \BJP
1.1 noro 942: $BAH$_9~$_H!?t$K$h$C$F$O(B, $B0z?t$N7?$r87L)$K%A%'%C%/$;$:$K1i;;%k!<%A%s$K0z(B
943: $B$-EO$7$F$7$^$&$b$N$bB8:_$7$F$$$k(B. $B$3$N$h$&$J>u67$K$*$$$F(B,
944: $BIT@5$J%]%$%s%?(B, $B$"$k$$$O(B NULL $B%]%$%s%?$K$h$k%"%/%;%90cH?$,$"$C$?>l9g(B, $B$3$l$i(B
945: $B$N%(%i!<$H$J$k(B.
1.2 ! noro 946: \E
! 947: \BEG
! 948: Some of the built-in functions transmit their arguments to internal
! 949: operation routines without strict type-checking. In such cases,
! 950: one of these two errors will be reported
! 951: when an access violation caused by an illegal pointer or a NULL pointer
! 952: is detected.
! 953: \E
1.1 noro 954:
955: @item BROKEN PIPE
956:
1.2 ! noro 957: \BJP
1.1 noro 958: $B%W%m%;%94VDL?.$K$*$$$F(B, $BAj<j@h$N%W%m%;%9$H$N4V$N%9%H%j!<%`(B
959: $B$,4{$KB8:_$7$F$$$J$$>l9g(B ($BNc$($P4{$KAj<j@h$N%W%m%;%9$,=*N;$7$F$$$k>l9g$J$I(B)
960: $B$K(B, $B$=$N%9%H%j!<%`$KF~=PNO$7$h$&$H$7$?>l9g$K$3$N%(%i!<$H$J$k(B.
1.2 ! noro 961: \E
! 962: \BEG
! 963: In the process communication, this error will be reported if a process
! 964: attempts to read from or to write onto the partner process when the
! 965: stream to the partner process does not already exist, (e.g., terminated
! 966: process.)
! 967: \E
1.1 noro 968: @end table
969:
970: @noindent
1.2 ! noro 971: \BJP
1.1 noro 972: $B$3$l$i$O<B:]$K$O(B, $BAH$_9~$_H!?t$NF~8}$K$*$$$F(B, $B0z?t$r40A4$K%A%'%C%/(B
973: $B$9$k$3$H$K$h$jBgItJ,$OKI$2$k$,(B, $B<j4V$,B?$/$+$+$k$3$H$H(B, $B>l9g$K(B
974: $B$h$C$F$O8zN($rMn$9$3$H$K$b$J$k$?$a(B, $B$"$($F0z?t%A%'%C%/$O%f!<%6(B
975: $BG$$;$K$7$F$"$k(B.
1.2 ! noro 976: \E
! 977: \BEG
! 978: For UNIX version, even in such a case, the process itself does not
! 979: terminate because such an error can be caught by @code{signal()} and
! 980: recovered.
! 981: To remove this weak point, complete type
! 982: checking of all arguments are indispensable at the entry of a built-in
! 983: function, which requires an enormous amount of re-making efforts.
! 984: \E
1.1 noro 985:
1.2 ! noro 986: \BJP
1.1 noro 987: @node $B7W;;7k2L$*$h$SFC<l$J?t(B,,, Risa/Asir
988: @section $B7W;;7k2L(B, $BFC<l$J?t(B
1.2 ! noro 989: \E
! 990: \BEG
! 991: @node Referencing results and special numbers,,, Risa/Asir
! 992: @section Referencing results and special numbers
! 993: \E
1.1 noro 994:
995: @noindent
1.2 ! noro 996: \JP @code{@@} $B$O%(%9%1!<%WJ8;z$H$7$F;HMQ$5$l$k(B. $B8=:_<!$N$h$&$J5,Dj$,$"$k(B.
! 997: \BEG
! 998: An @code{@@} used for an escape character; rules currently in force
! 999: are as follows.
! 1000: \E
1.1 noro 1001: @table @code
1.2 ! noro 1002: \BJP
1.1 noro 1003: @item @@@var{n}
1004: @var{n} $BHVL\$N7W;;7k2L(B.
1005: @item @@@@
1006: $BD>A0$N7W;;7k2L(B.
1007: @item @@i
1008: $B5u?tC10L(B.
1009: @item @@pi
1010: $B1_<~N((B.
1011: @item @@e
1012: $B<+A3BP?t$NDl(B.
1013: @item @@
1014: 2 $B85BN(B GF(2) $B>e$N0lJQ?tB?9`<0$NJQ?t(B ($BITDj85(B).
1015: @item @@>, @@<, @@>=, @@<=, @@==, @@&&, @@||
1016: quantifier elimination $B$K$*$1$k(B, $B0l3,=R8lO@M}1i;;;R(B
1.2 ! noro 1017: \E
! 1018: \BEG
! 1019: @item @@@var{n}
! 1020: The evaluated result of @var{n}-th input command
! 1021: @item @@@@
! 1022: The evaluated result of the last command
! 1023: @item @@i
! 1024: The unit of imaginary number, square root of -1.
! 1025: @item @@pi
! 1026: The number pi,
! 1027: the ratio of a circumference of the circle and its diameter.
! 1028: @item @@e
! 1029: Napier's number, the base of natural logarithm.
! 1030: @item @@
! 1031: A generator of GF(2^m), a finite field of characteristic 2, over GF(2).
! 1032: It is a root of an irreducible univariate polynomial over GF(2)
! 1033: which is set as the defining polynomial of GF(2^m).
! 1034: @item @@>, @@<, @@>=, @@<=, @@==, @@&&, @@||
! 1035: Fist order logical operators. They are used in quantifier elimination.
! 1036: \E
1.1 noro 1037: @end table
1038:
1039: @example
1040: [0] fctr(x^10-1);
1041: [[1,1],[x-1,1],[x+1,1],[x^4+x^3+x^2+x+1,1],[x^4-x^3+x^2-x+1,1]]
1042: [1] @@@@[3];
1043: [x^4+x^3+x^2+x+1,1]
1044: [2] eval(sin(@@pi/2));
1045: 1.000000000000000000000000000000000000000000000000000000000
1046: [3] eval(log(@@e),20);
1047: 0.99999999999999999999999999998
1048: [4] @@0[4][0];
1049: x^4-x^3+x^2-x+1
1050: [5] (1+@@i)^5;
1051: (-4-4*@@i)
1052: [6] eval(exp(@@pi*@@i));
1053: -1.0000000000000000000000000000
1054: [7] (@@+1)^9;
1055: (@@^9+@@^8+@@+1)
1056: @end example
1057:
1058: @noindent
1.2 ! noro 1059: \BJP
1.1 noro 1060: $B%H%C%W%l%Y%k$G7W;;$5$l$?CM$O$3$N$h$&$K%R%9%H%j$H$7$F<h$j=P$72DG=$G$"$k$,(B,
1061: $B$3$N$3$H$O(B, $B%,%Y!<%8%3%l%/%?$K$H$C$F$OIiC4$r$b$?$i$92DG=@-$,$"$k(B. $BFC$K(B,
1062: $BBg$-$J<0$r%H%C%W%l%Y%k$G7W;;$7$?>l9g(B, $B$=$N8e$N(B GC $B;~4V$,5^B.$KA}Bg$9$k2D(B
1063: $BG=@-$,$"$k(B. $B$3$N$h$&$J>l9g(B, @code{delete_history()}
1064: (@pxref{delete_history,,@code{delete_history}}) $B$,M-8z$G$"$k(B.
1.2 ! noro 1065: \E
! 1066: \BEG
! 1067: As you can see in the above example,
! 1068: results of toplevel computation can be referred to
! 1069: by @code{@@} convention.
! 1070: This is convenient for users, while it sometimes imposes a heavy
! 1071: burden to the garbage collector.
! 1072: It may happen that GC time will rapidly increase after computing
! 1073: a very large expression at the toplevel.
! 1074: In such cases @code{delete_history()}
! 1075: (@pxref{delete_history,,@code{delete_history}}) takes effect.
! 1076: \E
1.1 noro 1077:
1078:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>