Annotation of OpenXM/src/asir-doc/parts/builtin/type.texi, Revision 1.4
1.4 ! ohara 1: @comment $OpenXM: OpenXM/src/asir-doc/parts/builtin/type.texi,v 1.3 2002/09/03 01:51:00 noro Exp $
1.2 noro 2: \BJP
1.1 noro 3: @node $B7?$r5a$a$kH!?t(B,,, $BAH$_9~$_H!?t(B
4: @section $B7?$r5a$a$kH!?t(B
1.2 noro 5: \E
6: \BEG
7: @node Types,,, Built-in Function
8: @section Types
9: \E
1.1 noro 10:
11: @menu
12: * type::
13: * ntype::
14: * vtype::
15: @end menu
16:
1.2 noro 17: \JP @node type,,, $B7?$r5a$a$kH!?t(B
18: \EG @node type,,, Types
1.1 noro 19: @subsection @code{type}
20: @findex type
21:
22: @table @t
23: @item type(@var{obj})
1.2 noro 24: \JP :: @var{obj} $B$N(B $B7?(B ($B@0?t(B) $B$rJV$9(B.
25: \EG :: Returns an integer which identifies the type of the object @var{obj} in question.
1.1 noro 26: @end table
27:
28: @table @var
29: @item return
1.2 noro 30: \JP $B@0?t(B
31: \EG integer
1.1 noro 32: @item obj
1.2 noro 33: \JP $BG$0U(B
34: \EG arbitrary
1.1 noro 35: @end table
36:
37: @itemize @bullet
1.2 noro 38: \BJP
1.1 noro 39: @item
40: @var{obj} $B$N(B $B7?$NCM$O<!$NDL$j(B.
41: @table @t
42: @item 0
43: 0
44: @item 1
45: $B?t(B
46: @item 2
47: $BB?9`<0(B ($B?t$G$J$$(B)
48: @item 3
49: $BM-M}<0(B ($BB?9`<0$G$J$$(B)
50: @item 4
51: $B%j%9%H(B
52: @item 5
53: $B%Y%/%H%k(B
54: @item 6
55: $B9TNs(B
56: @item 7
57: $BJ8;zNs(B
58: @item 8
59: $B9=B$BN(B
60: @item 9
61: $BJ,;6I=8=B?9`<0(B
1.2 noro 62: @item 10
63: 32bit $BId9f$J$7@0?t(B
64: @item 11
65: $B%(%i!<%*%V%8%'%/%H(B
66: @item 12
67: GF(2) $B>e$N9TNs(B
68: @item 13
69: MATHCAP $B%*%V%8%'%/%H(B
70: @item 14
71: $B0l3,=R8lO@M}<0(B
72: @item -1
73: VOID $B%*%V%8%'%/%H(B
1.1 noro 74: @end table
75: @item
76: $B?t$N7?$r5a$a$k$K$O(B, @code{ntype} $B$rMQ$$$k(B.
77: $BITDj85$N7?$r5a$a$k$K$O(B, @code{vtype} $B$rMQ$$$k(B.
1.2 noro 78: \E
79: \BEG
80: @item
81: Current assignment of integers for object types is listed below.
82: @table @t
83: @item 0
84: 0
85: @item 1
86: number
87: @item 2
88: polynomial (not number)
89: @item 3
90: rational expression (not polynomial)
91: @item 4
92: list
93: @item 5
94: vector
95: @item 6
96: matrix
97: @item 7
98: string
99: @item 8
100: structure
101: @item 9
102: distributed polynomial
103: @item 10
104: 32bit unsigned integer
105: @item 11
106: error object
107: @item 12
108: matrix over GF(2)
109: @item 13
110: MATHCAP object
111: @item 14
112: first order formula
113: @item -1
114: VOID object
115: @end table
116: @item
117: For further classification of @var{number}, use @code{ntype()}.
118: For further classification of @var{variable}, use @code{vtype()}.
119: \E
1.1 noro 120: @end itemize
121:
122: @table @t
1.2 noro 123: \JP @item $B;2>H(B
124: \EG @item References
1.1 noro 125: @fref{ntype}, @fref{vtype}.
126: @end table
127:
1.2 noro 128: \JP @node ntype,,, $B7?$r5a$a$kH!?t(B
129: \EG @node ntype,,, Types
1.1 noro 130: @subsection @code{ntype}
131: @findex ntype
132:
133: @table @t
134: @item ntype(@var{num})
1.2 noro 135: \JP :: @var{num} ($B?t(B) $B$N(B $B7?(B ($B@0?t(B) $B$rJV$9(B.
136: \EG :: Classifier of type @var{num}. Returns a sub-type number, an integer, for @var{obj}.
1.1 noro 137: @end table
138:
139: @table @var
140: @item return
1.2 noro 141: \JP $B<+A3?t(B
142: \EG integer
1.1 noro 143: @item obj
1.2 noro 144: \JP $B?t(B
145: \EG number
1.1 noro 146: @end table
147:
148: @itemize @bullet
1.2 noro 149: \BJP
1.1 noro 150: @item
151: $B?t$N7?$NCM$O<!$NDL$j(B.
152: @table @t
153: @item 0
154: $BM-M}?t(B
155: @item 1
156: $BG\@:EYIbF0>.?t(B
157: @item 2
158: $BBe?tE*?t(B
159: @item 3
160: $BG$0U@:EYIbF0>.?t(B (@b{bigfloat})
161: @item 4
162: $BJ#AG?t(B
163: @item 5
164: $BM-8BBN$N85(B
1.2 noro 165: @item 6
166: $BBgI8?tAGBN$N85(B
167: @item 7
168: $BI8?t(B 2 $B$NM-8BBN$N85(B
1.1 noro 169: @end table
170: @item
171: @code{newalg(x^2+1)} $B$G@8@.$7$??t$H(B, $B5u?tC10L(B @code{@@i} $B$O(B,
172: $B0[$J$k$b$N$H$7$F07$o$l$k(B.
173: @item
174: $BBe?tE*?t$K4X$7$F$O(B, @xref{$BBe?tE*?t$K4X$9$k1i;;(B}.
1.2 noro 175: \E
176: \BEG
177: @item
178: Sub-types for type number are listed below.
179: @table @t
180: @item 0
181: rational number
182: @item 1
183: floating double (double precision floating point number)
184: @item 2
185: algebraic number over rational number field
186: @item 3
187: arbitrary precision floating point number (@b{bigfloat})
188: @item 4
189: complex number
190: @item 5
191: element of a finite field
192: @item 6
193: element of a large finite prime field
194: @item 7
195: element of a finite field of characteristic 2
196: @end table
197: @item
198: When arithmetic operations for numbers are performed,
199: type coercion will be taken if their number sub-types are different
200: so that the object having smaller sub-type number will be transformed
201: to match the other object, except for algebraic numbers.
202: @item
203: A number object created by @code{newalg(x^2+1)} and the unit of
204: imaginary number @code{@@i} have different number sub-types, and
205: it is treated independently.
206: @item
1.3 noro 207: See @ref{Algebraic numbers} for algebraic numbers.
1.2 noro 208: \E
1.1 noro 209: @end itemize
210:
211: @example
212: [0] [10/37,ntype(10/37)];
213: [10/37,0]
214: [1] [10.0/37.0,ntype(10.0/37.0)];
215: [0.27027,1]
216: [2] [newalg(x^2+1)+1,ntype(newalg(x^2+1)+1)];
217: [(#0+1),2]
218: [3] [eval(sin(@@pi/6)),ntype(eval(sin(@@pi/6)))];
219: [0.49999999999999999991,3]
220: [4] [@@i+1,ntype(@@i+1)];
221: [(1+1*@@i),4]
222: @end example
223:
224: @table @t
1.2 noro 225: \JP @item $B;2>H(B
226: \EG @item References
1.1 noro 227: @fref{type}.
228: @end table
229:
1.2 noro 230: \JP @node vtype,,, $B7?$r5a$a$kH!?t(B
231: \EG @node vtype,,, Types
1.1 noro 232: @subsection @code{vtype}
233: @findex vtype
234:
235: @table @t
236: @item vtype(@var{var})
1.2 noro 237: \JP :: @var{var} ($BITDj85(B) $B$N(B $B7?(B ($B@0?t(B) $B$rJV$9(B.
238: \EG :: Type of indetarminates @var{var}.
1.1 noro 239: @end table
240:
241: @table @var
242: @item return
1.2 noro 243: \JP $B@0?t(B
244: \EG integer
1.1 noro 245: @item var
1.2 noro 246: \JP $BITDj85(B
247: \EG indeterminate
1.1 noro 248: @end table
249:
250: @itemize @bullet
1.2 noro 251: \BJP
1.1 noro 252: @item
253: @var{var} ($BITDj85(B) $B$N7?$NCM$O<!$NDL$j(B. $B>\:Y$O(B @xref{$BITDj85$N7?(B}.
254: @table @t
255: @item 0
256: $B0lHLITDj85(B (a,b,x,afo,bfo,...,etc)
257: @item 1
258: @code{uc()} $B$G@8@.$5$l$?ITDj85(B (@code{_0}, @code{_1}, @code{_2}, ... etc)
259: @item 2
260: $BH!?t7A<0(B (@code{sin(x)}, @code{log(a+1)}, @code{acosh(1)}, @code{@@pi}, @code{@@e}, ... etc)
261: @item 3
262: $BH!?t;R(B ($BAH$_9~$_H!?t;R(B, $B%f!<%6Dj5AH!?t;R(B, $B=iEyH!?t;R(B : @code{sin}, @code{log}, ... etc)
263: @end table
264: @item
265: @code{a();} $B$r<B9T(B($BDL>o$G$O%(%i!<(B)$B$7$?$@$1$G$b(B @code{ntype(a)} $B$O(B 3 $B$H$J$k(B.
266: $B$9$J$o$A(B @code{a} $B$O%f!<%6Dj5AH!?t;R$H$_$J$5$l$k(B.
1.4 ! ohara 267: @item
! 268: $B%f!<%6$,H!?t7A<0$rDj5A$9$k$?$a$K$O%-!<%o!<%I(B @code{function} $B$rMQ$$$k(B.
1.1 noro 269: @item
270: @code{@@pi}, @code{@@e} $B$OITDj85$H$7$F07$o$l$k$,(B, @code{eval()}, @code{pari()}
271: $B$K$*$$$F$O?t$H$7$F07$o$l$k(B.
1.2 noro 272: \E
273: \BEG
274: @item
275: Classify indeterminates into sub-types by giving an integer value as follows.
276: For details @xref{Types of indeterminates}.
277: @table @t
278: @item 0
279: ordinary indeterminate, which can be directly typed in on a keyboard
280: (a,b,x,afo,bfo,...,etc.)
281: @item 1
282: Special indeterminate, created by @code{uc()}
283: (@code{_0}, @code{_1}, @code{_2}, ... etc.)
284: @item 2
285: function form (@code{sin(x)}, @code{log(a+1)}, @code{acosh(1)}, @code{@@pi}, @code{@@e}, ... etc.)
286: @item 3
287: functor (built-in functor name, user defined functor, functor for
288: the elementary functions)
289: : @code{sin}, @code{log}, ... etc)
290: @end table
291: @item
292: Note: An input `@code{a();}' will cause an error, but it changes
293: the system database for identifiers. After this error, you will find
294: `@code{vtype(a)}' will result 3. (Identifier @code{a} is registered as
295: a user defined functor).
296: @item
297: Usually @code{@@pi} and @code{@@e} are treated as indeterminates,
298: whereas they are treated as numbers within functions @code{eval()} and
299: @code{pari()}.
300: \E
1.1 noro 301: @end itemize
302:
303: @table @t
1.2 noro 304: \JP @item $B;2>H(B
305: \EG @item References
1.1 noro 306: @fref{type}, @fref{ntype}, @fref{uc}.
307: @end table
308:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>