Annotation of OpenXM/src/asir-doc/parts/risa.texi, Revision 1.17
1.17 ! takayama 1: @comment $OpenXM: OpenXM/src/asir-doc/parts/risa.texi,v 1.16 2015/03/11 06:08:05 noro Exp $
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::
1.9 noro 9: * Installation::
1.1 noro 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.8 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.8 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
1.11 noro 81: $B%=%U%H%&%'%"(B (@code{gc-6.1alpha5}) $B$rMQ$$$F$$$k(B. $B$3$l$O%,!<%Y%8%3%l%/%7%g%s(B
1.1 noro 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
1.11 noro 87: manager), a free software distributed by Boehm (@code{gc-6.1alpha5}).
1.2 noro 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}
1.8 noro 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: @node Installation,,, Risa/Asir
213: @section Installation
214:
215: \JP $B0J2<$N<jB3$-$GITL@$JE@(B, $BITET9g$JE@$,$"$C$?>l9g$NLd$$9g$o$;$O(B
216: \BEG
1.9 noro 217: Any questions and any comments on this manual are welcome by e-mails
1.2 noro 218: to the following address.
219: \E
1.1 noro 220:
221: @example
1.11 noro 222: noro@@math.kobe-u.ac.jp
1.1 noro 223: @end example
224:
225: @noindent
1.2 noro 226: \JP $B08$K(B e-mail $B$G$*4j$$$7$^$9(B.
1.1 noro 227:
228: @menu
1.9 noro 229: * UNIX binary version::
230: * UNIX source code version::
1.2 noro 231: * Windows version::
1.1 noro 232: @end menu
233:
1.9 noro 234: @node UNIX binary version,,, Installation
235: @subsection UNIX binary version
1.1 noro 236:
237: @noindent
1.2 noro 238: \BJP
1.9 noro 239: $B%?!<%2%C%H(B CPU/OS $B$KBP1~$9$k(B @samp{asir.tgz} $B$,I,MW$G$"$k(B.
1.1 noro 240: $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
241: $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
242: @samp{/usr/local/lib} $B$K(B @samp{asir} $B$H$$$&%G%#%l%/%H%j$H$7$F(B
243: $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
244: $B%G%#%l%/%H%j$H8F$V(B.
1.2 noro 245: \E
246: \BEG
1.9 noro 247: A file @samp{asir.tgz} suitable for the target machine/architecture
1.2 noro 248: is required. After getting it,
249: you have to unpack it by @code{gzip}. First of all, determine
250: a derectory where binaries and library files are installed.
251: We call the directory the @b{library directory}.
252: The following installs the files in @samp{/usr/local/lib/asir}.
253: \E
1.1 noro 254:
255: @example
256: # gzip -dc asir.tgz | ( cd /usr/local/lib; tar xf - )
257: @end example
258:
1.2 noro 259: \JP $B8D?ME*$K;HMQ$9$k>l9g$K$O(B, @samp{$HOME}$B$J$I$KCV$$$F$b$h$$(B.
260: \BEG
261: In this case you don't have to set any environment variable.
1.1 noro 262:
1.2 noro 263: You can install them elsewhere.
264: \E
1.1 noro 265: @example
266: % gzip -dc asir.tgz | ( cd $HOME; tar xf - )
267: @end example
268:
269: @noindent
1.2 noro 270: \BJP
1.1 noro 271: $B$3$N>l9g(B, $B%i%$%V%i%j%G%#%l%/%H%j$NL>A0$r4D6-JQ?t(B
272: @code{ASIR_LIBDIR} $B$K@_Dj$9$kI,MW$,$"$k(B.
1.2 noro 273: \E
274: \BEG
275: In this case you have to set the name of the library directory
276: to the environment variable @code{ASIR_LIBDIR}.
277: \E
1.1 noro 278:
279: @example
280: % setenv ASIR_LIBDIR $HOME/asir
281: @end example
282:
283: @noindent
1.2 noro 284: \BJP
1.1 noro 285: Asir $BK\BN$O(B, $B%i%$%V%i%j%G%#%l%/%H%j$N(B @samp{asir} $B$G$"$k(B.
286: @samp{/usr/local/bin} $B$"$k$$$O%f!<%6$N<B9T%U%!%$%k%5!<%A%Q%9(B
287: $B$N$I$3$+$K%7%s%\%j%C%/%j%s%/$r:n$k$HJXMx$G$"$k(B.
1.2 noro 288: \E
289: \BEG
290: @b{Asir} itself is in the library directory. It will be convenient
291: to create a symbolic link to it from @samp{/usr/local/bin} or
292: the user's search path.
293: \E
1.1 noro 294:
295: @example
296: # ln -s /usr/local/lib/asir/asir /usr/local/bin/asir
297: @end example
298:
299: @noindent
1.9 noro 300: \JP $B$3$l$G(B @samp{asir} $B$,5/F0$G$-$k(B.
1.2 noro 301: \BEG
1.9 noro 302: Then you can start @samp{asir}.
1.2 noro 303: \E
1.1 noro 304:
305: @example
306: % /usr/local/bin/asir
1.9 noro 307: This is Risa/Asir, Version 20000821.
308: Copyright (C) FUJITSU LABORATORIES LIMITED.
309: 1994-2000. All rights reserved.
310: [0]
1.1 noro 311: @end example
312:
1.9 noro 313: @node UNIX source code version,,, Installation
314: @subsection UNIX source code version
1.1 noro 315:
1.9 noro 316: \BEG
1.11 noro 317: First of all you have to determine the install directory.
318: In the install directory, the following subdirectories are put:
319: \E
320:
321: \BJP
322: $B$^$:(B, $B%$%s%9%H!<%k@h$N%G%#%l%/%H%j$r7h$a$kI,MW$,$"$k(B.
323: $B$3$3$K$O(B, $B0J2<$N%5%V%G%#%l%/%H%j$,CV$+$l$k(B.
324: \E
325:
326: @itemize @bullet
327: @item bin
328:
329: \EG executables of PARI and Asir
330: \JP PARI $B$*$h$S(B Asir $B$N<B9T2DG=%U%!%$%k(B
331:
332: @item lib
333:
334: \EG library files of PARI and Asir
335: \JP PARI $B$*$h$S(B Asir $B$N%i%$%V%i%j(B
336: @item include
337:
338: \EG header files of PARI
339: \JP PARI $B$N%X%C%@%U%!%$%k(B
340: @end itemize
341:
342: \BEG
343: These subdirectories are created automatically if they does not exist.
344: If you can be a root, it is recommended to set the install directory
345: to @samp{/usr/local}. In the following the directory is denoted by TARGETDIR.
346: \E
347: \BJP
348: $B$3$l$i$N%5%V%G%#%l%/%H%j$OL5$1$l$P<+F0E*$K:n$i$l$k(B.
349: root $B8"8B$,$"$k>l9g$K$O(B, @samp{/usr/local} $B$K%$%s%9%H!<%k$9$k$3$H$r(B
350: $B$*4+$a$9$k(B. $B0J2<(B, $B$3$N%G%#%l%/%H%j$r(B TARGETDIR $B$H=q$/(B.
351: \E
352:
353: \BEG
354: Then, install PARI library. After getting @samp{pari.tgz},
355: unpack and install it as follows:
1.2 noro 356: \E
1.9 noro 357: \BJP
1.11 noro 358: $B$^$:(B PARI $B%i%$%V%i%j$r%$%s%9%H!<%k$9$kI,MW$,$"$k(B.
359: @samp{pari.tgz} $B$rF~<j8e(B, $BE,Ev$J%G%#%l%/%H%j$GE83+(B, $B%$%s%9%H!<%k$9$k(B.
1.2 noro 360: \E
1.1 noro 361:
362: @example
1.11 noro 363: % gzip -dc pari.tgz | tar xvf -
364: % cd pari
365: % ./Configure --prefix=TARGETDIR
366: % make all
367: % su
1.9 noro 368: # make install
369: # make install-lib-sta
1.1 noro 370: @end example
371:
1.2 noro 372: \BJP
1.11 noro 373: make $BCf$K%(%i!<$G;_$^$C$?$i(B, $B0J2<$r<B9T$9$k(B.
1.9 noro 374: \E
1.11 noro 375:
1.9 noro 376: \BEG
1.11 noro 377: While executing 'make install', the procedure may stop due to
378: some error. Then try the following:
379: \E
380:
381: @example
382: % cd Oxxx
383: % make lib-sta
384: % su
385: # make install-lib-sta
386: # make install-include
387: # exit
388: %
389: @end example
390:
391: \BEG
392: In the above example, xxx denotes the name of the target operating system.
393: Although GP is not built, the library necessary for building asir2000
394: will be generated.
395:
396: After getting @samp{asir2000.tgz}, unpack it
1.9 noro 397: and install necessary files as follows.
1.2 noro 398: \E
1.1 noro 399:
1.11 noro 400: \BJP
401: $B>e$NNc$G(B, xxx $B$O8=:_%?!<%2%C%H$H$J$C$F$$$k(B OS $B$NL>A0$r<($9(B.
402: GP $B$O%$%s%9%H!<%k$5$l$J$$$,(B, asir2000 $B$N:n@.$KI,MW$J%U%!%$%k$O%$%s%9%H!<%k(B
403: $B$5$l$k(B.
404:
405: @samp{asir2000.tgz} $B$rF~<j8e(B, $BE,Ev$J%G%#%l%/%H%j$G(B
406: $B$GE83+$7(B, $B0J2<$N<j=g$G%$%s%9%H!<%k$9$k(B.
407: \E
408:
1.1 noro 409: @example
1.9 noro 410: % gzip -dc asir.tgz | tar xf -
411: % cd asir2000
1.11 noro 412: % ./configure --prefix=TARGETDIR --with-pari --enable-plot
1.9 noro 413: % make
414: % su
415: # make install
416: # make install-lib
417: # make install-doc
1.11 noro 418: # exit
1.1 noro 419: @end example
420:
1.2 noro 421: @node Windows version,,, Installation
422: @subsection Windows version
1.1 noro 423:
424: @noindent
1.2 noro 425: \BJP
1.15 takayama 426: @samp{asirwin32.msi} (32bit $BHG%$%s%9%H!<%i!<(B) $B$^$?$O(B
427: @samp{asirwin64.msi} (64bit $BHG%$%s%9%H!<%i!<(B)$B$rMQ$$$F%$%s%9%H!<%k$9$k(B. $B$3$N%$%s%9%H!<%i!<$O(B $B4D6-JQ?t(B @samp{ASIR_ROOTDIR} $B$K%$%s%9%H!<%k$7$?%U%)%k%@$r@_Dj$9$k(B.
428: (zip $BHG$O(B @samp{ASIR_ROOTDIR} $B$r<jF0$G@_Dj$9$kI,MW$,$"$j(B, $B$^$?%;%-%e%j%F%#%V%m%C%/$r2r=|$7$F$+$iE83+$7$J$$$H$$$1$J$$(B. zip$BHG$O3+H/<TMQ(B.)
429: $B%G%9%/%H%C%W$N(B asirgui $B$r%@%V%k%/%j%C%/$9$l$P(B asir $B$,%9%?!<%H$9$k(B. $B%F%-%9%H%(%G%#%?$H$NO"7H5!G=$r;H$&$K$O(B,
430: @samp{%ASIR_ROOTDIR%\share\editor} $B$N;X<($K=>$$@_Dj$r9T$&(B.
431: $B$J$*%$%s%9%H!<%k%U%)%k%@!<L>$d%f!<%6!<$N%[!<%`%U%)%k%@L>$,$$$o$f$k%@%aJ8;z$r4^$`>l9g$O@5>o$KF0:n$7$J$$5!G=$,$"$k(B.
432: (|$B%@%aJ8;z(B $B%A%'%C%+!<(B| $B$G8!:w$7$F<+J,$N%f!<%6!<L>$,3:Ev$9$k$+3NG'(B)
433: \E
434: \BEG
435: The installers are
436: @samp{asirwin32.msi} (32bit version) and
437: @samp{asirwin64.msi} (64bit version).
438: These installers set the installed folder to the environmental variable
439: @samp{ASIR_ROOTDIR}.
440: (If you install Risa/Asir by the zip version,
441: you need to set the environmental variable @samp{ASIR_ROOTDIR}
442: by hand.
443: You also need to unlock the security block before unzipping.
444: The zip version is for developpers.)
445: Double click the ``asirgui'' on the desktop,
446: then the asir starts.
447: To use a unified environment with text editors,
448: follow the instruction in
449: @samp{%ASIR_ROOTDIR%\share\editor}.
450: If the folder name to which you install asir or your home folder name
451: contain non-ascii characters,
452: some functions of asir may not work properly.
453: For example, in the Japense locale, names which may cause troubles
454: can be checked by ``damemoji checker''.
1.2 noro 455: \E
1.1 noro 456:
1.17 ! takayama 457: @noindent
! 458: ChangeLog
! 459: @itemize @bullet
! 460: \BJP
! 461: @item Windows $BHG$O(B signal $B$r(B thread $B$G(B emulate $B$9$k$?$a(B ctrl-C $B$d(B OpenXM $BDL?.$GLdBj$r5/$3$9$3$H$,$"$C$?(B. $B<!$NJQ99$K$h$j$+$J$jLdBj$,2~A1$5$l$?(B (2017-08-30).
! 462: \E
! 463: \BEG
! 464: @item Signals are emulated by threads. Some bugs related to signals are fixed by the following commit (2017-08-30).
! 465: \E
! 466: @item
! 467: 1.13 gc-7.0-risa.diff,
! 468: 1.37 parif.c,
! 469: 1.101 ca.h,
! 470: 1.40 ox.c,
! 471: 1.79 ox_asir.c,
! 472: 1.17 gc_risa.c,
! 473: 1.97 glob.c,
! 474: 1.30 ox_plot.c,
! 475: 1.9 io.c,
! 476: 1.12 plot.c
! 477: @end itemize
! 478:
1.2 noro 479: \BJP
1.1 noro 480: @node $B%3%^%s%I%i%$%s%*%W%7%g%s(B,,, Risa/Asir
481: @section $B%3%^%s%I%i%$%s%*%W%7%g%s(B
1.2 noro 482: \E
483: \BEG
484: @node Command line options,,, Risa/Asir
485: @section Command line options
486: \E
1.1 noro 487:
488: @noindent
1.2 noro 489: \JP $B%3%^%s%I%i%$%s%*%W%7%g%s$O<!$NDL$j(B.
490: \EG Command-line options for the command @samp{asir} are as follows.
1.1 noro 491:
492: @table @code
493:
494: @item -heap @var{number}
1.2 noro 495: \BJP
1.1 noro 496: @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.
497: $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
498: $B$rJQ99$9$k>l9g(B, @code{-heap} $B$rMQ$$$k(B. $BC10L$O%V%m%C%/$G$"$k(B.
499: 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 500: \E
501: \BEG
502: In @b{Risa/Asir}, 4KB is used as an unit, called block,
503: for memory allocation.
504: By default, 16 blocks (64KB) are allocated initially.
505: This value can be changed by giving an option @code{-heap}
506: a number parameter in unit block.
507: Size of the heap area is obtained by a Built-in function heap(),
508: the result of which is a number in Bytes.
509: \E
1.1 noro 510:
511: @item -adj @var{number}
1.2 noro 512: \BJP
1.1 noro 513: $B$3$NCM$,Bg$-$$$[$I(B, $B;HMQ%a%b%jNL$OBg$-$/$J$k$,(B, GC $B;~4V$,>/$J$/$J(B
514: $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
515: $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
516: $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
517: $BBg$-$/(B ($BNc$($P(B 8) $B@_Dj$9$k(B.
1.2 noro 518: \E
519: \BEG
520: Heap area will be stretched by the memory manager,
521: if the size of reclaimed memories is less than 1/@var{number}
522: of currently allocated heap area.
523: The default value for @var{number} is 3.
524: If you do not prefer to stretch heap area by some reason, perhaps by
525: restriction of available memories, but if prefer to resort to
526: reclaiming garbages as far as possible,
527: then a large value should be chosen for @var{number}, e.g., 8.
528: \E
1.1 noro 529:
530: @item -norc
1.2 noro 531: \JP $B=i4|2=%U%!%$%k(B @samp{$HOME/.asirrc} $B$rFI$^$J$$(B.
532: \BEG
533: When this option is specified, @b{Asir} does not read the
534: initial file @samp{$HOME/.asirrc}.
1.12 ohara 535: \E
536:
537: @item -quiet
538: \JP $B5/F0;~$NCx:n8"I=<($r9T$o$J$$(B.
539: \BEG Be quiet at boot time.
1.2 noro 540: \E
1.1 noro 541:
542: @item -f @var{file}
1.2 noro 543: \BJP
1.1 noro 544: $BI8=`F~NO$NBe$o$j$K(B, @var{file} $B$+$iF~NO$rFI$_9~$s$G<B9T$9$k(B.
545: $B%(%i!<$N:]$K$O$?$@$A$K=*N;$9$k(B.
1.2 noro 546: \E
547: \BEG
548: Instead of the standard input, @var{file} is used as the input.
549: Upon an error, the execution immediately terminates.
550: \E
1.1 noro 551:
552: @item -paristack @var{number}
1.2 noro 553: \BJP
1.1 noro 554: @b{PARI} (@pxref{pari}) $B@lMQ$NNN0h$NBg$-$5$r;XDj$9$k(B. $BC10L$O%P%$%H(B. $B%G%U%)(B
555: $B%k%H$G$O(B 1 MB.
1.2 noro 556: \E
557: \BEG
558: This option specifies the private memory size for @code{PARI} (@pxref{pari}).
559: The unit is Bytes. By default, it is set to 1 MB.
560: \E
1.1 noro 561:
562: @item -maxheap @var{number}
1.2 noro 563: \BJP
1.1 noro 564: 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
565: $B>l9g(B, $B<B:]$K$O(B @code{limit} $B%3%^%s%I$GI=<($5$l$k(B @code{datasize} $B$NCM(B
566: $B$K@)8B$5$l$F$$$k$?$a(B, @code{-maxheap} $B$N;XDj$,$J$/$F$b0lDjNL0J>e$K(B
567: heap $B$r3MF@$G$-$J$$>l9g$,$"$k$N$GCm0U(B.)
1.2 noro 568: \E
569: \BEG
570: This option sets an upper limit of the heap size. The unit is Bytes.
571: Note that the size is already limited by the value of @code{datasize}
572: displayed by the command @code{limit} on UNIX.
573: \E
1.1 noro 574: @end table
575:
1.2 noro 576: \BJP
1.1 noro 577: @node $B4D6-JQ?t(B,,, Risa/Asir
578: @section $B4D6-JQ?t(B
1.2 noro 579: \E
580: \BEG
581: @node Environment variable,,, Risa/Asir
582: @section Environment variable
583: \E
1.1 noro 584:
585: @noindent
1.2 noro 586: \BJP
1.15 takayama 587: @b{Asir} $B$N<B9T$K4X$9$k$$$/$D$+$N4D6-JQ?t$,B8:_$9$k(B. UNIX $B>e$G$O4D6-JQ?t(B $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 $B$9$k(B. Windows $B$G$O(B, [$B4D6-JQ?t$NJT=8(B] $B$G@_Dj$9$k(B.
1.2 noro 588: \E
589: \BEG
590: There exist several environment variables concerning with an execution
591: of @b{Asir}. On UNIX, an environment variable is set from shells, or
1.15 takayama 592: in rc files of shells. On Windows, it can be set from
593: [Editing environmetal variables].
1.2 noro 594: \E
1.1 noro 595: @itemize @bullet
596: @item
597: @code{ASIR_LIBDIR}
1.8 noro 598: @*
1.2 noro 599: \BJP
1.15 takayama 600: $B$3$N4D6-JQ?t$OGQ;_M=Dj(B.
1.2 noro 601: \E
602: \BEG
1.15 takayama 603: This environmental variable is obsolete.
1.13 takayama 604: \E
605: @item
606: @code{ASIR_CONTRIB_DIR}
607: @*
608: \BJP
1.15 takayama 609: $B$3$N4D6-JQ?t$OGQ;_M=Dj(B.
610: \E
611: \BEG
612: This environmental variable is obsolete.
1.2 noro 613: \E
1.1 noro 614:
615: @item
616: @code{ASIRLOADPATH}
1.8 noro 617: @*
1.2 noro 618: \BJP
1.1 noro 619: $B%m!<%I$5$l$k%U%!%$%k$,$"$k%G%#%l%/%H%j$r(B UNIX $B$N>l9g(B ':',
620: Windows$B$N>l9g(B ';' $B$G6h@Z$C$FJB$Y$k(B. $B%G%#%l(B
621: $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
622: $B%U%!%$%k$,(B @code{ASIRLOADPATH} $B$K$J$+$C$?>l9g(B, $B%i%$%V%i%j%G%#%l%/%H%j(B
623: $B$b%5!<%A$5$l$k(B.
1.2 noro 624: \E
625: \BEG
626: This environment specifies directories which contains files to be
627: loaded by @b{Asir} command @code{load()}.
628: Directories are separated by a `:' on UNIX, a ';' on Windows respectively.
629: The search order is from the left to the right.
630: After searching out all directories in @code{ASIRLOADPATH},
631: or in case of no specification at all,
632: the library directory will be searched.
633: \E
1.15 takayama 634: \BJP
635: unix $BHG$N%i%$%V%i%j%G%#%l%/%H%j$O(B
636: \E
637: \BEG
638: The library directories of the unix version are
639: \E
640: @samp{$OpenXM_HOME/lib/asir-contrib},
641: @samp{$OpenXM_HOME/lib/asir},
642: /usr/local/lib/asir-contrib,
643: /usr/local/lib/asir.
644: \BJP
645: Windows $BHG$N%i%$%V%i%j%G%#%l%/%H%j$O(B,
646: @samp{OpenXM_HOME} $B$,@_Dj$5$l$F$$$J$$$H$-$O(B,
647: \E
648: \BEG
649: When @samp{OpenXM_HOME} is not set,
650: the library directories of the Windows version are
651: \E
652: %ASIR_ROOTDIR%\lib\asir-contrib,
653: %ASIR_ROOTDIR%\lib\asir.
654: \BJP
655: @samp{OpenXM_HOME} $B@_Dj$5$l$F$$$l$P(B, unix $BHG$HF1MM(B.
656: \E
657: \BEG
658: When @samp{OpenXM_HOME} is set, the library directories are same with
659: the unix version.
660: \E
661: \BJP
662: $B$^$?(BWindows $BHG$N>l9g(B, $B8D?MNN0h(B
663: @samp{%APPDATA%\OpenXM\lib\asir-contrib}
664: $B$b%i%$%V%i%j%G%#%l%/%H%j$H$J$k(B.
665: $B$J$*(B unix $BHG$G$O>e5-$N$h$&$J8D?MNN0h$rC5:w$9$k;EAH$_$O$J$/(B,
666: OpenXM $BHG$N(B asir $B$G$O(B
1.16 noro 667: @samp{OpenXM/rc/} $B$K$*$$$F(B @samp{ASIRLOADPATH} $B$G(B
1.15 takayama 668: @samp{$OpenXM_tmp/OpenXM/lib/asir-contrib} $B$r%5!<%A%Q%9$K2C$($F$$$k(B. asir_contrib_update $B$r;2>H(B.
669: which, ctrl("loadpath"), asir2000/parse/load.c $B$b;2>H(B.
670: \E
671: \BEG
672: In the Windows version, the private folder
673: @samp{%APPDATA%\OpenXM\lib\asir-contrib}
674: is also set to the library folders.
675: In the unix version, there is no default private library folder.
676: In the OpenXM/unix version,
677: @samp{$OpenXM_tmp/OpenXM/lib/asir-contrib} is added to the @samp{ASIRLOADPATH}
1.16 noro 678: by a script in @samp{OpenXM/rc/}.
1.15 takayama 679: See also asir_contrib_update.
680: See which, ctrl("loadpath"), asir2000/parse/load.c.
681: \E
682:
1.1 noro 683: @item
684: @code{HOME}
1.8 noro 685: @*
1.2 noro 686: \BJP
1.1 noro 687: @var{-norc} $B%*%W%7%g%s$D$-$G5/F0$7$J$$>l9g(B, @samp{$HOME/.asirrc}$B$,$"$l$P(B,
688: $BM=$a$3$N%U%!%$%k$r<B9T$9$k(B. @code{HOME} $B$,@_Dj$5$l$F$$$J$$>l9g(B, UNIX $BHG(B
689: $B$G$O$J$K$bFI$^$J$$$,(B, Windows $BHG$G$O(B Asir $B%a%$%s%G%#%l%/%H%j(B
690: (@code{get_rootdir()} $B$GJV$5$l$k%G%#%l%/%H%j(B) $B$N(B @samp{.asirrc} $B$rC5$7(B,
691: $B$"$l$P$=$l$r<B9T$9$k(B.
1.2 noro 692: \E
693: \BEG
694: If @b{Asir} is invoked without @var{-norc}, @samp{$HOME/.asirrc}, if exists,
695: is executed. If @code{HOME} is not set, nothing is done on UNIX. On Windows,
696: @samp{.asirrc} in @b{Asir root directory} is executed if it exists.
697: \E
1.1 noro 698: @end itemize
699:
1.2 noro 700: \BJP
1.1 noro 701: @node $B5/F0$+$i=*N;$^$G(B,,, Risa/Asir
702: @section $B5/F0$+$i=*N;$^$G(B
1.2 noro 703: \E
704: \BEG
705: @node Starting and Terminating an Asir session,,, Risa/Asir
706: @section Starting and Terminating an @b{Asir} session
707: \E
1.1 noro 708:
709: @noindent
1.2 noro 710: \JP @b{Asir} $B$r5/F0$9$k$H(B,
711: \BEG
712: Run @b{Asir}, then the copyright notice and the first prompt
713: will appear on your screen,
714: and a new @b{Asir} session will be started.
715: \E
716:
1.1 noro 717: @example
718: [0]
719: @end example
720:
721: @noindent
1.2 noro 722: \BJP
1.1 noro 723: $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}
724: (Windows $BHG$N>l9g(B, @code{HOME} $B@_Dj$5$l$F$$$J$$>l9g$K$O(B @code{get_rootdir()}
725: $B$GJV$5$l$k%G%#%l%/%H%j$K$"$k(B @samp{.asirrc})
726: $B$,B8:_$7$F$$$k>l9g(B, $B$3$N%U%!%$%k$r(B @b{Asir} $B%f!<%68@8l$G$+$+$l$?(B
727: $B%U%!%$%k$H8+$J$7(B, $B2r<a<B9T$9$k(B.
1.2 noro 728: \E
729: \BEG
730: When initialization file @samp{$HOME/.asirrc} exists,
731: @b{Asir} interpreter executes it at first taking it as a program
732: file written in @b{Asir}.
733: \E
1.1 noro 734:
735: @noindent
1.2 noro 736: \BJP
1.1 noro 737: $B%W%m%s%W%H$OF~NO$NHV9f$rI=$9(B. $B%;%C%7%g%s$O(B, @code{end;} $B$^$?$O(B
738: @code{quit;} $B$rF~NO$9$k$3$H$K$h$j=*N;$9$k(B. $BF~NO$O(B, @samp{;} $B$^$?$O(B
739: @samp{$} $B$^$G$r0l6h@Z$j$H$7$FI>2A$5$l$k(B. @samp{;} $B$N$H$-7k2L$OI=<($5$l(B,
740: @samp{$} $B$N$H$-I=<($5$l$J$$(B.
1.2 noro 741: \E
742: \BEG
743: The prompt indicates the sequential number of your input commands to
744: @b{Asir}.
745: The session will terminate when you input @code{end;} or @code{quit;}
746: to @b{Asir}.
747: Input commands are evaluated statement by statement.
748: A statement normally ends with its terminator
749: @samp{;} or @samp{$}.
750: (There are some exceptions. See, syntax of @b{Asir}.)
751: The result will be displayed when the command, i.e. statement,
752: is terminated by a @samp{;},
753: and will not when terminated by a @samp{$}.
754: \E
1.1 noro 755:
756: @example
757: % asir
758: [0] A;
759: 0
760: [1] A=(x+y)^5;
761: x^5+5*y*x^4+10*y^2*x^3+10*y^3*x^2+5*y^4*x+y^5
762: [2] A;
763: x^5+5*y*x^4+10*y^2*x^3+10*y^3*x^2+5*y^4*x+y^5
764: [3] a=(x+y)^5;
765: evalpv : invalid assignment
766: return to toplevel
767: [3] a;
768: a
769: [4] fctr(A);
770: [[1,1],[x+y,5]]
771: [5] quit;
772: %
773: @end example
774:
775: @noindent
1.2 noro 776: \BJP
1.1 noro 777: $B$3$NNc$G$O(B, @code{A}, @code{a}, @code{x}, @code{y} $B$J$kJ8;z$,;HMQ$5$l$F$$$k(B.
778: @code{A} $B$O%W%m%0%i%`$K$*$1$kJQ?t$G(B, @code{a}, @code{x}, @code{y} $B$O?t3XE*(B
779: $B$J0UL#$G$NITDj85$G$"$k(B. $B0lHL$K%W%m%0%i%`JQ?t$OBgJ8;z$G;O$^$j(B,
780: $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,
781: $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.
782: $B0lJ}(B, $BITDj85$O$=$l<+?H$GCM$r;}$D$3$H$O$G$-$:(B, $B=>$C$F(B, $BITDj85$KBP$9$k(B
783: $BBeF~$O5v$5$l$J$$(B. $B8e$K<($9$,(B, $BITDj85$KBP$9$kBeF~$O(B, $BAH$_9~$_H!?t(B @code{subst()}
784: $B$K$h$jL@<(E*$K9T$o$l$k(B.
1.2 noro 785: \E
786: \BEG
787: In the above example, names @code{A}, @code{a}, @code{x} and @code{y}
788: are used to identify mathematical and programming objects.
789: There, the name @code{A} denotes a program variable
790: (some times called simply as a program variable.)
791: while the other names, @code{a}, @code{x} and @code{y}, denote
792: mathematical objects, that is, indeterminates.
793: In general, program variables have names which begin with
794: capital letters, while names of indeterminates begin with
795: small letters.
796: As you can see in the example, program variables are used to hold and
797: keep objects, such as numbers and expressions, as their values,
798: just like variables in C programming language.
799: Whereas, indeterminates cannot have values so that assignment to
800: indeterminates are illegal.
801: If one wants to get a result by substituting a value for an indeterminate
802: in an expression, it is achieved by the function @code{subst} as the
803: value of the function.
804: \E
1.1 noro 805:
1.2 noro 806: \BJP
1.1 noro 807: @node $B3d$j9~$_(B,,, Risa/Asir
808: @section $B3d$j9~$_(B
1.2 noro 809: \E
810: \BEG
811: @node Interruption,,, Risa/Asir
812: @section Interruption
813: \E
1.1 noro 814:
815: @noindent
1.2 noro 816: \BJP
1.1 noro 817: $B7W;;$r<B9TCf$K3d$j9~$_$r$+$1$?$$>l9g(B, $B3d$j9~$_%-%c%i%/%?(B($BDL>o$O(B
1.10 noro 818: @kbd{C-c}, Windows, DOS $BHG$G$O(B @kbd{C-x} $B$rF~NO$9$k(B.
1.2 noro 819: \E
820: \BEG
821: To interrupt the @b{Asir} execution, input an interrupt character
822: from the keyboard. A @kbd{C-c} is usually used for it.
1.10 noro 823: (Notice: @kbd{C-x} on Windows and DOS.)
1.2 noro 824: \E
1.1 noro 825:
826: @example
827: @@ (x+y)^1000;
828: @kbd{C-c}interrupt ?(q/t/c/d/u/w/?)
829: @end example
830:
831: @noindent
1.2 noro 832: \JP $B3FA*Br;h$N0UL#$O<!$NDL$j(B.
833: \EG Here, the meaning of options are as follows.
1.1 noro 834:
835: @table @code
1.2 noro 836: \BJP
1.1 noro 837: @item q
838: @b{Asir} $B$r=*N;$9$k(B. ($B3NG'$"$j(B)
839: @item t
840: $B%H%C%W%l%Y%k$KLa$k(B. ($B3NG'$"$j(B)
841: @item c
842: $B<B9T$r7QB3$9$k(B.
843: @item d
844: $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}.
845: @item u
1.3 noro 846: @code{register_handler()} (@pxref{ox_reset ox_intr register_handler}) $B$GEPO?$5$l$?(B
1.1 noro 847: $B4X?t$r<B9T8e%H%C%W%l%Y%k$KLa$k(B. ($B3NG'$"$j(B)
848: @item w
849: $BCfCGE@$^$G$NH!?t$N8F$S=P$7Ns$rI=<($9$k(B.
850: @item ?
851: $B3FA*Br;h$N0UL#$r@bL@$9$k(B.
1.2 noro 852: \E
853: \BEG
854: @item q
855: Terminates @b{Asir} session. (Confirmation requested.)
856: @item t
857: Returns to toplevel. (Confirmation requested.)
858: @item c
859: Resumes to continue the execution.
860: @item d
861: Enters debugging mode at the next statement of the @b{Asir} program,
862: if @b{Asir} has been executing a program loaded from a file.
863: Note that it will sometimes take a long time before entering
864: debugging mode when @b{Asir} is executing basic functions in the
865: algebraic engine, (e.g., arithmetic operation, factorization etc.)
866: Detailed description about the debugger will be given in @ref{Debugger}.
867: @item u
868: After executing a function registered by @code{register_handler()}
1.3 noro 869: (@pxref{ox_reset ox_intr register_handler}), returns to toplevel. A confirmation
1.2 noro 870: is prompted.
871: @item w
872: Displays the calling sequence up to the interruption.
873: @item ?
874: Show a brief description of options.
875: \E
1.1 noro 876: @end table
877:
1.2 noro 878: \BJP
1.1 noro 879: @node $B%(%i!<=hM}(B,,, Risa/Asir
880: @section $B%(%i!<=hM}(B
1.2 noro 881: \E
882: \BEG
883: @node Error handling,,, Risa/Asir
884: @section Error handling
885: \E
1.1 noro 886:
887: @noindent
1.2 noro 888: \BJP
1.1 noro 889: $BAH$_9~$_H!?t$KIT@5$J7?$N0z?t$rEO$7$?>l9g$J$I$K$O<B9T$,CfCG$5$l$k$,(B,
890: $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
891: $B%b!<%I$KF~$k(B. $B$3$N>uBV$G(B
892: $B%(%i!<$N>l=j(B, $BD>A0$N0z?t$NCM$J$I$rD4$Y$k$3$H$,$G$-$k(B.
893: $BI=<($5$l$k%(%i!<%a%C%;!<%8$O$5$^$6$^$G$"$j(B, $BFbIt$NH!?tL>$K0z$-B3$$$F(B
894: $B%a%C%;!<%8$,I=<($5$l$k(B. $B$3$l$O(B, $B8F$S=P$5$l$?AH$_9~$_H!?t(B
895: $B$HI,$:$7$bBP1~$O$7$J$$(B.
1.2 noro 896: \E
897: \BEG
898: When arguments with illegal types are given to a built-in function,
899: an error will be detected and the execution will be quit.
900: In many cases, when an error is detected in a built-in function,
901: @b{Asir} automatically enters debugging mode before coming back
902: to toplevel.
903: At that time, one can examine the state of the program,
904: for example, inspect argument values just before the error occurred.
905: Messages reported there are various depending on cases. They are
906: reported after the internal function name. The internal function name
907: sometimes differs from the built-in function name that is specified by
908: the user program.
909: \E
1.1 noro 910:
911: @noindent
1.2 noro 912: \BJP
1.1 noro 913: $B$=$NB>(B, $B$5$^$6$^$J860x$K$h$jFbIt1i;;H!?t$K$*$$$F%(%i!<$,@8$:$k$3$H$,(B
914: $B$"$k(B. UNIX $BHG$N>l9g(B, $B$3$l$O<!$N$$$:$l$+$N(B
915: @code{internal error} $B$H$7$FJs9p$5$l(B, $BDL>o$N%(%i!<$HF1MM$K07$C$F(B,
916: $B%G%P%C%0%b!<%I$KF~$k(B.
1.2 noro 917: \E
918: \BEG
919: In the execution of internal functions, errors may happen by various
920: reasons. The UNIX version of @b{Asir} will report those errors as one of
921: the following @code{internal error}'s, and enters debugging mode just
922: like normal errors.
923: \E
1.1 noro 924:
925: @table @code
926: @item SEGV
927: @itemx BUS ERROR
1.8 noro 928: @*
1.2 noro 929: \BJP
1.1 noro 930: $BAH$_9~$_H!?t$K$h$C$F$O(B, $B0z?t$N7?$r87L)$K%A%'%C%/$;$:$K1i;;%k!<%A%s$K0z(B
931: $B$-EO$7$F$7$^$&$b$N$bB8:_$7$F$$$k(B. $B$3$N$h$&$J>u67$K$*$$$F(B,
932: $BIT@5$J%]%$%s%?(B, $B$"$k$$$O(B NULL $B%]%$%s%?$K$h$k%"%/%;%90cH?$,$"$C$?>l9g(B, $B$3$l$i(B
933: $B$N%(%i!<$H$J$k(B.
1.2 noro 934: \E
935: \BEG
936: Some of the built-in functions transmit their arguments to internal
937: operation routines without strict type-checking. In such cases,
938: one of these two errors will be reported
939: when an access violation caused by an illegal pointer or a NULL pointer
940: is detected.
941: \E
1.1 noro 942:
943: @item BROKEN PIPE
1.8 noro 944: @*
1.2 noro 945: \BJP
1.1 noro 946: $B%W%m%;%94VDL?.$K$*$$$F(B, $BAj<j@h$N%W%m%;%9$H$N4V$N%9%H%j!<%`(B
947: $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)
948: $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 949: \E
950: \BEG
951: In the process communication, this error will be reported if a process
952: attempts to read from or to write onto the partner process when the
953: stream to the partner process does not already exist, (e.g., terminated
954: process.)
955: \E
1.1 noro 956: @end table
957:
958: @noindent
1.2 noro 959: \BJP
1.1 noro 960: $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
961: $B$9$k$3$H$K$h$jBgItJ,$OKI$2$k$,(B, $B<j4V$,B?$/$+$+$k$3$H$H(B, $B>l9g$K(B
962: $B$h$C$F$O8zN($rMn$9$3$H$K$b$J$k$?$a(B, $B$"$($F0z?t%A%'%C%/$O%f!<%6(B
963: $BG$$;$K$7$F$"$k(B.
1.2 noro 964: \E
965: \BEG
966: For UNIX version, even in such a case, the process itself does not
967: terminate because such an error can be caught by @code{signal()} and
968: recovered.
969: To remove this weak point, complete type
970: checking of all arguments are indispensable at the entry of a built-in
971: function, which requires an enormous amount of re-making efforts.
972: \E
1.1 noro 973:
1.2 noro 974: \BJP
1.1 noro 975: @node $B7W;;7k2L$*$h$SFC<l$J?t(B,,, Risa/Asir
976: @section $B7W;;7k2L(B, $BFC<l$J?t(B
1.2 noro 977: \E
978: \BEG
979: @node Referencing results and special numbers,,, Risa/Asir
980: @section Referencing results and special numbers
981: \E
1.1 noro 982:
983: @noindent
1.2 noro 984: \JP @code{@@} $B$O%(%9%1!<%WJ8;z$H$7$F;HMQ$5$l$k(B. $B8=:_<!$N$h$&$J5,Dj$,$"$k(B.
985: \BEG
986: An @code{@@} used for an escape character; rules currently in force
987: are as follows.
988: \E
1.1 noro 989: @table @code
1.2 noro 990: \BJP
1.1 noro 991: @item @@@var{n}
992: @var{n} $BHVL\$N7W;;7k2L(B.
993: @item @@@@
994: $BD>A0$N7W;;7k2L(B.
995: @item @@i
996: $B5u?tC10L(B.
997: @item @@pi
998: $B1_<~N((B.
999: @item @@e
1000: $B<+A3BP?t$NDl(B.
1001: @item @@
1002: 2 $B85BN(B GF(2) $B>e$N0lJQ?tB?9`<0$NJQ?t(B ($BITDj85(B).
1003: @item @@>, @@<, @@>=, @@<=, @@==, @@&&, @@||
1004: quantifier elimination $B$K$*$1$k(B, $B0l3,=R8lO@M}1i;;;R(B
1.2 noro 1005: \E
1006: \BEG
1007: @item @@@var{n}
1008: The evaluated result of @var{n}-th input command
1009: @item @@@@
1010: The evaluated result of the last command
1011: @item @@i
1012: The unit of imaginary number, square root of -1.
1013: @item @@pi
1014: The number pi,
1015: the ratio of a circumference of the circle and its diameter.
1016: @item @@e
1017: Napier's number, the base of natural logarithm.
1018: @item @@
1019: A generator of GF(2^m), a finite field of characteristic 2, over GF(2).
1020: It is a root of an irreducible univariate polynomial over GF(2)
1021: which is set as the defining polynomial of GF(2^m).
1022: @item @@>, @@<, @@>=, @@<=, @@==, @@&&, @@||
1023: Fist order logical operators. They are used in quantifier elimination.
1024: \E
1.1 noro 1025: @end table
1026:
1027: @example
1028: [0] fctr(x^10-1);
1029: [[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]]
1030: [1] @@@@[3];
1031: [x^4+x^3+x^2+x+1,1]
1032: [2] eval(sin(@@pi/2));
1033: 1.000000000000000000000000000000000000000000000000000000000
1034: [3] eval(log(@@e),20);
1035: 0.99999999999999999999999999998
1036: [4] @@0[4][0];
1037: x^4-x^3+x^2-x+1
1038: [5] (1+@@i)^5;
1039: (-4-4*@@i)
1040: [6] eval(exp(@@pi*@@i));
1041: -1.0000000000000000000000000000
1042: [7] (@@+1)^9;
1043: (@@^9+@@^8+@@+1)
1044: @end example
1045:
1046: @noindent
1.2 noro 1047: \BJP
1.1 noro 1048: $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,
1049: $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,
1050: $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
1051: $BG=@-$,$"$k(B. $B$3$N$h$&$J>l9g(B, @code{delete_history()}
1052: (@pxref{delete_history,,@code{delete_history}}) $B$,M-8z$G$"$k(B.
1.2 noro 1053: \E
1054: \BEG
1055: As you can see in the above example,
1056: results of toplevel computation can be referred to
1057: by @code{@@} convention.
1058: This is convenient for users, while it sometimes imposes a heavy
1059: burden to the garbage collector.
1060: It may happen that GC time will rapidly increase after computing
1061: a very large expression at the toplevel.
1062: In such cases @code{delete_history()}
1063: (@pxref{delete_history,,@code{delete_history}}) takes effect.
1064: \E
1.1 noro 1065:
1066:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>