prelude.c
1 //! @file prelude.c
2 //! @author J. Marcel van der Veer
3 //!
4 //! @section Copyright
5 //!
6 //! This file is part of Algol68G - an Algol 68 compiler-interpreter.
7 //! Copyright 2001-2023 J. Marcel van der Veer [algol68g@xs4all.nl].
8 //!
9 //! @section License
10 //!
11 //! This program is free software; you can redistribute it and/or modify it
12 //! under the terms of the GNU General Public License as published by the
13 //! Free Software Foundation; either version 3 of the License, or
14 //! (at your option) any later version.
15 //!
16 //! This program is distributed in the hope that it will be useful, but
17 //! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 //! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
19 //! more details. You should have received a copy of the GNU General Public
20 //! License along with this program. If not, see [http://www.gnu.org/licenses/].
21
22 //! @section Synopsis
23 //!
24 //! Standard prelude definitions.
25
26 #include "a68g.h"
27 #include "a68g-optimiser.h"
28 #include "a68g-prelude.h"
29 #include "a68g-prelude-mathlib.h"
30 #include "a68g-prelude-gsl.h"
31 #include "a68g-transput.h"
32 #include "a68g-mp.h"
33 #include "a68g-parser.h"
34 #include "a68g-physics.h"
35 #include "a68g-double.h"
36
37 #define A68_STD A68_TRUE
38 #define A68_EXT A68_FALSE
39
40 //! @brief Standard_environ_proc_name.
41
42 char *standard_environ_proc_name (GPROC f)
43 {
44 TAG_T *i = IDENTIFIERS (A68_STANDENV);
45 for (; i != NO_TAG; FORWARD (i)) {
46 if (PROCEDURE (i) == f) {
47 return NSYMBOL (NODE (i));
48 }
49 }
50 return NO_TEXT;
51 }
52
53 //! @brief Enter tag in standenv symbol table.
54
55 void add_a68_standenv (BOOL_T portable, int a, NODE_T * n, char *c, MOID_T * m, int p, GPROC * q)
56 {
57 #define INSERT_TAG(l, n) {\
58 NEXT (n) = *(l);\
59 *(l) = (n);\
60 }
61 TAG_T *new_one = new_tag ();
62 PROCEDURE_LEVEL (INFO (n)) = 0;
63 USE (new_one) = A68_FALSE;
64 HEAP (new_one) = HEAP_SYMBOL;
65 TAG_TABLE (new_one) = A68_STANDENV;
66 NODE (new_one) = n;
67 VALUE (new_one) = (c != NO_TEXT ? TEXT (add_token (&A68 (top_token), c)) : NO_TEXT);
68 PRIO (new_one) = p;
69 PROCEDURE (new_one) = q;
70 A68_STANDENV_PROC (new_one) = (BOOL_T) (q != NO_GPROC);
71 UNIT (new_one) = NULL;
72 PORTABLE (new_one) = portable;
73 MOID (new_one) = m;
74 NEXT (new_one) = NO_TAG;
75 if (a == IDENTIFIER) {
76 INSERT_TAG (&IDENTIFIERS (A68_STANDENV), new_one);
77 } else if (a == OP_SYMBOL) {
78 INSERT_TAG (&OPERATORS (A68_STANDENV), new_one);
79 } else if (a == PRIO_SYMBOL) {
80 INSERT_TAG (&PRIO (A68_STANDENV), new_one);
81 } else if (a == INDICANT) {
82 INSERT_TAG (&INDICANTS (A68_STANDENV), new_one);
83 } else if (a == LABEL) {
84 INSERT_TAG (&LABELS (A68_STANDENV), new_one);
85 }
86 #undef INSERT_TAG
87 }
88
89 //! @brief Compose PROC moid from arguments - first result, than arguments.
90
91 MOID_T *a68_proc (MOID_T * m, ...)
92 {
93 MOID_T *y, **z = &TOP_MOID (&A68_JOB);
94 PACK_T *p = NO_PACK, *q = NO_PACK;
95 va_list attribute;
96 va_start (attribute, m);
97 while ((y = va_arg (attribute, MOID_T *)) != NO_MOID) {
98 PACK_T *new_one = new_pack ();
99 MOID (new_one) = y;
100 TEXT (new_one) = NO_TEXT;
101 NEXT (new_one) = NO_PACK;
102 if (q != NO_PACK) {
103 NEXT (q) = new_one;
104 } else {
105 p = new_one;
106 }
107 q = new_one;
108 }
109 va_end (attribute);
110 return add_mode (z, PROC_SYMBOL, count_pack_members (p), NO_NODE, m, p);
111 }
112
113 //! @brief Enter an identifier in standenv.
114
115 void a68_idf (BOOL_T portable, char *n, MOID_T * m, GPROC * q)
116 {
117 add_a68_standenv (portable, IDENTIFIER, some_node (TEXT (add_token (&A68 (top_token), n))), NO_TEXT, m, 0, q);
118 }
119
120 //! @brief Enter a moid in standenv.
121
122 void a68_mode (int p, char *t, MOID_T ** m)
123 {
124 (*m) = add_mode (&TOP_MOID (&A68_JOB), STANDARD, p, some_node (TEXT (find_keyword (A68 (top_keyword), t))), NO_MOID, NO_PACK);
125 }
126
127 //! @brief Enter a priority in standenv.
128
129 void a68_prio (char *p, int b)
130 {
131 add_a68_standenv (A68_TRUE, PRIO_SYMBOL, some_node (TEXT (add_token (&A68 (top_token), p))), NO_TEXT, NO_MOID, b, NO_GPROC);
132 }
133
134 //! @brief Enter operator in standenv.
135
136 void a68_op (BOOL_T portable, char *n, MOID_T * m, GPROC * q)
137 {
138 add_a68_standenv (portable, OP_SYMBOL, some_node (TEXT (add_token (&A68 (top_token), n))), NO_TEXT, m, 0, q);
139 }
140
141 //! @brief Enter standard modes in standenv.
142
143 void stand_moids (void)
144 {
145 MOID_T *m;
146 PACK_T *z;
147 // Primitive A68 moids.
148 a68_mode (0, "VOID", &M_VOID);
149 // Standard precision.
150 a68_mode (0, "INT", &M_INT);
151 a68_mode (0, "REAL", &M_REAL);
152 a68_mode (0, "COMPLEX", &M_COMPLEX);
153 a68_mode (0, "COMPL", &M_COMPL);
154 a68_mode (0, "BITS", &M_BITS);
155 a68_mode (0, "BYTES", &M_BYTES);
156 // Multiple precision.
157 a68_mode (1, "INT", &M_LONG_INT);
158 a68_mode (1, "REAL", &M_LONG_REAL);
159 a68_mode (1, "COMPLEX", &M_LONG_COMPLEX);
160 a68_mode (1, "COMPL", &M_LONG_COMPL);
161 a68_mode (1, "BITS", &M_LONG_BITS);
162 a68_mode (1, "BYTES", &M_LONG_BYTES);
163 a68_mode (2, "REAL", &M_LONG_LONG_REAL);
164 a68_mode (2, "INT", &M_LONG_LONG_INT);
165 a68_mode (2, "COMPLEX", &M_LONG_LONG_COMPLEX);
166 a68_mode (2, "COMPL", &M_LONG_LONG_COMPL);
167 // Other.
168 a68_mode (0, "BOOL", &M_BOOL);
169 a68_mode (0, "CHAR", &M_CHAR);
170 a68_mode (0, "STRING", &M_STRING);
171 a68_mode (0, "FILE", &M_FILE);
172 a68_mode (0, "CHANNEL", &M_CHANNEL);
173 a68_mode (0, "PIPE", &M_PIPE);
174 a68_mode (0, "FORMAT", &M_FORMAT);
175 a68_mode (0, "SEMA", &M_SEMA);
176 a68_mode (0, "SOUND", &M_SOUND);
177 PORTABLE (M_PIPE) = A68_FALSE;
178 HAS_ROWS (M_SOUND) = A68_TRUE;
179 PORTABLE (M_SOUND) = A68_FALSE;
180 // ROWS.
181 M_ROWS = add_mode (&TOP_MOID (&A68_JOB), ROWS_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK);
182 // REFs.
183 M_REF_INT = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_INT, NO_PACK);
184 M_REF_REAL = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_REAL, NO_PACK);
185 M_REF_COMPLEX = M_REF_COMPL = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_COMPLEX, NO_PACK);
186 M_REF_BITS = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BITS, NO_PACK);
187 M_REF_BYTES = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BYTES, NO_PACK);
188 M_REF_FORMAT = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_FORMAT, NO_PACK);
189 M_REF_PIPE = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_PIPE, NO_PACK);
190 // Multiple precision.
191 M_REF_LONG_INT = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_INT, NO_PACK);
192 M_REF_LONG_REAL = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_REAL, NO_PACK);
193 M_REF_LONG_COMPLEX = M_REF_LONG_COMPL = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_COMPLEX, NO_PACK);
194 M_REF_LONG_LONG_INT = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_INT, NO_PACK);
195 M_REF_LONG_LONG_REAL = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_REAL, NO_PACK);
196 M_REF_LONG_LONG_COMPLEX = M_REF_LONG_LONG_COMPL = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_COMPLEX, NO_PACK);
197 M_REF_LONG_BITS = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_BITS, NO_PACK);
198 M_REF_LONG_BYTES = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_BYTES, NO_PACK);
199 // Other.
200 M_REF_BOOL = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BOOL, NO_PACK);
201 M_REF_CHAR = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_CHAR, NO_PACK);
202 M_REF_FILE = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_FILE, NO_PACK);
203 M_REF_REF_FILE = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_REF_FILE, NO_PACK);
204 M_REF_SOUND = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SOUND, NO_PACK);
205 // [] INT.
206 M_ROW_INT = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_INT, NO_PACK);
207 HAS_ROWS (M_ROW_INT) = A68_TRUE;
208 SLICE (M_ROW_INT) = M_INT;
209 M_REF_ROW_INT = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_INT, NO_PACK);
210 NAME (M_REF_ROW_INT) = M_REF_INT;
211 // [] REAL.
212 M_ROW_REAL = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_REAL, NO_PACK);
213 HAS_ROWS (M_ROW_REAL) = A68_TRUE;
214 SLICE (M_ROW_REAL) = M_REAL;
215 M_REF_ROW_REAL = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_REAL, NO_PACK);
216 NAME (M_REF_ROW_REAL) = M_REF_REAL;
217 // [,] REAL.
218 M_ROW_ROW_REAL = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 2, NO_NODE, M_REAL, NO_PACK);
219 HAS_ROWS (M_ROW_ROW_REAL) = A68_TRUE;
220 SLICE (M_ROW_ROW_REAL) = M_ROW_REAL;
221 M_REF_ROW_ROW_REAL = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_ROW_REAL, NO_PACK);
222 NAME (M_REF_ROW_ROW_REAL) = M_REF_ROW_REAL;
223 // [] COMPLEX.
224 M_ROW_COMPLEX = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_COMPLEX, NO_PACK);
225 HAS_ROWS (M_ROW_COMPLEX) = A68_TRUE;
226 SLICE (M_ROW_COMPLEX) = M_COMPLEX;
227 M_REF_ROW_COMPLEX = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_COMPLEX, NO_PACK);
228 NAME (M_REF_ROW_COMPLEX) = M_REF_COMPLEX;
229 // [,] COMPLEX.
230 M_ROW_ROW_COMPLEX = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 2, NO_NODE, M_COMPLEX, NO_PACK);
231 HAS_ROWS (M_ROW_ROW_COMPLEX) = A68_TRUE;
232 SLICE (M_ROW_ROW_COMPLEX) = M_ROW_COMPLEX;
233 M_REF_ROW_ROW_COMPLEX = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_ROW_COMPLEX, NO_PACK);
234 NAME (M_REF_ROW_ROW_COMPLEX) = M_REF_ROW_COMPLEX;
235 // [] BOOL.
236 M_ROW_BOOL = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_BOOL, NO_PACK);
237 HAS_ROWS (M_ROW_BOOL) = A68_TRUE;
238 SLICE (M_ROW_BOOL) = M_BOOL;
239 // FLEX [] BOOL.
240 m = add_mode (&TOP_MOID (&A68_JOB), FLEX_SYMBOL, 0, NO_NODE, M_ROW_BOOL, NO_PACK);
241 HAS_ROWS (m) = A68_TRUE;
242 M_FLEX_ROW_BOOL = m;
243 // [] BITS.
244 M_ROW_BITS = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_BITS, NO_PACK);
245 HAS_ROWS (M_ROW_BITS) = A68_TRUE;
246 SLICE (M_ROW_BITS) = M_BITS;
247 // [] LONG BITS.
248 M_ROW_LONG_BITS = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_LONG_BITS, NO_PACK);
249 HAS_ROWS (M_ROW_LONG_BITS) = A68_TRUE;
250 SLICE (M_ROW_LONG_BITS) = M_LONG_BITS;
251 // [] CHAR.
252 M_ROW_CHAR = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_CHAR, NO_PACK);
253 HAS_ROWS (M_ROW_CHAR) = A68_TRUE;
254 SLICE (M_ROW_CHAR) = M_CHAR;
255 // [][] CHAR.
256 M_ROW_ROW_CHAR = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_ROW_CHAR, NO_PACK);
257 HAS_ROWS (M_ROW_ROW_CHAR) = A68_TRUE;
258 SLICE (M_ROW_ROW_CHAR) = M_ROW_CHAR;
259 // MODE STRING = FLEX [] CHAR.
260 m = add_mode (&TOP_MOID (&A68_JOB), FLEX_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK);
261 HAS_ROWS (m) = A68_TRUE;
262 M_FLEX_ROW_CHAR = m;
263 EQUIVALENT (M_STRING) = m;
264 // REF [] CHAR.
265 M_REF_ROW_CHAR = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK);
266 NAME (M_REF_ROW_CHAR) = M_REF_CHAR;
267 // PROC [] CHAR.
268 M_PROC_ROW_CHAR = add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK);
269 // REF STRING = REF FLEX [] CHAR.
270 M_REF_STRING = add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, EQUIVALENT (M_STRING), NO_PACK);
271 NAME (M_REF_STRING) = M_REF_CHAR;
272 DEFLEXED (M_REF_STRING) = M_REF_ROW_CHAR;
273 // [] STRING.
274 M_ROW_STRING = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_STRING, NO_PACK);
275 HAS_ROWS (M_ROW_STRING) = A68_TRUE;
276 SLICE (M_ROW_STRING) = M_STRING;
277 DEFLEXED (M_ROW_STRING) = M_ROW_ROW_CHAR;
278 // PROC STRING.
279 M_PROC_STRING = add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, 0, NO_NODE, M_STRING, NO_PACK);
280 DEFLEXED (M_PROC_STRING) = M_PROC_ROW_CHAR;
281 // COMPLEX.
282 z = NO_PACK;
283 (void) add_mode_to_pack (&z, M_REAL, TEXT (add_token (&A68 (top_token), "im")), NO_NODE);
284 (void) add_mode_to_pack (&z, M_REAL, TEXT (add_token (&A68 (top_token), "re")), NO_NODE);
285 m = add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, count_pack_members (z), NO_NODE, NO_MOID, z);
286 EQUIVALENT (M_COMPLEX) = EQUIVALENT (M_COMPL) = m;
287 z = NO_PACK;
288 (void) add_mode_to_pack (&z, M_REF_REAL, TEXT (add_token (&A68 (top_token), "im")), NO_NODE);
289 (void) add_mode_to_pack (&z, M_REF_REAL, TEXT (add_token (&A68 (top_token), "re")), NO_NODE);
290 m = add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, count_pack_members (z), NO_NODE, NO_MOID, z);
291 NAME (M_REF_COMPLEX) = NAME (M_REF_COMPL) = m;
292 // LONG COMPLEX.
293 z = NO_PACK;
294 (void) add_mode_to_pack (&z, M_LONG_REAL, TEXT (add_token (&A68 (top_token), "im")), NO_NODE);
295 (void) add_mode_to_pack (&z, M_LONG_REAL, TEXT (add_token (&A68 (top_token), "re")), NO_NODE);
296 m = add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, count_pack_members (z), NO_NODE, NO_MOID, z);
297 EQUIVALENT (M_LONG_COMPLEX) = EQUIVALENT (M_LONG_COMPL) = m;
298 z = NO_PACK;
299 (void) add_mode_to_pack (&z, M_REF_LONG_REAL, TEXT (add_token (&A68 (top_token), "im")), NO_NODE);
300 (void) add_mode_to_pack (&z, M_REF_LONG_REAL, TEXT (add_token (&A68 (top_token), "re")), NO_NODE);
301 m = add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, count_pack_members (z), NO_NODE, NO_MOID, z);
302 NAME (M_REF_LONG_COMPLEX) = NAME (M_REF_LONG_COMPL) = m;
303 // LONG_LONG COMPLEX.
304 z = NO_PACK;
305 (void) add_mode_to_pack (&z, M_LONG_LONG_REAL, TEXT (add_token (&A68 (top_token), "im")), NO_NODE);
306 (void) add_mode_to_pack (&z, M_LONG_LONG_REAL, TEXT (add_token (&A68 (top_token), "re")), NO_NODE);
307 m = add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, count_pack_members (z), NO_NODE, NO_MOID, z);
308 EQUIVALENT (M_LONG_LONG_COMPLEX) = EQUIVALENT (M_LONG_LONG_COMPL) = m;
309 z = NO_PACK;
310 (void) add_mode_to_pack (&z, M_REF_LONG_LONG_REAL, TEXT (add_token (&A68 (top_token), "im")), NO_NODE);
311 (void) add_mode_to_pack (&z, M_REF_LONG_LONG_REAL, TEXT (add_token (&A68 (top_token), "re")), NO_NODE);
312 m = add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, count_pack_members (z), NO_NODE, NO_MOID, z);
313 NAME (M_REF_LONG_LONG_COMPLEX) = NAME (M_REF_LONG_LONG_COMPL) = m;
314 // NUMBER.
315 z = NO_PACK;
316 (void) add_mode_to_pack (&z, M_INT, NO_TEXT, NO_NODE);
317 (void) add_mode_to_pack (&z, M_LONG_INT, NO_TEXT, NO_NODE);
318 (void) add_mode_to_pack (&z, M_LONG_LONG_INT, NO_TEXT, NO_NODE);
319 (void) add_mode_to_pack (&z, M_REAL, NO_TEXT, NO_NODE);
320 (void) add_mode_to_pack (&z, M_LONG_REAL, NO_TEXT, NO_NODE);
321 (void) add_mode_to_pack (&z, M_LONG_LONG_REAL, NO_TEXT, NO_NODE);
322 M_NUMBER = add_mode (&TOP_MOID (&A68_JOB), UNION_SYMBOL, count_pack_members (z), NO_NODE, NO_MOID, z);
323 // HEX_NUMBER.
324 z = NO_PACK;
325 (void) add_mode_to_pack (&z, M_BOOL, NO_TEXT, NO_NODE);
326 (void) add_mode_to_pack (&z, M_CHAR, NO_TEXT, NO_NODE);
327 (void) add_mode_to_pack (&z, M_INT, NO_TEXT, NO_NODE);
328 (void) add_mode_to_pack (&z, M_LONG_INT, NO_TEXT, NO_NODE);
329 (void) add_mode_to_pack (&z, M_REAL, NO_TEXT, NO_NODE);
330 (void) add_mode_to_pack (&z, M_LONG_REAL, NO_TEXT, NO_NODE);
331 (void) add_mode_to_pack (&z, M_BITS, NO_TEXT, NO_NODE);
332 (void) add_mode_to_pack (&z, M_LONG_BITS, NO_TEXT, NO_NODE);
333 M_HEX_NUMBER = add_mode (&TOP_MOID (&A68_JOB), UNION_SYMBOL, count_pack_members (z), NO_NODE, NO_MOID, z);
334 // SEMA.
335 z = NO_PACK;
336 (void) add_mode_to_pack (&z, M_REF_INT, NO_TEXT, NO_NODE);
337 EQUIVALENT (M_SEMA) = add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, count_pack_members (z), NO_NODE, NO_MOID, z);
338 // PROC VOID.
339 z = NO_PACK;
340 M_PROC_VOID = add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, count_pack_members (z), NO_NODE, M_VOID, z);
341 // PROC (REAL) REAL.
342 z = NO_PACK;
343 (void) add_mode_to_pack (&z, M_REAL, NO_TEXT, NO_NODE);
344 M_PROC_REAL_REAL = add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, count_pack_members (z), NO_NODE, M_REAL, z);
345 // PROC (LONG_REAL) LONG_REAL.
346 z = NO_PACK;
347 (void) add_mode_to_pack (&z, M_LONG_REAL, NO_TEXT, NO_NODE);
348 M_PROC_LONG_REAL_LONG_REAL = add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, count_pack_members (z), NO_NODE, M_LONG_REAL, z);
349 // IO: PROC (REF FILE) BOOL.
350 z = NO_PACK;
351 (void) add_mode_to_pack (&z, M_REF_FILE, NO_TEXT, NO_NODE);
352 M_PROC_REF_FILE_BOOL = add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, count_pack_members (z), NO_NODE, M_BOOL, z);
353 // IO: PROC (REF FILE) VOID.
354 z = NO_PACK;
355 (void) add_mode_to_pack (&z, M_REF_FILE, NO_TEXT, NO_NODE);
356 M_PROC_REF_FILE_VOID = add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, count_pack_members (z), NO_NODE, M_VOID, z);
357 // IO: SIMPLIN and SIMPLOUT.
358 M_SIMPLIN = add_mode (&TOP_MOID (&A68_JOB), IN_TYPE_MODE, 0, NO_NODE, NO_MOID, NO_PACK);
359 M_ROW_SIMPLIN = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_SIMPLIN, NO_PACK);
360 SLICE (M_ROW_SIMPLIN) = M_SIMPLIN;
361 M_SIMPLOUT = add_mode (&TOP_MOID (&A68_JOB), OUT_TYPE_MODE, 0, NO_NODE, NO_MOID, NO_PACK);
362 M_ROW_SIMPLOUT = add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_SIMPLOUT, NO_PACK);
363 SLICE (M_ROW_SIMPLOUT) = M_SIMPLOUT;
364 // PIPE.
365 z = NO_PACK;
366 (void) add_mode_to_pack (&z, M_INT, TEXT (add_token (&A68 (top_token), "pid")), NO_NODE);
367 (void) add_mode_to_pack (&z, M_REF_FILE, TEXT (add_token (&A68 (top_token), "write")), NO_NODE);
368 (void) add_mode_to_pack (&z, M_REF_FILE, TEXT (add_token (&A68 (top_token), "read")), NO_NODE);
369 EQUIVALENT (M_PIPE) = add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, count_pack_members (z), NO_NODE, NO_MOID, z);
370 z = NO_PACK;
371 (void) add_mode_to_pack (&z, M_REF_INT, TEXT (add_token (&A68 (top_token), "pid")), NO_NODE);
372 (void) add_mode_to_pack (&z, M_REF_REF_FILE, TEXT (add_token (&A68 (top_token), "write")), NO_NODE);
373 (void) add_mode_to_pack (&z, M_REF_REF_FILE, TEXT (add_token (&A68 (top_token), "read")), NO_NODE);
374 NAME (M_REF_PIPE) = add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, count_pack_members (z), NO_NODE, NO_MOID, z);
375 }
376
377 //! @brief Set up standenv - general RR but not transput.
378
379 void stand_prelude (void)
380 {
381 MOID_T *m;
382 // Identifiers.
383 a68_idf (A68_STD, "intlengths", M_INT, genie_int_lengths);
384 a68_idf (A68_STD, "intshorths", M_INT, genie_int_shorths);
385 a68_idf (A68_STD, "infinity", M_REAL, genie_infinity_real);
386 a68_idf (A68_STD, "minusinfinity", M_REAL, genie_minus_infinity_real);
387 a68_idf (A68_STD, "inf", M_REAL, genie_infinity_real);
388 a68_idf (A68_STD, "mininf", M_REAL, genie_minus_infinity_real);
389 a68_idf (A68_STD, "maxint", M_INT, genie_max_int);
390 a68_idf (A68_STD, "mpradix", M_INT, genie_mp_radix);
391 a68_idf (A68_STD, "maxreal", M_REAL, genie_max_real);
392 a68_idf (A68_STD, "minreal", M_REAL, genie_min_real);
393 a68_idf (A68_STD, "smallreal", M_REAL, genie_small_real);
394 a68_idf (A68_STD, "reallengths", M_INT, genie_real_lengths);
395 a68_idf (A68_STD, "realshorths", M_INT, genie_real_shorths);
396 a68_idf (A68_STD, "compllengths", M_INT, genie_complex_lengths);
397 a68_idf (A68_STD, "complshorths", M_INT, genie_complex_shorths);
398 a68_idf (A68_STD, "bitslengths", M_INT, genie_bits_lengths);
399 a68_idf (A68_STD, "bitsshorths", M_INT, genie_bits_shorths);
400 a68_idf (A68_STD, "bitswidth", M_INT, genie_bits_width);
401 a68_idf (A68_STD, "longbitswidth", M_INT, genie_long_bits_width);
402 a68_idf (A68_STD, "maxbits", M_BITS, genie_max_bits);
403 a68_idf (A68_STD, "byteslengths", M_INT, genie_bytes_lengths);
404 a68_idf (A68_STD, "bytesshorths", M_INT, genie_bytes_shorths);
405 a68_idf (A68_STD, "byteswidth", M_INT, genie_bytes_width);
406 a68_idf (A68_STD, "maxabschar", M_INT, genie_max_abs_char);
407 a68_idf (A68_STD, "pi", M_REAL, genie_pi);
408 a68_idf (A68_STD, "qpi", M_LONG_LONG_REAL, genie_pi_mp);
409 a68_idf (A68_STD, "longlongpi", M_LONG_LONG_REAL, genie_pi_mp);
410 a68_idf (A68_STD, "intwidth", M_INT, genie_int_width);
411 a68_idf (A68_STD, "realwidth", M_INT, genie_real_width);
412 a68_idf (A68_STD, "expwidth", M_INT, genie_exp_width);
413 a68_idf (A68_STD, "longintwidth", M_INT, genie_long_int_width);
414 a68_idf (A68_STD, "longlongintwidth", M_INT, genie_long_mp_int_width);
415 a68_idf (A68_STD, "longrealwidth", M_INT, genie_long_real_width);
416 a68_idf (A68_STD, "longlongrealwidth", M_INT, genie_long_mp_real_width);
417 a68_idf (A68_STD, "longexpwidth", M_INT, genie_long_exp_width);
418 a68_idf (A68_STD, "longlongexpwidth", M_INT, genie_long_mp_exp_width);
419 a68_idf (A68_STD, "longlongmaxint", M_LONG_LONG_INT, genie_long_mp_max_int);
420 a68_idf (A68_STD, "longlongsmallreal", M_LONG_LONG_REAL, genie_long_mp_small_real);
421 a68_idf (A68_STD, "longlongmaxreal", M_LONG_LONG_REAL, genie_long_mp_max_real);
422 a68_idf (A68_STD, "longlongminreal", M_LONG_LONG_REAL, genie_long_mp_min_real);
423 a68_idf (A68_STD, "longlonginfinity", M_LONG_LONG_REAL, genie_infinity_mp);
424 a68_idf (A68_STD, "longlongminusinfinity", M_LONG_LONG_REAL, genie_minus_infinity_mp);
425 a68_idf (A68_STD, "longlonginf", M_LONG_LONG_REAL, genie_infinity_mp);
426 a68_idf (A68_STD, "longlongmininf", M_LONG_LONG_REAL, genie_minus_infinity_mp);
427 a68_idf (A68_STD, "longbyteswidth", M_INT, genie_long_bytes_width);
428 a68_idf (A68_EXT, "seconds", M_REAL, genie_cputime);
429 a68_idf (A68_EXT, "clock", M_REAL, genie_cputime);
430 a68_idf (A68_EXT, "cputime", M_REAL, genie_cputime);
431 m = a68_proc (M_VOID, A68_MCACHE (proc_void), NO_MOID);
432 a68_idf (A68_EXT, "ongcevent", m, genie_on_gc_event);
433 a68_idf (A68_EXT, "collections", A68_MCACHE (proc_int), genie_garbage_collections);
434 a68_idf (A68_EXT, "garbagecollections", A68_MCACHE (proc_int), genie_garbage_collections);
435 a68_idf (A68_EXT, "garbagerefused", A68_MCACHE (proc_int), genie_garbage_refused);
436 a68_idf (A68_EXT, "blocks", A68_MCACHE (proc_int), genie_block);
437 a68_idf (A68_EXT, "garbage", A68_MCACHE (proc_int), genie_garbage_freed);
438 a68_idf (A68_EXT, "garbagefreed", A68_MCACHE (proc_int), genie_garbage_freed);
439 a68_idf (A68_EXT, "collectseconds", A68_MCACHE (proc_real), genie_garbage_seconds);
440 a68_idf (A68_EXT, "garbageseconds", A68_MCACHE (proc_real), genie_garbage_seconds);
441 a68_idf (A68_EXT, "stackpointer", M_INT, genie_stack_pointer);
442 a68_idf (A68_EXT, "systemstackpointer", M_INT, genie_system_stack_pointer);
443 a68_idf (A68_EXT, "systemstacksize", M_INT, genie_system_stack_size);
444 a68_idf (A68_EXT, "actualstacksize", M_INT, genie_stack_pointer);
445 a68_idf (A68_EXT, "heappointer", M_INT, genie_system_heap_pointer);
446 a68_idf (A68_EXT, "systemheappointer", M_INT, genie_system_heap_pointer);
447 a68_idf (A68_EXT, "gcheap", A68_MCACHE (proc_void), genie_gc_heap);
448 a68_idf (A68_EXT, "sweepheap", A68_MCACHE (proc_void), genie_gc_heap);
449 a68_idf (A68_EXT, "preemptivegc", A68_MCACHE (proc_void), genie_preemptive_gc_heap);
450 a68_idf (A68_EXT, "preemptivesweep", A68_MCACHE (proc_void), genie_preemptive_gc_heap);
451 a68_idf (A68_EXT, "preemptivesweepheap", A68_MCACHE (proc_void), genie_preemptive_gc_heap);
452 a68_idf (A68_EXT, "backtrace", A68_MCACHE (proc_void), genie_backtrace);
453 a68_idf (A68_EXT, "break", A68_MCACHE (proc_void), genie_break);
454 a68_idf (A68_EXT, "debug", A68_MCACHE (proc_void), genie_debug);
455 a68_idf (A68_EXT, "monitor", A68_MCACHE (proc_void), genie_debug);
456 m = a68_proc (M_VOID, M_STRING, NO_MOID);
457 a68_idf (A68_EXT, "abend", m, genie_abend);
458 m = a68_proc (M_STRING, M_STRING, NO_MOID);
459 a68_idf (A68_EXT, "evaluate", m, genie_evaluate);
460 m = a68_proc (M_INT, M_STRING, NO_MOID);
461 a68_idf (A68_EXT, "system", m, genie_system);
462 m = a68_proc (M_INT, M_INT, NO_MOID);
463 a68_idf (A68_EXT, "sleep", m, genie_sleep);
464 // BITS procedures.
465 m = a68_proc (M_BITS, M_ROW_BOOL, NO_MOID);
466 a68_idf (A68_STD, "bitspack", m, genie_bits_pack);
467 // RNG procedures.
468 m = a68_proc (M_VOID, M_INT, NO_MOID);
469 a68_idf (A68_STD, "firstrandom", m, genie_first_random);
470 m = A68_MCACHE (proc_real);
471 a68_idf (A68_STD, "nextrandom", m, genie_next_random);
472 a68_idf (A68_STD, "random", m, genie_next_random);
473 a68_idf (A68_STD, "rnd", m, genie_next_rnd);
474 m = a68_proc (M_LONG_LONG_REAL, NO_MOID);
475 a68_idf (A68_STD, "longlongnextrandom", m, genie_long_next_random);
476 a68_idf (A68_STD, "longlongrandom", m, genie_long_next_random);
477 // Priorities.
478 a68_prio ("+:=", 1);
479 a68_prio ("-:=", 1);
480 a68_prio ("*:=", 1);
481 a68_prio ("/:=", 1);
482 a68_prio ("%:=", 1);
483 a68_prio ("%*:=", 1);
484 a68_prio ("+=:", 1);
485 a68_prio ("PLUSAB", 1);
486 a68_prio ("MINUSAB", 1);
487 a68_prio ("TIMESAB", 1);
488 a68_prio ("DIVAB", 1);
489 a68_prio ("OVERAB", 1);
490 a68_prio ("MODAB", 1);
491 a68_prio ("PLUSTO", 1);
492 a68_prio ("OR", 2);
493 a68_prio ("AND", 3);
494 a68_prio ("&", 3);
495 a68_prio ("XOR", 3);
496 a68_prio ("=", 4);
497 a68_prio ("/=", 4);
498 a68_prio ("~=", 4);
499 a68_prio ("^=", 4);
500 a68_prio ("<", 5);
501 a68_prio ("<=", 5);
502 a68_prio (">", 5);
503 a68_prio (">=", 5);
504 a68_prio ("EQ", 4);
505 a68_prio ("NE", 4);
506 a68_prio ("LT", 5);
507 a68_prio ("LE", 5);
508 a68_prio ("GT", 5);
509 a68_prio ("GE", 5);
510 a68_prio ("+", 6);
511 a68_prio ("-", 6);
512 a68_prio ("*", 7);
513 a68_prio ("/", 7);
514 a68_prio ("OVER", 7);
515 a68_prio ("%", 7);
516 a68_prio ("MOD", 7);
517 a68_prio ("%*", 7);
518 a68_prio ("ELEM", 7);
519 a68_prio ("SET", 7);
520 a68_prio ("CLEAR", 7);
521 a68_prio ("**", 8);
522 a68_prio ("SHL", 8);
523 a68_prio ("SHR", 8);
524 a68_prio ("ROL", 8);
525 a68_prio ("ROR", 8);
526 a68_prio ("UP", 8);
527 a68_prio ("DOWN", 8);
528 a68_prio ("^", 8);
529 a68_prio ("ELEMS", 8);
530 a68_prio ("LWB", 8);
531 a68_prio ("UPB", 8);
532 a68_prio ("SORT", 8);
533 a68_prio ("I", 9);
534 a68_prio ("+*", 9);
535 // INT ops.
536 m = a68_proc (M_INT, M_INT, NO_MOID);
537 a68_op (A68_STD, "+", m, genie_idle);
538 a68_op (A68_STD, "-", m, genie_minus_int);
539 a68_op (A68_STD, "ABS", m, genie_abs_int);
540 a68_op (A68_STD, "SIGN", m, genie_sign_int);
541 //
542 m = a68_proc (M_BOOL, M_INT, NO_MOID);
543 a68_op (A68_STD, "ODD", m, genie_odd_int);
544 //
545 m = a68_proc (M_BOOL, M_INT, M_INT, NO_MOID);
546 a68_op (A68_STD, "=", m, genie_eq_int);
547 a68_op (A68_STD, "/=", m, genie_ne_int);
548 a68_op (A68_STD, "~=", m, genie_ne_int);
549 a68_op (A68_STD, "^=", m, genie_ne_int);
550 a68_op (A68_STD, "<", m, genie_lt_int);
551 a68_op (A68_STD, "<=", m, genie_le_int);
552 a68_op (A68_STD, ">", m, genie_gt_int);
553 a68_op (A68_STD, ">=", m, genie_ge_int);
554 a68_op (A68_STD, "EQ", m, genie_eq_int);
555 a68_op (A68_STD, "NE", m, genie_ne_int);
556 a68_op (A68_STD, "LT", m, genie_lt_int);
557 a68_op (A68_STD, "LE", m, genie_le_int);
558 a68_op (A68_STD, "GT", m, genie_gt_int);
559 a68_op (A68_STD, "GE", m, genie_ge_int);
560 //
561 m = a68_proc (M_INT, M_INT, M_INT, NO_MOID);
562 a68_op (A68_STD, "+", m, genie_add_int);
563 a68_op (A68_STD, "-", m, genie_sub_int);
564 a68_op (A68_STD, "*", m, genie_mul_int);
565 a68_op (A68_STD, "OVER", m, genie_over_int);
566 a68_op (A68_STD, "%", m, genie_over_int);
567 a68_op (A68_STD, "MOD", m, genie_mod_int);
568 a68_op (A68_STD, "%*", m, genie_mod_int);
569 a68_op (A68_STD, "**", m, genie_pow_int);
570 a68_op (A68_STD, "UP", m, genie_pow_int);
571 a68_op (A68_STD, "^", m, genie_pow_int);
572 //
573 m = a68_proc (M_REAL, M_INT, M_INT, NO_MOID);
574 a68_op (A68_STD, "/", m, genie_div_int);
575 //
576 m = a68_proc (M_REF_INT, M_REF_INT, M_INT, NO_MOID);
577 a68_op (A68_STD, "+:=", m, genie_plusab_int);
578 a68_op (A68_STD, "-:=", m, genie_minusab_int);
579 a68_op (A68_STD, "*:=", m, genie_timesab_int);
580 a68_op (A68_STD, "%:=", m, genie_overab_int);
581 a68_op (A68_STD, "%*:=", m, genie_modab_int);
582 a68_op (A68_STD, "PLUSAB", m, genie_plusab_int);
583 a68_op (A68_STD, "MINUSAB", m, genie_minusab_int);
584 a68_op (A68_STD, "TIMESAB", m, genie_timesab_int);
585 a68_op (A68_STD, "OVERAB", m, genie_overab_int);
586 a68_op (A68_STD, "MODAB", m, genie_modab_int);
587 // REAL ops.
588 m = A68_MCACHE (proc_real_real);
589 a68_op (A68_STD, "+", m, genie_idle);
590 a68_op (A68_STD, "-", m, genie_minus_real);
591 a68_op (A68_STD, "ABS", m, genie_abs_real);
592 m = a68_proc (M_INT, M_REAL, NO_MOID);
593 a68_op (A68_STD, "SIGN", m, genie_sign_real);
594 a68_op (A68_STD, "ROUND", m, genie_round_real);
595 a68_op (A68_STD, "ENTIER", m, genie_entier_real);
596 //
597 m = a68_proc (M_BOOL, M_REAL, M_REAL, NO_MOID);
598 a68_op (A68_STD, "=", m, genie_eq_real);
599 a68_op (A68_STD, "/=", m, genie_ne_real);
600 a68_op (A68_STD, "~=", m, genie_ne_real);
601 a68_op (A68_STD, "^=", m, genie_ne_real);
602 a68_op (A68_STD, "<", m, genie_lt_real);
603 a68_op (A68_STD, "<=", m, genie_le_real);
604 a68_op (A68_STD, ">", m, genie_gt_real);
605 a68_op (A68_STD, ">=", m, genie_ge_real);
606 a68_op (A68_STD, "EQ", m, genie_eq_real);
607 a68_op (A68_STD, "NE", m, genie_ne_real);
608 a68_op (A68_STD, "LT", m, genie_lt_real);
609 a68_op (A68_STD, "LE", m, genie_le_real);
610 a68_op (A68_STD, "GT", m, genie_gt_real);
611 a68_op (A68_STD, "GE", m, genie_ge_real);
612 //
613 m = A68_MCACHE (proc_real_real_real);
614 a68_op (A68_STD, "+", m, genie_add_real);
615 a68_op (A68_STD, "-", m, genie_sub_real);
616 a68_op (A68_STD, "*", m, genie_mul_real);
617 a68_op (A68_STD, "/", m, genie_div_real);
618 a68_op (A68_STD, "**", m, genie_pow_real);
619 a68_op (A68_STD, "UP", m, genie_pow_real);
620 a68_op (A68_STD, "^", m, genie_pow_real);
621 //
622 m = a68_proc (M_REAL, M_REAL, M_INT, NO_MOID);
623 a68_op (A68_STD, "**", m, genie_pow_real_int);
624 a68_op (A68_STD, "UP", m, genie_pow_real_int);
625 a68_op (A68_STD, "^", m, genie_pow_real_int);
626 //
627 m = a68_proc (M_REF_REAL, M_REF_REAL, M_REAL, NO_MOID);
628 a68_op (A68_STD, "+:=", m, genie_plusab_real);
629 a68_op (A68_STD, "-:=", m, genie_minusab_real);
630 a68_op (A68_STD, "*:=", m, genie_timesab_real);
631 a68_op (A68_STD, "/:=", m, genie_divab_real);
632 a68_op (A68_STD, "PLUSAB", m, genie_plusab_real);
633 a68_op (A68_STD, "MINUSAB", m, genie_minusab_real);
634 a68_op (A68_STD, "TIMESAB", m, genie_timesab_real);
635 a68_op (A68_STD, "DIVAB", m, genie_divab_real);
636 // Procedures
637 m = A68_MCACHE (proc_real_real);
638 a68_idf (A68_EXT, "acosdg", m, genie_acosdg_real);
639 a68_idf (A68_EXT, "acosh", m, genie_acosh_real);
640 a68_idf (A68_EXT, "acos", m, genie_acos_real);
641 a68_idf (A68_EXT, "acotdg", m, genie_acotdg_real);
642 a68_idf (A68_EXT, "acot", m, genie_acot_real);
643 a68_idf (A68_EXT, "acsc", m, genie_acsc_real);
644 a68_idf (A68_EXT, "arccosdg", m, genie_acosdg_real);
645 a68_idf (A68_EXT, "arccosh", m, genie_acosh_real);
646 a68_idf (A68_EXT, "arccotdg", m, genie_acotdg_real);
647 a68_idf (A68_EXT, "arccot", m, genie_acot_real);
648 a68_idf (A68_EXT, "arccsc", m, genie_acsc_real);
649 a68_idf (A68_EXT, "arcsec", m, genie_asec_real);
650 a68_idf (A68_EXT, "arcsindg", m, genie_asindg_real);
651 a68_idf (A68_EXT, "arcsinh", m, genie_asinh_real);
652 a68_idf (A68_EXT, "arctandg", m, genie_atandg_real);
653 a68_idf (A68_EXT, "arctanh", m, genie_atanh_real);
654 a68_idf (A68_EXT, "asec", m, genie_asec_real);
655 a68_idf (A68_EXT, "asindg", m, genie_asindg_real);
656 a68_idf (A68_EXT, "asinh", m, genie_asinh_real);
657 a68_idf (A68_EXT, "asin", m, genie_asin_real);
658 a68_idf (A68_EXT, "atandg", m, genie_atandg_real);
659 a68_idf (A68_EXT, "atanh", m, genie_atanh_real);
660 a68_idf (A68_EXT, "atan", m, genie_atan_real);
661 a68_idf (A68_EXT, "cbrt", m, genie_curt_real);
662 a68_idf (A68_EXT, "cosdg", m, genie_cosdg_real);
663 a68_idf (A68_EXT, "cosh", m, genie_cosh_real);
664 a68_idf (A68_EXT, "cospi", m, genie_cospi_real);
665 a68_idf (A68_EXT, "cotdg", m, genie_cotdg_real);
666 a68_idf (A68_EXT, "cot", m, genie_cot_real);
667 a68_idf (A68_EXT, "cotpi", m, genie_cotpi_real);
668 a68_idf (A68_EXT, "csc", m, genie_csc_real);
669 a68_idf (A68_EXT, "curt", m, genie_curt_real);
670 a68_idf (A68_EXT, "erfc", m, genie_erfc_real);
671 a68_idf (A68_EXT, "erf", m, genie_erf_real);
672 a68_idf (A68_EXT, "gamma", m, genie_gamma_real);
673 a68_idf (A68_EXT, "inverfc", m, genie_inverfc_real);
674 a68_idf (A68_EXT, "inverf", m, genie_inverf_real);
675 a68_idf (A68_EXT, "inverseerfc", m, genie_inverfc_real);
676 a68_idf (A68_EXT, "inverseerf", m, genie_inverf_real);
677 a68_idf (A68_EXT, "ln1p", m, genie_ln1p_real);
678 a68_idf (A68_EXT, "lngamma", m, genie_ln_gamma_real);
679 a68_idf (A68_EXT, "sec", m, genie_sec_real);
680 a68_idf (A68_EXT, "sindg", m, genie_sindg_real);
681 a68_idf (A68_EXT, "sinh", m, genie_sinh_real);
682 a68_idf (A68_EXT, "sinpi", m, genie_sinpi_real);
683 a68_idf (A68_EXT, "tandg", m, genie_tandg_real);
684 a68_idf (A68_EXT, "tanh", m, genie_tanh_real);
685 a68_idf (A68_EXT, "tanpi", m, genie_tanpi_real);
686 a68_idf (A68_STD, "arccos", m, genie_acos_real);
687 a68_idf (A68_STD, "arcsin", m, genie_asin_real);
688 a68_idf (A68_STD, "arctan", m, genie_atan_real);
689 a68_idf (A68_STD, "cos", m, genie_cos_real);
690 a68_idf (A68_STD, "exp", m, genie_exp_real);
691 a68_idf (A68_STD, "ln", m, genie_ln_real);
692 a68_idf (A68_STD, "log", m, genie_log_real);
693 a68_idf (A68_STD, "sin", m, genie_sin_real);
694 a68_idf (A68_STD, "sqrt", m, genie_sqrt_real);
695 a68_idf (A68_STD, "tan", m, genie_tan_real);
696 // Miscellaneous.
697 a68_idf (A68_EXT, "arctan2", A68_MCACHE (proc_real_real_real), genie_atan2_real);
698 a68_idf (A68_EXT, "arctan2dg", A68_MCACHE (proc_real_real_real), genie_atan2dg_real);
699 a68_idf (A68_EXT, "beta", A68_MCACHE (proc_real_real_real), genie_beta_real);
700 a68_idf (A68_EXT, "betainc", A68_MCACHE (proc_real_real_real_real), genie_beta_inc_cf_real);
701 a68_idf (A68_EXT, "choose", A68_MCACHE (proc_int_int_real), genie_choose_real);
702 a68_idf (A68_EXT, "fact", A68_MCACHE (proc_int_real), genie_fact_real);
703 a68_idf (A68_EXT, "gammainc", A68_MCACHE (proc_real_real_real), genie_gamma_inc_h_real);
704 a68_idf (A68_EXT, "gammaincf", A68_MCACHE (proc_real_real_real), genie_gamma_inc_f_real);
705 a68_idf (A68_EXT, "gammaincg", A68_MCACHE (proc_real_real_real_real_real), genie_gamma_inc_g_real);
706 a68_idf (A68_EXT, "gammaincgf", A68_MCACHE (proc_real_real_real), genie_gamma_inc_gf_real);
707 a68_idf (A68_EXT, "lje126", A68_MCACHE (proc_real_real_real_real), genie_lj_e_12_6);
708 a68_idf (A68_EXT, "ljf126", A68_MCACHE (proc_real_real_real_real), genie_lj_f_12_6);
709 a68_idf (A68_EXT, "lnbeta", A68_MCACHE (proc_real_real_real), genie_ln_beta_real);
710 a68_idf (A68_EXT, "lnchoose", A68_MCACHE (proc_int_int_real), genie_ln_choose_real);
711 a68_idf (A68_EXT, "lnfact", A68_MCACHE (proc_int_real), genie_ln_fact_real);
712 // COMPLEX ops.
713 m = a68_proc (M_COMPLEX, M_REAL, M_REAL, NO_MOID);
714 a68_op (A68_STD, "I", m, genie_i_complex);
715 a68_op (A68_STD, "+*", m, genie_i_complex);
716 //
717 m = a68_proc (M_COMPLEX, M_INT, M_INT, NO_MOID);
718 a68_op (A68_STD, "I", m, genie_i_int_complex);
719 a68_op (A68_STD, "+*", m, genie_i_int_complex);
720 //
721 m = a68_proc (M_REAL, M_COMPLEX, NO_MOID);
722 a68_op (A68_STD, "RE", m, genie_re_complex);
723 a68_op (A68_STD, "IM", m, genie_im_complex);
724 a68_op (A68_STD, "ABS", m, genie_abs_complex);
725 a68_op (A68_STD, "ARG", m, genie_arg_complex);
726 //
727 m = A68_MCACHE (proc_complex_complex);
728 a68_op (A68_STD, "+", m, genie_idle);
729 a68_op (A68_STD, "-", m, genie_minus_complex);
730 a68_op (A68_STD, "CONJ", m, genie_conj_complex);
731 //
732 m = a68_proc (M_BOOL, M_COMPLEX, M_COMPLEX, NO_MOID);
733 a68_op (A68_STD, "=", m, genie_eq_complex);
734 a68_op (A68_STD, "/=", m, genie_ne_complex);
735 a68_op (A68_STD, "~=", m, genie_ne_complex);
736 a68_op (A68_STD, "^=", m, genie_ne_complex);
737 a68_op (A68_STD, "EQ", m, genie_eq_complex);
738 a68_op (A68_STD, "NE", m, genie_ne_complex);
739 //
740 m = a68_proc (M_COMPLEX, M_COMPLEX, M_COMPLEX, NO_MOID);
741 a68_op (A68_STD, "+", m, genie_add_complex);
742 a68_op (A68_STD, "-", m, genie_sub_complex);
743 a68_op (A68_STD, "*", m, genie_mul_complex);
744 a68_op (A68_STD, "/", m, genie_div_complex);
745 //
746 m = a68_proc (M_COMPLEX, M_COMPLEX, M_INT, NO_MOID);
747 a68_op (A68_STD, "**", m, genie_pow_complex_int);
748 a68_op (A68_STD, "UP", m, genie_pow_complex_int);
749 a68_op (A68_STD, "^", m, genie_pow_complex_int);
750 //
751 m = a68_proc (M_REF_COMPLEX, M_REF_COMPLEX, M_COMPLEX, NO_MOID);
752 a68_op (A68_STD, "+:=", m, genie_plusab_complex);
753 a68_op (A68_STD, "-:=", m, genie_minusab_complex);
754 a68_op (A68_STD, "*:=", m, genie_timesab_complex);
755 a68_op (A68_STD, "/:=", m, genie_divab_complex);
756 a68_op (A68_STD, "PLUSAB", m, genie_plusab_complex);
757 a68_op (A68_STD, "MINUSAB", m, genie_minusab_complex);
758 a68_op (A68_STD, "TIMESAB", m, genie_timesab_complex);
759 a68_op (A68_STD, "DIVAB", m, genie_divab_complex);
760 //
761 m = A68_MCACHE (proc_complex_complex);
762 a68_idf (A68_EXT, "cacosh", m, genie_acosh_complex);
763 a68_idf (A68_EXT, "cacos", m, genie_acos_complex);
764 a68_idf (A68_EXT, "carccosh", m, genie_acosh_complex);
765 a68_idf (A68_EXT, "carccos", m, genie_acos_complex);
766 a68_idf (A68_EXT, "carcsinh", m, genie_asinh_complex);
767 a68_idf (A68_EXT, "carcsin", m, genie_asin_complex);
768 a68_idf (A68_EXT, "carctanh", m, genie_atanh_complex);
769 a68_idf (A68_EXT, "carctan", m, genie_atan_complex);
770 a68_idf (A68_EXT, "casinh", m, genie_asinh_complex);
771 a68_idf (A68_EXT, "casin", m, genie_asin_complex);
772 a68_idf (A68_EXT, "catanh", m, genie_atanh_complex);
773 a68_idf (A68_EXT, "catan", m, genie_atan_complex);
774 a68_idf (A68_EXT, "ccosh", m, genie_cosh_complex);
775 a68_idf (A68_EXT, "ccos", m, genie_cos_complex);
776 a68_idf (A68_EXT, "cexp", m, genie_exp_complex);
777 a68_idf (A68_EXT, "cln", m, genie_ln_complex);
778 a68_idf (A68_EXT, "complexacosh", m, genie_acosh_complex);
779 a68_idf (A68_EXT, "complexacos", m, genie_acos_complex);
780 a68_idf (A68_EXT, "complexarccosh", m, genie_acosh_complex);
781 a68_idf (A68_EXT, "complexarccos", m, genie_acos_complex);
782 a68_idf (A68_EXT, "complexarcsinh", m, genie_asinh_complex);
783 a68_idf (A68_EXT, "complexarcsin", m, genie_asin_complex);
784 a68_idf (A68_EXT, "complexarctanh", m, genie_atanh_complex);
785 a68_idf (A68_EXT, "complexarctan", m, genie_atan_complex);
786 a68_idf (A68_EXT, "complexasinh", m, genie_asinh_complex);
787 a68_idf (A68_EXT, "complexasin", m, genie_asin_complex);
788 a68_idf (A68_EXT, "complexatanh", m, genie_atanh_complex);
789 a68_idf (A68_EXT, "complexatan", m, genie_atan_complex);
790 a68_idf (A68_EXT, "complexcosh", m, genie_cosh_complex);
791 a68_idf (A68_EXT, "complexcos", m, genie_cos_complex);
792 a68_idf (A68_EXT, "complexexp", m, genie_exp_complex);
793 a68_idf (A68_EXT, "complexln", m, genie_ln_complex);
794 a68_idf (A68_EXT, "complexsinh", m, genie_sinh_complex);
795 a68_idf (A68_EXT, "complexsin", m, genie_sin_complex);
796 a68_idf (A68_EXT, "complexsqrt", m, genie_sqrt_complex);
797 a68_idf (A68_EXT, "complextanh", m, genie_tanh_complex);
798 a68_idf (A68_EXT, "complextan", m, genie_tan_complex);
799 a68_idf (A68_EXT, "csinh", m, genie_sinh_complex);
800 a68_idf (A68_EXT, "csin", m, genie_sin_complex);
801 a68_idf (A68_EXT, "csqrt", m, genie_sqrt_complex);
802 a68_idf (A68_EXT, "ctanh", m, genie_tanh_complex);
803 a68_idf (A68_EXT, "ctan", m, genie_tan_complex);
804 // BOOL ops.
805 m = a68_proc (M_BOOL, M_BOOL, NO_MOID);
806 a68_op (A68_STD, "NOT", m, genie_not_bool);
807 a68_op (A68_STD, "~", m, genie_not_bool);
808 m = a68_proc (M_INT, M_BOOL, NO_MOID);
809 a68_op (A68_STD, "ABS", m, genie_abs_bool);
810 m = a68_proc (M_BOOL, M_BOOL, M_BOOL, NO_MOID);
811 a68_op (A68_STD, "OR", m, genie_or_bool);
812 a68_op (A68_STD, "AND", m, genie_and_bool);
813 a68_op (A68_STD, "&", m, genie_and_bool);
814 a68_op (A68_EXT, "XOR", m, genie_xor_bool);
815 a68_op (A68_STD, "=", m, genie_eq_bool);
816 a68_op (A68_STD, "/=", m, genie_ne_bool);
817 a68_op (A68_STD, "~=", m, genie_ne_bool);
818 a68_op (A68_STD, "^=", m, genie_ne_bool);
819 a68_op (A68_STD, "EQ", m, genie_eq_bool);
820 a68_op (A68_STD, "NE", m, genie_ne_bool);
821 // CHAR ops.
822 m = a68_proc (M_BOOL, M_CHAR, M_CHAR, NO_MOID);
823 a68_op (A68_STD, "=", m, genie_eq_char);
824 a68_op (A68_STD, "/=", m, genie_ne_char);
825 a68_op (A68_STD, "~=", m, genie_ne_char);
826 a68_op (A68_STD, "^=", m, genie_ne_char);
827 a68_op (A68_STD, "<", m, genie_lt_char);
828 a68_op (A68_STD, "<=", m, genie_le_char);
829 a68_op (A68_STD, ">", m, genie_gt_char);
830 a68_op (A68_STD, ">=", m, genie_ge_char);
831 a68_op (A68_STD, "EQ", m, genie_eq_char);
832 a68_op (A68_STD, "NE", m, genie_ne_char);
833 a68_op (A68_STD, "LT", m, genie_lt_char);
834 a68_op (A68_STD, "LE", m, genie_le_char);
835 a68_op (A68_STD, "GT", m, genie_gt_char);
836 a68_op (A68_STD, "GE", m, genie_ge_char);
837 m = a68_proc (M_INT, M_CHAR, NO_MOID);
838 a68_op (A68_STD, "ABS", m, genie_abs_char);
839 m = a68_proc (M_CHAR, M_INT, NO_MOID);
840 a68_op (A68_STD, "REPR", m, genie_repr_char);
841 m = a68_proc (M_BOOL, M_CHAR, NO_MOID);
842 a68_idf (A68_EXT, "isalnum", m, genie_is_alnum);
843 a68_idf (A68_EXT, "isalpha", m, genie_is_alpha);
844 a68_idf (A68_EXT, "iscntrl", m, genie_is_cntrl);
845 a68_idf (A68_EXT, "isdigit", m, genie_is_digit);
846 a68_idf (A68_EXT, "isgraph", m, genie_is_graph);
847 a68_idf (A68_EXT, "islower", m, genie_is_lower);
848 a68_idf (A68_EXT, "isprint", m, genie_is_print);
849 a68_idf (A68_EXT, "ispunct", m, genie_is_punct);
850 a68_idf (A68_EXT, "isspace", m, genie_is_space);
851 a68_idf (A68_EXT, "isupper", m, genie_is_upper);
852 a68_idf (A68_EXT, "isxdigit", m, genie_is_xdigit);
853 m = a68_proc (M_CHAR, M_CHAR, NO_MOID);
854 a68_idf (A68_EXT, "tolower", m, genie_to_lower);
855 a68_idf (A68_EXT, "toupper", m, genie_to_upper);
856 // BITS ops.
857 m = a68_proc (M_INT, M_BITS, NO_MOID);
858 a68_op (A68_STD, "ABS", m, genie_abs_bits);
859 //
860 m = a68_proc (M_BITS, M_INT, NO_MOID);
861 a68_op (A68_STD, "BIN", m, genie_bin_int);
862 //
863 m = a68_proc (M_BITS, M_BITS, NO_MOID);
864 a68_op (A68_STD, "NOT", m, genie_not_bits);
865 a68_op (A68_STD, "~", m, genie_not_bits);
866 //
867 m = a68_proc (M_BOOL, M_BITS, M_BITS, NO_MOID);
868 a68_op (A68_STD, "=", m, genie_eq_bits);
869 a68_op (A68_STD, "/=", m, genie_ne_bits);
870 a68_op (A68_STD, "~=", m, genie_ne_bits);
871 a68_op (A68_STD, "^=", m, genie_ne_bits);
872 a68_op (A68_STD, "<=", m, genie_le_bits);
873 a68_op (A68_STD, ">=", m, genie_ge_bits);
874 a68_op (A68_STD, "EQ", m, genie_eq_bits);
875 a68_op (A68_STD, "NE", m, genie_ne_bits);
876 a68_op (A68_STD, "LE", m, genie_le_bits);
877 a68_op (A68_STD, "GE", m, genie_ge_bits);
878 #if (A68_LEVEL >= 3)
879 a68_op (A68_EXT, "<", m, genie_lt_bits);
880 a68_op (A68_EXT, ">", m, genie_gt_bits);
881 a68_op (A68_EXT, "LT", m, genie_lt_bits);
882 a68_op (A68_EXT, "GT", m, genie_gt_bits);
883 #endif
884 //
885 m = a68_proc (M_BITS, M_BITS, M_BITS, NO_MOID);
886 a68_op (A68_STD, "AND", m, genie_and_bits);
887 a68_op (A68_STD, "&", m, genie_and_bits);
888 a68_op (A68_STD, "OR", m, genie_or_bits);
889 a68_op (A68_EXT, "XOR", m, genie_xor_bits);
890 a68_op (A68_EXT, "+", m, genie_add_bits);
891 a68_op (A68_EXT, "-", m, genie_sub_bits);
892 a68_op (A68_EXT, "*", m, genie_times_bits);
893 a68_op (A68_EXT, "OVER", m, genie_over_bits);
894 a68_op (A68_EXT, "MOD", m, genie_over_bits);
895 //
896 m = a68_proc (M_BITS, M_BITS, M_INT, NO_MOID);
897 a68_op (A68_STD, "SHL", m, genie_shl_bits);
898 a68_op (A68_STD, "UP", m, genie_shl_bits);
899 a68_op (A68_STD, "SHR", m, genie_shr_bits);
900 a68_op (A68_STD, "DOWN", m, genie_shr_bits);
901 a68_op (A68_EXT, "ROL", m, genie_rol_bits);
902 a68_op (A68_EXT, "ROR", m, genie_ror_bits);
903 //
904 m = a68_proc (M_BOOL, M_INT, M_BITS, NO_MOID);
905 a68_op (A68_STD, "ELEM", m, genie_elem_bits);
906 //
907 m = a68_proc (M_BITS, M_INT, M_BITS, NO_MOID);
908 a68_op (A68_STD, "SET", m, genie_set_bits);
909 a68_op (A68_STD, "CLEAR", m, genie_clear_bits);
910 // LONG LONG INT in software
911 m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID);
912 a68_op (A68_STD, "+", m, genie_idle);
913 a68_op (A68_STD, "-", m, genie_minus_mp);
914 a68_op (A68_STD, "ABS", m, genie_abs_mp);
915 //
916 m = a68_proc (M_INT, M_LONG_LONG_INT, NO_MOID);
917 a68_op (A68_STD, "SIGN", m, genie_sign_mp);
918 //
919 m = a68_proc (M_BOOL, M_LONG_LONG_INT, NO_MOID);
920 a68_op (A68_STD, "ODD", m, genie_odd_mp);
921 //
922 m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_REAL, NO_MOID);
923 a68_op (A68_STD, "ENTIER", m, genie_entier_mp);
924 a68_op (A68_STD, "ROUND", m, genie_round_mp);
925 //
926 m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID);
927 a68_op (A68_STD, "+", m, genie_add_mp_int);
928 a68_op (A68_STD, "-", m, genie_sub_mp_int);
929 a68_op (A68_STD, "*", m, genie_mul_mp_int);
930 a68_op (A68_STD, "OVER", m, genie_over_mp);
931 a68_op (A68_STD, "%", m, genie_over_mp);
932 a68_op (A68_STD, "MOD", m, genie_mod_mp);
933 a68_op (A68_STD, "%*", m, genie_mod_mp);
934 //
935 m = a68_proc (M_REF_LONG_LONG_INT, M_REF_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID);
936 a68_op (A68_STD, "+:=", m, genie_plusab_mp_int);
937 a68_op (A68_STD, "-:=", m, genie_minusab_mp_int);
938 a68_op (A68_STD, "*:=", m, genie_timesab_mp_int);
939 a68_op (A68_STD, "%:=", m, genie_overab_mp);
940 a68_op (A68_STD, "%*:=", m, genie_modab_mp);
941 a68_op (A68_STD, "PLUSAB", m, genie_plusab_mp_int);
942 a68_op (A68_STD, "MINUSAB", m, genie_minusab_mp_int);
943 a68_op (A68_STD, "TIMESAB", m, genie_timesab_mp_int);
944 a68_op (A68_STD, "OVERAB", m, genie_overab_mp);
945 a68_op (A68_STD, "MODAB", m, genie_modab_mp);
946 //
947 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID);
948 a68_op (A68_STD, "/", m, genie_div_mp);
949 //
950 m = a68_proc (M_BOOL, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID);
951 a68_op (A68_STD, "EQ", m, genie_eq_mp);
952 a68_op (A68_STD, "NE", m, genie_ne_mp);
953 a68_op (A68_STD, "GE", m, genie_ge_mp);
954 a68_op (A68_STD, "GT", m, genie_gt_mp);
955 a68_op (A68_STD, "LE", m, genie_le_mp);
956 a68_op (A68_STD, "LT", m, genie_lt_mp);
957 a68_op (A68_STD, "=", m, genie_eq_mp);
958 a68_op (A68_STD, ">=", m, genie_ge_mp);
959 a68_op (A68_STD, ">", m, genie_gt_mp);
960 a68_op (A68_STD, "<=", m, genie_le_mp);
961 a68_op (A68_STD, "<", m, genie_lt_mp);
962 a68_op (A68_STD, "/=", m, genie_ne_mp);
963 a68_op (A68_STD, "^=", m, genie_ne_mp);
964 a68_op (A68_STD, "~=", m, genie_ne_mp);
965 //
966 m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, M_INT, NO_MOID);
967 a68_op (A68_STD, "**", m, genie_pow_mp_int_int);
968 a68_op (A68_STD, "^", m, genie_pow_mp_int_int);
969 //
970 m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID);
971 a68_op (A68_STD, "I", m, genie_idle);
972 a68_op (A68_STD, "+*", m, genie_idle);
973 // LONG LONG REAL in software
974 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
975 a68_op (A68_STD, "ABS", m, genie_abs_mp);
976 a68_op (A68_STD, "+", m, genie_idle);
977 a68_op (A68_STD, "-", m, genie_minus_mp);
978 #if (A68_LEVEL >= 3)
979 a68_idf (A68_EXT, "quadmp", m, genie_quad_mp);
980 #endif
981 //
982 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
983 a68_idf (A68_EXT, "longlongarccosdg", m, genie_acosdg_mp);
984 a68_idf (A68_EXT, "longlongarccosh", m, genie_acosh_mp);
985 a68_idf (A68_EXT, "longlongarccotdg", m, genie_acotdg_mp);
986 a68_idf (A68_EXT, "longlongarccot", m, genie_acot_mp);
987 a68_idf (A68_EXT, "longlongarccsc", m, genie_acsc_mp);
988 a68_idf (A68_EXT, "longlongarcsec", m, genie_asec_mp);
989 a68_idf (A68_EXT, "longlongarcsindg", m, genie_asindg_mp);
990 a68_idf (A68_EXT, "longlongarcsinh", m, genie_asinh_mp);
991 a68_idf (A68_EXT, "longlongarctandg", m, genie_atandg_mp);
992 a68_idf (A68_EXT, "longlongarctanh", m, genie_atanh_mp);
993 a68_idf (A68_EXT, "longlongcbrt", m, genie_curt_mp);
994 a68_idf (A68_EXT, "longlongcosdg", m, genie_cosdg_mp);
995 a68_idf (A68_EXT, "longlongcosh", m, genie_cosh_mp);
996 a68_idf (A68_EXT, "longlongcospi", m, genie_cospi_mp);
997 a68_idf (A68_EXT, "longlongcotdg", m, genie_cotdg_mp);
998 a68_idf (A68_EXT, "longlongcot", m, genie_cot_mp);
999 a68_idf (A68_EXT, "longlongcotpi", m, genie_cotpi_mp);
1000 a68_idf (A68_EXT, "longlongcsc", m, genie_csc_mp);
1001 a68_idf (A68_EXT, "longlongcurt", m, genie_curt_mp);
1002 a68_idf (A68_EXT, "longlongerfc", m, genie_erfc_mp);
1003 a68_idf (A68_EXT, "longlongerf", m, genie_erf_mp);
1004 a68_idf (A68_EXT, "longlonggamma", m, genie_gamma_mp);
1005 a68_idf (A68_EXT, "longlonginverfc", m, genie_inverfc_mp);
1006 a68_idf (A68_EXT, "longlonginverf", m, genie_inverf_mp);
1007 a68_idf (A68_EXT, "longlonglngamma", m, genie_lngamma_mp);
1008 a68_idf (A68_EXT, "longlongsec", m, genie_sec_mp);
1009 a68_idf (A68_EXT, "longlongsindg", m, genie_sindg_mp);
1010 a68_idf (A68_EXT, "longlongsinh", m, genie_sinh_mp);
1011 a68_idf (A68_EXT, "longlongsinpi", m, genie_sinpi_mp);
1012 a68_idf (A68_EXT, "longlongtandg", m, genie_tandg_mp);
1013 a68_idf (A68_EXT, "longlongtanh", m, genie_tanh_mp);
1014 a68_idf (A68_EXT, "longlongtan", m, genie_tan_mp);
1015 a68_idf (A68_EXT, "longlongtanpi", m, genie_tanpi_mp);
1016 a68_idf (A68_EXT, "qacosdg", m, genie_acosdg_mp);
1017 a68_idf (A68_EXT, "qacosh", m, genie_acosh_mp);
1018 a68_idf (A68_EXT, "qacos", m, genie_acos_mp);
1019 a68_idf (A68_EXT, "qacotdg", m, genie_acotdg_mp);
1020 a68_idf (A68_EXT, "qacot", m, genie_acot_mp);
1021 a68_idf (A68_EXT, "qacsc", m, genie_acsc_mp);
1022 a68_idf (A68_EXT, "qasec", m, genie_asec_mp);
1023 a68_idf (A68_EXT, "qasindg", m, genie_asindg_mp);
1024 a68_idf (A68_EXT, "qasindg", m, genie_asindg_mp);
1025 a68_idf (A68_EXT, "qasinh", m, genie_asinh_mp);
1026 a68_idf (A68_EXT, "qasin", m, genie_asin_mp);
1027 a68_idf (A68_EXT, "qatandg", m, genie_atandg_mp);
1028 a68_idf (A68_EXT, "qatanh", m, genie_atanh_mp);
1029 a68_idf (A68_EXT, "qatan", m, genie_atan_mp);
1030 a68_idf (A68_EXT, "qcbrt", m, genie_curt_mp);
1031 a68_idf (A68_EXT, "qcosdg", m, genie_cosdg_mp);
1032 a68_idf (A68_EXT, "qcosh", m, genie_cosh_mp);
1033 a68_idf (A68_EXT, "qcos", m, genie_cos_mp);
1034 a68_idf (A68_EXT, "qcospi", m, genie_cospi_mp);
1035 a68_idf (A68_EXT, "qcotdg", m, genie_cotdg_mp);
1036 a68_idf (A68_EXT, "qcot", m, genie_cot_mp);
1037 a68_idf (A68_EXT, "qcotpi", m, genie_cotpi_mp);
1038 a68_idf (A68_EXT, "qcsc", m, genie_csc_mp);
1039 a68_idf (A68_EXT, "qcurt", m, genie_curt_mp);
1040 a68_idf (A68_EXT, "qerfc", m, genie_erfc_mp);
1041 a68_idf (A68_EXT, "qerf", m, genie_erf_mp);
1042 a68_idf (A68_EXT, "qexp", m, genie_exp_mp);
1043 a68_idf (A68_EXT, "qgamma", m, genie_gamma_mp);
1044 a68_idf (A68_EXT, "qinverfc", m, genie_inverfc_mp);
1045 a68_idf (A68_EXT, "qinverf", m, genie_inverf_mp);
1046 a68_idf (A68_EXT, "qlngamma", m, genie_lngamma_mp);
1047 a68_idf (A68_EXT, "qln", m, genie_ln_mp);
1048 a68_idf (A68_EXT, "qlog", m, genie_log_mp);
1049 a68_idf (A68_EXT, "qsec", m, genie_sec_mp);
1050 a68_idf (A68_EXT, "qsindg", m, genie_sindg_mp);
1051 a68_idf (A68_EXT, "qsinh", m, genie_sinh_mp);
1052 a68_idf (A68_EXT, "qsin", m, genie_sin_mp);
1053 a68_idf (A68_EXT, "qsinpi", m, genie_sinpi_mp);
1054 a68_idf (A68_EXT, "qsqrt", m, genie_sqrt_mp);
1055 a68_idf (A68_EXT, "qtandg", m, genie_tandg_mp);
1056 a68_idf (A68_EXT, "qtanh", m, genie_tanh_mp);
1057 a68_idf (A68_EXT, "qtan", m, genie_tan_mp);
1058 a68_idf (A68_EXT, "qtanpi", m, genie_tanpi_mp);
1059 // RR.
1060 a68_idf (A68_STD, "longlongarccos", m, genie_acos_mp);
1061 a68_idf (A68_STD, "longlongarcsin", m, genie_asin_mp);
1062 a68_idf (A68_STD, "longlongarctan", m, genie_atan_mp);
1063 a68_idf (A68_STD, "longlongcos", m, genie_cos_mp);
1064 a68_idf (A68_STD, "longlongexp", m, genie_exp_mp);
1065 a68_idf (A68_STD, "longlongln", m, genie_ln_mp);
1066 a68_idf (A68_STD, "longlonglog", m, genie_log_mp);
1067 a68_idf (A68_STD, "longlongsin", m, genie_sin_mp);
1068 a68_idf (A68_STD, "longlongsqrt", m, genie_sqrt_mp);
1069 a68_idf (A68_STD, "longlongtan", m, genie_tan_mp);
1070 //
1071 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
1072 a68_idf (A68_EXT, "longlongarctan2dg", m, genie_atan2dg_mp);
1073 a68_idf (A68_EXT, "longlongarctan2", m, genie_atan2_mp);
1074 a68_idf (A68_EXT, "longlongbeta", m, genie_beta_mp);
1075 a68_idf (A68_EXT, "longlonggammaincf", m, genie_gamma_inc_f_mp);
1076 a68_idf (A68_EXT, "longlonggammaincgf", m, genie_gamma_inc_gf_mp);
1077 a68_idf (A68_EXT, "longlonggammainc", m, genie_gamma_inc_h_mp);
1078 a68_idf (A68_EXT, "longlonglnbeta", m, genie_lnbeta_mp);
1079 a68_idf (A68_EXT, "qarctan2dg", m, genie_atan2dg_mp);
1080 a68_idf (A68_EXT, "qatan2", m, genie_atan2_mp);
1081 a68_idf (A68_EXT, "qbeta", m, genie_beta_mp);
1082 a68_idf (A68_EXT, "qgammaincf", m, genie_gamma_inc_f_mp);
1083 a68_idf (A68_EXT, "qgammaincgf", m, genie_gamma_inc_gf_mp);
1084 a68_idf (A68_EXT, "qgammainc", m, genie_gamma_inc_h_mp);
1085 a68_idf (A68_EXT, "qlnbeta", m, genie_lnbeta_mp);
1086 //
1087 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
1088 a68_idf (A68_EXT, "longlongbetainc", m, genie_beta_inc_mp);
1089 a68_idf (A68_EXT, "qbetainc", m, genie_beta_inc_mp);
1090 //
1091 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
1092 a68_idf (A68_EXT, "longlonggammaincg", m, genie_gamma_inc_g_mp);
1093 a68_idf (A68_EXT, "qgammaincg", m, genie_gamma_inc_g_mp);
1094 //
1095 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
1096 a68_op (A68_STD, "+", m, genie_add_mp);
1097 a68_op (A68_STD, "-", m, genie_sub_mp);
1098 a68_op (A68_STD, "*", m, genie_mul_mp);
1099 a68_op (A68_STD, "/", m, genie_div_mp);
1100 a68_op (A68_STD, "**", m, genie_pow_mp);
1101 a68_op (A68_STD, "UP", m, genie_pow_mp);
1102 a68_op (A68_STD, "^", m, genie_pow_mp);
1103 //
1104 m = a68_proc (M_REF_LONG_LONG_REAL, M_REF_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
1105 a68_op (A68_STD, "+:=", m, genie_plusab_mp);
1106 a68_op (A68_STD, "-:=", m, genie_minusab_mp);
1107 a68_op (A68_STD, "*:=", m, genie_timesab_mp);
1108 a68_op (A68_STD, "/:=", m, genie_divab_mp);
1109 a68_op (A68_STD, "PLUSAB", m, genie_plusab_mp);
1110 a68_op (A68_STD, "MINUSAB", m, genie_minusab_mp);
1111 a68_op (A68_STD, "TIMESAB", m, genie_timesab_mp);
1112 a68_op (A68_STD, "DIVAB", m, genie_divab_mp);
1113 //
1114 m = a68_proc (M_BOOL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
1115 a68_op (A68_STD, "=", m, genie_eq_mp);
1116 a68_op (A68_STD, "EQ", m, genie_eq_mp);
1117 a68_op (A68_STD, "/=", m, genie_ne_mp);
1118 a68_op (A68_STD, "~=", m, genie_ne_mp);
1119 a68_op (A68_STD, "^=", m, genie_ne_mp);
1120 a68_op (A68_STD, "NE", m, genie_ne_mp);
1121 a68_op (A68_STD, "<", m, genie_lt_mp);
1122 a68_op (A68_STD, "LT", m, genie_lt_mp);
1123 a68_op (A68_STD, "<=", m, genie_le_mp);
1124 a68_op (A68_STD, "LE", m, genie_le_mp);
1125 a68_op (A68_STD, ">", m, genie_gt_mp);
1126 a68_op (A68_STD, "GT", m, genie_gt_mp);
1127 a68_op (A68_STD, ">=", m, genie_ge_mp);
1128 a68_op (A68_STD, "GE", m, genie_ge_mp);
1129 //
1130 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_INT, NO_MOID);
1131 a68_op (A68_STD, "**", m, genie_pow_mp_int);
1132 a68_op (A68_STD, "UP", m, genie_pow_mp_int);
1133 a68_op (A68_STD, "^", m, genie_pow_mp_int);
1134 //
1135 m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
1136 a68_op (A68_STD, "I", m, genie_idle);
1137 a68_op (A68_STD, "+*", m, genie_idle);
1138 // LONG LONG COMPLEX in software
1139 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_COMPLEX, NO_MOID);
1140 a68_op (A68_STD, "RE", m, genie_re_mp_complex);
1141 a68_op (A68_STD, "IM", m, genie_im_mp_complex);
1142 a68_op (A68_STD, "ARG", m, genie_arg_mp_complex);
1143 a68_op (A68_STD, "ABS", m, genie_abs_mp_complex);
1144 //
1145 m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID);
1146 a68_op (A68_STD, "+", m, genie_idle);
1147 a68_op (A68_STD, "-", m, genie_minus_mp_complex);
1148 a68_op (A68_STD, "CONJ", m, genie_conj_mp_complex);
1149 //
1150 m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID);
1151 a68_op (A68_STD, "+", m, genie_add_mp_complex);
1152 a68_op (A68_STD, "-", m, genie_sub_mp_complex);
1153 a68_op (A68_STD, "*", m, genie_mul_mp_complex);
1154 a68_op (A68_STD, "/", m, genie_div_mp_complex);
1155 //
1156 m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, M_INT, NO_MOID);
1157 a68_op (A68_STD, "**", m, genie_pow_mp_complex_int);
1158 a68_op (A68_STD, "UP", m, genie_pow_mp_complex_int);
1159 a68_op (A68_STD, "^", m, genie_pow_mp_complex_int);
1160 //
1161 m = a68_proc (M_BOOL, M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID);
1162 a68_op (A68_STD, "=", m, genie_eq_mp_complex);
1163 a68_op (A68_STD, "EQ", m, genie_eq_mp_complex);
1164 a68_op (A68_STD, "/=", m, genie_ne_mp_complex);
1165 a68_op (A68_STD, "~=", m, genie_ne_mp_complex);
1166 a68_op (A68_STD, "^=", m, genie_ne_mp_complex);
1167 a68_op (A68_STD, "NE", m, genie_ne_mp_complex);
1168 //
1169 m = a68_proc (M_REF_LONG_LONG_COMPLEX, M_REF_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID);
1170 a68_op (A68_STD, "+:=", m, genie_plusab_mp_complex);
1171 a68_op (A68_STD, "-:=", m, genie_minusab_mp_complex);
1172 a68_op (A68_STD, "*:=", m, genie_timesab_mp_complex);
1173 a68_op (A68_STD, "/:=", m, genie_divab_mp_complex);
1174 a68_op (A68_STD, "PLUSAB", m, genie_plusab_mp_complex);
1175 a68_op (A68_STD, "MINUSAB", m, genie_minusab_mp_complex);
1176 a68_op (A68_STD, "TIMESAB", m, genie_timesab_mp_complex);
1177 a68_op (A68_STD, "DIVAB", m, genie_divab_mp_complex);
1178 //
1179 m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID);
1180 a68_idf (A68_EXT, "longlongcomplexacosh", m, genie_acosh_mp_complex);
1181 a68_idf (A68_EXT, "longlongcomplexacos", m, genie_acos_mp_complex);
1182 a68_idf (A68_EXT, "longlongcomplexarccosh", m, genie_acosh_mp_complex);
1183 a68_idf (A68_EXT, "longlongcomplexarccos", m, genie_acos_mp_complex);
1184 a68_idf (A68_EXT, "longlongcomplexarcsinh", m, genie_asinh_mp_complex);
1185 a68_idf (A68_EXT, "longlongcomplexarcsin", m, genie_asin_mp_complex);
1186 a68_idf (A68_EXT, "longlongcomplexarctanh", m, genie_atanh_mp_complex);
1187 a68_idf (A68_EXT, "longlongcomplexarctan", m, genie_atan_mp_complex);
1188 a68_idf (A68_EXT, "longlongcomplexasinh", m, genie_asinh_mp_complex);
1189 a68_idf (A68_EXT, "longlongcomplexasin", m, genie_asin_mp_complex);
1190 a68_idf (A68_EXT, "longlongcomplexatanh", m, genie_atanh_mp_complex);
1191 a68_idf (A68_EXT, "longlongcomplexatan", m, genie_atan_mp_complex);
1192 a68_idf (A68_EXT, "longlongcomplexcosh", m, genie_cosh_mp_complex);
1193 a68_idf (A68_EXT, "longlongcomplexcos", m, genie_cos_mp_complex);
1194 a68_idf (A68_EXT, "longlongcomplexexp", m, genie_exp_mp_complex);
1195 a68_idf (A68_EXT, "longlongcomplexln", m, genie_ln_mp_complex);
1196 a68_idf (A68_EXT, "longlongcomplexsinh", m, genie_sinh_mp_complex);
1197 a68_idf (A68_EXT, "longlongcomplexsin", m, genie_sin_mp_complex);
1198 a68_idf (A68_EXT, "longlongcomplexsqrt", m, genie_sqrt_mp_complex);
1199 a68_idf (A68_EXT, "longlongcomplextanh", m, genie_tanh_mp_complex);
1200 a68_idf (A68_EXT, "longlongcomplextan", m, genie_tan_mp_complex);
1201 a68_idf (A68_EXT, "qcacosh", m, genie_acosh_mp_complex);
1202 a68_idf (A68_EXT, "qcacos", m, genie_acos_mp_complex);
1203 a68_idf (A68_EXT, "qcarccosh", m, genie_acosh_mp_complex);
1204 a68_idf (A68_EXT, "qcarccos", m, genie_acos_mp_complex);
1205 a68_idf (A68_EXT, "qcarcsinh", m, genie_asinh_mp_complex);
1206 a68_idf (A68_EXT, "qcarcsin", m, genie_asin_mp_complex);
1207 a68_idf (A68_EXT, "qcarctanh", m, genie_atanh_mp_complex);
1208 a68_idf (A68_EXT, "qcarctan", m, genie_atan_mp_complex);
1209 a68_idf (A68_EXT, "qcasinh", m, genie_asinh_mp_complex);
1210 a68_idf (A68_EXT, "qcasin", m, genie_asin_mp_complex);
1211 a68_idf (A68_EXT, "qcatanh", m, genie_atanh_mp_complex);
1212 a68_idf (A68_EXT, "qcatan", m, genie_atan_mp_complex);
1213 a68_idf (A68_EXT, "qccosh", m, genie_cosh_mp_complex);
1214 a68_idf (A68_EXT, "qccos", m, genie_cos_mp_complex);
1215 a68_idf (A68_EXT, "qcexp", m, genie_exp_mp_complex);
1216 a68_idf (A68_EXT, "qcln", m, genie_ln_mp_complex);
1217 a68_idf (A68_EXT, "qcsinh", m, genie_sinh_mp_complex);
1218 a68_idf (A68_EXT, "qcsin", m, genie_sin_mp_complex);
1219 a68_idf (A68_EXT, "qcsqrt", m, genie_sqrt_mp_complex);
1220 a68_idf (A68_EXT, "qctanh", m, genie_tanh_mp_complex);
1221 a68_idf (A68_EXT, "qctan", m, genie_tan_mp_complex);
1222
1223 // BYTES ops.
1224 m = a68_proc (M_BYTES, M_STRING, NO_MOID);
1225 a68_idf (A68_STD, "bytespack", m, genie_bytespack);
1226 //
1227 m = a68_proc (M_CHAR, M_INT, M_BYTES, NO_MOID);
1228 a68_op (A68_STD, "ELEM", m, genie_elem_bytes);
1229 //
1230 m = a68_proc (M_BYTES, M_BYTES, M_BYTES, NO_MOID);
1231 a68_op (A68_STD, "+", m, genie_add_bytes);
1232 //
1233 m = a68_proc (M_REF_BYTES, M_REF_BYTES, M_BYTES, NO_MOID);
1234 a68_op (A68_STD, "+:=", m, genie_plusab_bytes);
1235 a68_op (A68_STD, "PLUSAB", m, genie_plusab_bytes);
1236 //
1237 m = a68_proc (M_REF_BYTES, M_BYTES, M_REF_BYTES, NO_MOID);
1238 a68_op (A68_STD, "+=:", m, genie_plusto_bytes);
1239 a68_op (A68_STD, "PLUSTO", m, genie_plusto_bytes);
1240 //
1241 m = a68_proc (M_BOOL, M_BYTES, M_BYTES, NO_MOID);
1242 a68_op (A68_STD, "=", m, genie_eq_bytes);
1243 a68_op (A68_STD, "/=", m, genie_ne_bytes);
1244 a68_op (A68_STD, "~=", m, genie_ne_bytes);
1245 a68_op (A68_STD, "^=", m, genie_ne_bytes);
1246 a68_op (A68_STD, "<", m, genie_lt_bytes);
1247 a68_op (A68_STD, "<=", m, genie_le_bytes);
1248 a68_op (A68_STD, ">", m, genie_gt_bytes);
1249 a68_op (A68_STD, ">=", m, genie_ge_bytes);
1250 a68_op (A68_STD, "EQ", m, genie_eq_bytes);
1251 a68_op (A68_STD, "NE", m, genie_ne_bytes);
1252 a68_op (A68_STD, "LT", m, genie_lt_bytes);
1253 a68_op (A68_STD, "LE", m, genie_le_bytes);
1254 a68_op (A68_STD, "GT", m, genie_gt_bytes);
1255 a68_op (A68_STD, "GE", m, genie_ge_bytes);
1256 // LONG BYTES ops.
1257 m = a68_proc (M_LONG_BYTES, M_BYTES, NO_MOID);
1258 a68_op (A68_STD, "LENG", m, genie_leng_bytes);
1259 //
1260 m = a68_proc (M_BYTES, M_LONG_BYTES, NO_MOID);
1261 a68_idf (A68_STD, "SHORTEN", m, genie_shorten_bytes);
1262 //
1263 m = a68_proc (M_LONG_BYTES, M_STRING, NO_MOID);
1264 a68_idf (A68_STD, "longbytespack", m, genie_long_bytespack);
1265 //
1266 m = a68_proc (M_CHAR, M_INT, M_LONG_BYTES, NO_MOID);
1267 a68_op (A68_STD, "ELEM", m, genie_elem_long_bytes);
1268 //
1269 m = a68_proc (M_LONG_BYTES, M_LONG_BYTES, M_LONG_BYTES, NO_MOID);
1270 a68_op (A68_STD, "+", m, genie_add_long_bytes);
1271 //
1272 m = a68_proc (M_REF_LONG_BYTES, M_REF_LONG_BYTES, M_LONG_BYTES, NO_MOID);
1273 a68_op (A68_STD, "+:=", m, genie_plusab_long_bytes);
1274 a68_op (A68_STD, "PLUSAB", m, genie_plusab_long_bytes);
1275 //
1276 m = a68_proc (M_REF_LONG_BYTES, M_LONG_BYTES, M_REF_LONG_BYTES, NO_MOID);
1277 a68_op (A68_STD, "+=:", m, genie_plusto_long_bytes);
1278 a68_op (A68_STD, "PLUSTO", m, genie_plusto_long_bytes);
1279 //
1280 m = a68_proc (M_BOOL, M_LONG_BYTES, M_LONG_BYTES, NO_MOID);
1281 a68_op (A68_STD, "=", m, genie_eq_long_bytes);
1282 a68_op (A68_STD, "/=", m, genie_ne_long_bytes);
1283 a68_op (A68_STD, "~=", m, genie_ne_long_bytes);
1284 a68_op (A68_STD, "^=", m, genie_ne_long_bytes);
1285 a68_op (A68_STD, "<", m, genie_lt_long_bytes);
1286 a68_op (A68_STD, "<=", m, genie_le_long_bytes);
1287 a68_op (A68_STD, ">", m, genie_gt_long_bytes);
1288 a68_op (A68_STD, ">=", m, genie_ge_long_bytes);
1289 a68_op (A68_STD, "EQ", m, genie_eq_long_bytes);
1290 a68_op (A68_STD, "NE", m, genie_ne_long_bytes);
1291 a68_op (A68_STD, "LT", m, genie_lt_long_bytes);
1292 a68_op (A68_STD, "LE", m, genie_le_long_bytes);
1293 a68_op (A68_STD, "GT", m, genie_gt_long_bytes);
1294 a68_op (A68_STD, "GE", m, genie_ge_long_bytes);
1295 // STRING ops.
1296 m = a68_proc (M_BOOL, M_STRING, M_STRING, NO_MOID);
1297 a68_op (A68_STD, "=", m, genie_eq_string);
1298 a68_op (A68_STD, "/=", m, genie_ne_string);
1299 a68_op (A68_STD, "~=", m, genie_ne_string);
1300 a68_op (A68_STD, "^=", m, genie_ne_string);
1301 a68_op (A68_STD, "<", m, genie_lt_string);
1302 a68_op (A68_STD, "<=", m, genie_le_string);
1303 a68_op (A68_STD, ">=", m, genie_ge_string);
1304 a68_op (A68_STD, ">", m, genie_gt_string);
1305 a68_op (A68_STD, "EQ", m, genie_eq_string);
1306 a68_op (A68_STD, "NE", m, genie_ne_string);
1307 a68_op (A68_STD, "LT", m, genie_lt_string);
1308 a68_op (A68_STD, "LE", m, genie_le_string);
1309 a68_op (A68_STD, "GE", m, genie_ge_string);
1310 a68_op (A68_STD, "GT", m, genie_gt_string);
1311 //
1312 m = a68_proc (M_STRING, M_CHAR, M_CHAR, NO_MOID);
1313 a68_op (A68_STD, "+", m, genie_add_char);
1314 //
1315 m = a68_proc (M_STRING, M_STRING, M_STRING, NO_MOID);
1316 a68_op (A68_STD, "+", m, genie_add_string);
1317 //
1318 m = a68_proc (M_REF_STRING, M_REF_STRING, M_STRING, NO_MOID);
1319 a68_op (A68_STD, "+:=", m, genie_plusab_string);
1320 a68_op (A68_STD, "PLUSAB", m, genie_plusab_string);
1321 //
1322 m = a68_proc (M_REF_STRING, M_REF_STRING, M_INT, NO_MOID);
1323 a68_op (A68_STD, "*:=", m, genie_timesab_string);
1324 a68_op (A68_STD, "TIMESAB", m, genie_timesab_string);
1325 //
1326 m = a68_proc (M_REF_STRING, M_STRING, M_REF_STRING, NO_MOID);
1327 a68_op (A68_STD, "+=:", m, genie_plusto_string);
1328 a68_op (A68_STD, "PLUSTO", m, genie_plusto_string);
1329 //
1330 m = a68_proc (M_STRING, M_STRING, M_INT, NO_MOID);
1331 a68_op (A68_STD, "*", m, genie_times_string_int);
1332 //
1333 m = a68_proc (M_STRING, M_INT, M_STRING, NO_MOID);
1334 a68_op (A68_STD, "*", m, genie_times_int_string);
1335 //
1336 m = a68_proc (M_STRING, M_INT, M_CHAR, NO_MOID);
1337 a68_op (A68_STD, "*", m, genie_times_int_char);
1338 //
1339 m = a68_proc (M_STRING, M_CHAR, M_INT, NO_MOID);
1340 a68_op (A68_STD, "*", m, genie_times_char_int);
1341 //
1342 m = a68_proc (M_CHAR, M_INT, M_ROW_CHAR, NO_MOID);
1343 a68_op (A68_STD, "ELEM", m, genie_elem_string);
1344 //
1345 m = a68_proc (M_STRING, M_STRING, NO_MOID);
1346 a68_idf (A68_EXT, "realpath", m, genie_realpath);
1347 // SEMA ops.
1348 #if defined (BUILD_PARALLEL_CLAUSE)
1349 m = a68_proc (M_SEMA, M_INT, NO_MOID);
1350 a68_op (A68_STD, "LEVEL", m, genie_level_sema_int);
1351 //
1352 m = a68_proc (M_INT, M_SEMA, NO_MOID);
1353 a68_op (A68_STD, "LEVEL", m, genie_level_int_sema);
1354 //
1355 m = a68_proc (M_VOID, M_SEMA, NO_MOID);
1356 a68_op (A68_STD, "UP", m, genie_up_sema);
1357 a68_op (A68_STD, "DOWN", m, genie_down_sema);
1358 #else
1359 m = a68_proc (M_SEMA, M_INT, NO_MOID);
1360 a68_op (A68_STD, "LEVEL", m, genie_unimplemented);
1361 //
1362 m = a68_proc (M_INT, M_SEMA, NO_MOID);
1363 a68_op (A68_STD, "LEVEL", m, genie_unimplemented);
1364 //
1365 m = a68_proc (M_VOID, M_SEMA, NO_MOID);
1366 a68_op (A68_STD, "UP", m, genie_unimplemented);
1367 a68_op (A68_STD, "DOWN", m, genie_unimplemented);
1368 #endif
1369 // ROWS ops.
1370 m = a68_proc (M_INT, M_ROWS, NO_MOID);
1371 a68_op (A68_EXT, "ELEMS", m, genie_monad_elems);
1372 a68_op (A68_STD, "LWB", m, genie_monad_lwb);
1373 a68_op (A68_STD, "UPB", m, genie_monad_upb);
1374 //
1375 m = a68_proc (M_INT, M_INT, M_ROWS, NO_MOID);
1376 a68_op (A68_EXT, "ELEMS", m, genie_dyad_elems);
1377 a68_op (A68_STD, "LWB", m, genie_dyad_lwb);
1378 a68_op (A68_STD, "UPB", m, genie_dyad_upb);
1379 //
1380 m = a68_proc (M_ROW_STRING, M_ROW_STRING, NO_MOID);
1381 a68_op (A68_EXT, "SORT", m, genie_sort_row_string);
1382 // Some "terminators" to handle the mapping of very short or very long modes.
1383 // This allows you to write SHORT REAL z = SHORTEN pi while everything is
1384 // silently mapped onto REAL.
1385 m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID);
1386 a68_op (A68_STD, "LENG", m, genie_idle);
1387 //
1388 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
1389 a68_op (A68_STD, "LENG", m, genie_idle);
1390 //
1391 m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID);
1392 a68_op (A68_STD, "LENG", m, genie_idle);
1393 //
1394 m = a68_proc (M_INT, M_INT, NO_MOID);
1395 a68_op (A68_STD, "SHORTEN", m, genie_idle);
1396 //
1397 m = a68_proc (M_REAL, M_REAL, NO_MOID);
1398 a68_op (A68_STD, "SHORTEN", m, genie_idle);
1399 //
1400 m = a68_proc (M_COMPLEX, M_COMPLEX, NO_MOID);
1401 a68_op (A68_STD, "SHORTEN", m, genie_idle);
1402 //
1403 m = a68_proc (M_BITS, M_BITS, NO_MOID);
1404 a68_op (A68_STD, "SHORTEN", m, genie_idle);
1405 // SOUND/RIFF procs.
1406 m = a68_proc (M_SOUND, M_INT, M_INT, M_INT, M_INT, NO_MOID);
1407 a68_idf (A68_EXT, "newsound", m, genie_new_sound);
1408 m = a68_proc (M_INT, M_SOUND, M_INT, M_INT, NO_MOID);
1409 a68_idf (A68_EXT, "getsound", m, genie_get_sound);
1410 m = a68_proc (M_VOID, M_SOUND, M_INT, M_INT, M_INT, NO_MOID);
1411 a68_idf (A68_EXT, "setsound", m, genie_set_sound);
1412 m = a68_proc (M_INT, M_SOUND, NO_MOID);
1413 a68_op (A68_EXT, "RESOLUTION", m, genie_sound_resolution);
1414 a68_op (A68_EXT, "CHANNELS", m, genie_sound_channels);
1415 a68_op (A68_EXT, "RATE", m, genie_sound_rate);
1416 a68_op (A68_EXT, "SAMPLES", m, genie_sound_samples);
1417 }
1418
1419 //! @brief Set up standenv - transput.
1420
1421 void stand_mp_level_2 (void)
1422 {
1423 #if (A68_LEVEL <= 2)
1424 MOID_T *m;
1425 a68_idf (A68_STD, "dpi", M_LONG_REAL, genie_pi_mp);
1426 a68_idf (A68_STD, "longpi", M_LONG_REAL, genie_pi_mp);
1427 a68_idf (A68_STD, "longmaxbits", M_LONG_BITS, genie_long_max_bits);
1428 a68_idf (A68_STD, "longmaxint", M_LONG_INT, genie_long_max_int);
1429 a68_idf (A68_STD, "longsmallreal", M_LONG_REAL, genie_long_small_real);
1430 a68_idf (A68_STD, "longmaxreal", M_LONG_REAL, genie_long_max_real);
1431 a68_idf (A68_STD, "longminreal", M_LONG_REAL, genie_long_min_real);
1432 a68_idf (A68_STD, "longinfinity", M_LONG_REAL, genie_infinity_mp);
1433 a68_idf (A68_STD, "longminusinfinity", M_LONG_REAL, genie_minus_infinity_mp);
1434 a68_idf (A68_STD, "longinf", M_LONG_REAL, genie_infinity_mp);
1435 a68_idf (A68_STD, "longmininf", M_LONG_REAL, genie_minus_infinity_mp);
1436 // LONG INT in software
1437 m = a68_proc (M_LONG_INT, M_LONG_INT, NO_MOID);
1438 a68_op (A68_STD, "+", m, genie_idle);
1439 a68_op (A68_STD, "-", m, genie_minus_mp);
1440 a68_op (A68_STD, "ABS", m, genie_abs_mp);
1441 //
1442 m = a68_proc (M_LONG_INT, M_INT, NO_MOID);
1443 a68_op (A68_STD, "LENG", m, genie_lengthen_int_to_mp);
1444 //
1445 m = a68_proc (M_INT, M_LONG_INT, NO_MOID);
1446 a68_op (A68_STD, "SHORTEN", m, genie_shorten_mp_to_int);
1447 a68_op (A68_STD, "SIGN", m, genie_sign_mp);
1448 //
1449 m = a68_proc (M_LONG_LONG_REAL, M_LONG_REAL, NO_MOID);
1450 a68_op (A68_STD, "LENG", m, genie_lengthen_mp_to_long_mp);
1451 //
1452 m = a68_proc (M_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
1453 a68_op (A68_STD, "SHORTEN", m, genie_shorten_long_mp_to_mp);
1454 //
1455 m = a68_proc (M_LONG_LONG_INT, M_LONG_INT, NO_MOID);
1456 a68_op (A68_STD, "LENG", m, genie_lengthen_mp_to_long_mp);
1457 //
1458 m = a68_proc (M_LONG_INT, M_LONG_LONG_INT, NO_MOID);
1459 a68_op (A68_STD, "SHORTEN", m, genie_shorten_long_mp_to_mp);
1460 //
1461 m = a68_proc (M_BOOL, M_LONG_INT, NO_MOID);
1462 a68_op (A68_STD, "ODD", m, genie_odd_mp);
1463 //
1464 m = a68_proc (M_LONG_INT, M_LONG_REAL, NO_MOID);
1465 a68_op (A68_STD, "ENTIER", m, genie_entier_mp);
1466 a68_op (A68_STD, "ROUND", m, genie_round_mp);
1467 //
1468 m = a68_proc (M_LONG_INT, M_LONG_INT, M_LONG_INT, NO_MOID);
1469 a68_op (A68_STD, "+", m, genie_add_mp_int);
1470 a68_op (A68_STD, "-", m, genie_sub_mp_int);
1471 a68_op (A68_STD, "*", m, genie_mul_mp_int);
1472 a68_op (A68_STD, "OVER", m, genie_over_mp);
1473 a68_op (A68_STD, "%", m, genie_over_mp);
1474 a68_op (A68_STD, "MOD", m, genie_mod_mp);
1475 a68_op (A68_STD, "%*", m, genie_mod_mp);
1476 //
1477 m = a68_proc (M_REF_LONG_INT, M_REF_LONG_INT, M_LONG_INT, NO_MOID);
1478 a68_op (A68_STD, "+:=", m, genie_plusab_mp_int);
1479 a68_op (A68_STD, "-:=", m, genie_minusab_mp_int);
1480 a68_op (A68_STD, "*:=", m, genie_timesab_mp_int);
1481 a68_op (A68_STD, "%:=", m, genie_overab_mp);
1482 a68_op (A68_STD, "%*:=", m, genie_modab_mp);
1483 a68_op (A68_STD, "PLUSAB", m, genie_plusab_mp_int);
1484 a68_op (A68_STD, "MINUSAB", m, genie_minusab_mp_int);
1485 a68_op (A68_STD, "TIMESAB", m, genie_timesab_mp_int);
1486 a68_op (A68_STD, "OVERAB", m, genie_overab_mp);
1487 a68_op (A68_STD, "MODAB", m, genie_modab_mp);
1488 //
1489 m = a68_proc (M_BOOL, M_LONG_INT, M_LONG_INT, NO_MOID);
1490 a68_op (A68_STD, "=", m, genie_eq_mp);
1491 a68_op (A68_STD, "EQ", m, genie_eq_mp);
1492 a68_op (A68_STD, "/=", m, genie_ne_mp);
1493 a68_op (A68_STD, "~=", m, genie_ne_mp);
1494 a68_op (A68_STD, "^=", m, genie_ne_mp);
1495 a68_op (A68_STD, "NE", m, genie_ne_mp);
1496 a68_op (A68_STD, "<", m, genie_lt_mp);
1497 a68_op (A68_STD, "LT", m, genie_lt_mp);
1498 a68_op (A68_STD, "<=", m, genie_le_mp);
1499 a68_op (A68_STD, "LE", m, genie_le_mp);
1500 a68_op (A68_STD, ">", m, genie_gt_mp);
1501 a68_op (A68_STD, "GT", m, genie_gt_mp);
1502 a68_op (A68_STD, ">=", m, genie_ge_mp);
1503 a68_op (A68_STD, "GE", m, genie_ge_mp);
1504 //
1505 m = a68_proc (M_LONG_REAL, M_LONG_INT, M_LONG_INT, NO_MOID);
1506 a68_op (A68_STD, "/", m, genie_div_mp);
1507 //
1508 m = a68_proc (M_LONG_INT, M_LONG_INT, M_INT, NO_MOID);
1509 a68_op (A68_STD, "**", m, genie_pow_mp_int_int);
1510 a68_op (A68_STD, "^", m, genie_pow_mp_int_int);
1511 //
1512 m = a68_proc (M_LONG_COMPLEX, M_LONG_INT, M_LONG_INT, NO_MOID);
1513 a68_op (A68_STD, "I", m, genie_idle);
1514 a68_op (A68_STD, "+*", m, genie_idle);
1515 //
1516 m = a68_proc (M_LONG_REAL, M_REAL, NO_MOID);
1517 a68_op (A68_STD, "LENG", m, genie_lengthen_real_to_mp);
1518 //
1519 m = a68_proc (M_REAL, M_LONG_REAL, NO_MOID);
1520 a68_op (A68_STD, "SHORTEN", m, genie_shorten_mp_to_real);
1521 // LONG REAL in software
1522 m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID);
1523 a68_op (A68_STD, "+", m, genie_idle);
1524 a68_op (A68_STD, "-", m, genie_minus_mp);
1525 a68_op (A68_STD, "ABS", m, genie_abs_mp);
1526 //
1527 m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID);
1528 a68_idf (A68_EXT, "dacosdg", m, genie_acosdg_mp);
1529 a68_idf (A68_EXT, "dacosh", m, genie_acosh_mp);
1530 a68_idf (A68_EXT, "dacos", m, genie_acos_mp);
1531 a68_idf (A68_EXT, "dacotdg", m, genie_acotdg_mp);
1532 a68_idf (A68_EXT, "dacot", m, genie_acot_mp);
1533 a68_idf (A68_EXT, "dacsc", m, genie_acsc_mp);
1534 a68_idf (A68_EXT, "dasec", m, genie_asec_mp);
1535 a68_idf (A68_EXT, "dasindg", m, genie_asindg_mp);
1536 a68_idf (A68_EXT, "dasinh", m, genie_asinh_mp);
1537 a68_idf (A68_EXT, "dasin", m, genie_asin_mp);
1538 a68_idf (A68_EXT, "datandg", m, genie_atandg_mp);
1539 a68_idf (A68_EXT, "datanh", m, genie_atanh_mp);
1540 a68_idf (A68_EXT, "datan", m, genie_atan_mp);
1541 a68_idf (A68_EXT, "dcbrt", m, genie_curt_mp);
1542 a68_idf (A68_EXT, "dcosdg", m, genie_cosdg_mp);
1543 a68_idf (A68_EXT, "dcosh", m, genie_cosh_mp);
1544 a68_idf (A68_EXT, "dcos", m, genie_cos_mp);
1545 a68_idf (A68_EXT, "dcospi", m, genie_cospi_mp);
1546 a68_idf (A68_EXT, "dcotdg", m, genie_cotdg_mp);
1547 a68_idf (A68_EXT, "dcot", m, genie_cot_mp);
1548 a68_idf (A68_EXT, "dcotpi", m, genie_cotpi_mp);
1549 a68_idf (A68_EXT, "dcsc", m, genie_csc_mp);
1550 a68_idf (A68_EXT, "dcurt", m, genie_curt_mp);
1551 a68_idf (A68_EXT, "derf", m, genie_erf_mp);
1552 a68_idf (A68_EXT, "derfc", m, genie_erfc_mp);
1553 a68_idf (A68_EXT, "dinverf", m, genie_inverf_mp);
1554 a68_idf (A68_EXT, "dinverfc", m, genie_inverfc_mp);
1555 a68_idf (A68_EXT, "dgamma", m, genie_gamma_mp);
1556 a68_idf (A68_EXT, "dlngamma", m, genie_lngamma_mp);
1557 a68_idf (A68_EXT, "dexp", m, genie_exp_mp);
1558 a68_idf (A68_EXT, "dln", m, genie_ln_mp);
1559 a68_idf (A68_EXT, "dlog", m, genie_log_mp);
1560 a68_idf (A68_EXT, "dsec", m, genie_sec_mp);
1561 a68_idf (A68_EXT, "dsindg", m, genie_sindg_mp);
1562 a68_idf (A68_EXT, "dsinh", m, genie_sinh_mp);
1563 a68_idf (A68_EXT, "dsin", m, genie_sin_mp);
1564 a68_idf (A68_EXT, "dsinpi", m, genie_sinpi_mp);
1565 a68_idf (A68_EXT, "dsqrt", m, genie_sqrt_mp);
1566 a68_idf (A68_EXT, "dtandg", m, genie_tandg_mp);
1567 a68_idf (A68_EXT, "dtanh", m, genie_tanh_mp);
1568 a68_idf (A68_EXT, "dtan", m, genie_tan_mp);
1569 a68_idf (A68_EXT, "dtanpi", m, genie_tan_mp);
1570 a68_idf (A68_EXT, "longarccosdg", m, genie_acosdg_mp);
1571 a68_idf (A68_EXT, "longarccosh", m, genie_acosh_mp);
1572 a68_idf (A68_EXT, "longarccotdg", m, genie_acosdg_mp);
1573 a68_idf (A68_EXT, "longarccot", m, genie_acot_mp);
1574 a68_idf (A68_EXT, "longarccsc", m, genie_acsc_mp);
1575 a68_idf (A68_EXT, "longarcsec", m, genie_asec_mp);
1576 a68_idf (A68_EXT, "longarcsindg", m, genie_asindg_mp);
1577 a68_idf (A68_EXT, "longarcsinh", m, genie_asinh_mp);
1578 a68_idf (A68_EXT, "longarctandg", m, genie_atandg_mp);
1579 a68_idf (A68_EXT, "longarctanh", m, genie_atanh_mp);
1580 a68_idf (A68_EXT, "longcbrt", m, genie_curt_mp);
1581 a68_idf (A68_EXT, "longcosdg", m, genie_cosdg_mp);
1582 a68_idf (A68_EXT, "longcosh", m, genie_cosh_mp);
1583 a68_idf (A68_EXT, "longcospi", m, genie_cospi_mp);
1584 a68_idf (A68_EXT, "longcotdg", m, genie_cotdg_mp);
1585 a68_idf (A68_EXT, "longcot", m, genie_cot_mp);
1586 a68_idf (A68_EXT, "longcotpi", m, genie_cotpi_mp);
1587 a68_idf (A68_EXT, "longcsc", m, genie_csc_mp);
1588 a68_idf (A68_EXT, "longcurt", m, genie_curt_mp);
1589 a68_idf (A68_EXT, "longerf", m, genie_erf_mp);
1590 a68_idf (A68_EXT, "longerfc", m, genie_erfc_mp);
1591 a68_idf (A68_EXT, "longinverfc", m, genie_inverfc_mp);
1592 a68_idf (A68_EXT, "longinverf", m, genie_inverf_mp);
1593 a68_idf (A68_EXT, "longgamma", m, genie_gamma_mp);
1594 a68_idf (A68_EXT, "longlngamma", m, genie_lngamma_mp);
1595 a68_idf (A68_EXT, "longsec", m, genie_sec_mp);
1596 a68_idf (A68_EXT, "longsindg", m, genie_sindg_mp);
1597 a68_idf (A68_EXT, "longsinh", m, genie_sinh_mp);
1598 a68_idf (A68_EXT, "longsinpi", m, genie_sinpi_mp);
1599 a68_idf (A68_EXT, "longtandg", m, genie_tandg_mp);
1600 a68_idf (A68_EXT, "longtanh", m, genie_tanh_mp);
1601 a68_idf (A68_EXT, "longtanpi", m, genie_tanpi_mp);
1602 // RR.
1603 a68_idf (A68_STD, "longarccos", m, genie_acos_mp);
1604 a68_idf (A68_STD, "longarcsin", m, genie_asin_mp);
1605 a68_idf (A68_STD, "longarctan", m, genie_atan_mp);
1606 a68_idf (A68_STD, "longcos", m, genie_cos_mp);
1607 a68_idf (A68_STD, "longexp", m, genie_exp_mp);
1608 a68_idf (A68_STD, "longln", m, genie_ln_mp);
1609 a68_idf (A68_STD, "longlog", m, genie_log_mp);
1610 a68_idf (A68_STD, "longsin", m, genie_sin_mp);
1611 a68_idf (A68_STD, "longsqrt", m, genie_sqrt_mp);
1612 a68_idf (A68_STD, "longtan", m, genie_tan_mp);
1613 //
1614 m = a68_proc (M_LONG_REAL, NO_MOID);
1615 a68_idf (A68_STD, "longnextrandom", m, genie_long_next_random);
1616 a68_idf (A68_STD, "longrandom", m, genie_long_next_random);
1617 //
1618 m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID);
1619 a68_idf (A68_EXT, "dbeta", m, genie_beta_mp);
1620 a68_idf (A68_EXT, "dgammaincgf", m, genie_gamma_inc_gf_mp);
1621 a68_idf (A68_EXT, "dgammaincf", m, genie_gamma_inc_f_mp);
1622 a68_idf (A68_EXT, "dgammainc", m, genie_gamma_inc_h_mp);
1623 a68_idf (A68_EXT, "dlnbeta", m, genie_lnbeta_mp);
1624 a68_idf (A68_EXT, "longbeta", m, genie_beta_mp);
1625 a68_idf (A68_EXT, "longgammaincgf", m, genie_gamma_inc_gf_mp);
1626 a68_idf (A68_EXT, "longgammaincf", m, genie_gamma_inc_f_mp);
1627 a68_idf (A68_EXT, "longgammainc", m, genie_gamma_inc_h_mp);
1628 a68_idf (A68_EXT, "longlnbeta", m, genie_lnbeta_mp);
1629 a68_idf (A68_STD, "darctan2dg", m, genie_atan2dg_mp);
1630 a68_idf (A68_STD, "darctan2", m, genie_atan2_mp);
1631 a68_idf (A68_STD, "longarctan2dg", m, genie_atan2dg_mp);
1632 a68_idf (A68_STD, "longarctan2", m, genie_atan2_mp);
1633 //
1634 m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID);
1635 a68_idf (A68_STD, "longbetainc", m, genie_beta_inc_mp);
1636 a68_idf (A68_STD, "dbetainc", m, genie_beta_inc_mp);
1637 //
1638 m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID);
1639 a68_idf (A68_EXT, "longgammaincg", m, genie_gamma_inc_g_mp);
1640 a68_idf (A68_EXT, "dgammaincg", m, genie_gamma_inc_g_mp);
1641 //
1642 m = a68_proc (M_INT, M_LONG_REAL, NO_MOID);
1643 a68_op (A68_STD, "SIGN", m, genie_sign_mp);
1644 //
1645 m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID);
1646 a68_op (A68_STD, "+", m, genie_add_mp);
1647 a68_op (A68_STD, "-", m, genie_sub_mp);
1648 a68_op (A68_STD, "*", m, genie_mul_mp);
1649 a68_op (A68_STD, "/", m, genie_div_mp);
1650 a68_op (A68_STD, "**", m, genie_pow_mp);
1651 a68_op (A68_STD, "UP", m, genie_pow_mp);
1652 a68_op (A68_STD, "^", m, genie_pow_mp);
1653 //
1654 m = a68_proc (M_REF_LONG_REAL, M_REF_LONG_REAL, M_LONG_REAL, NO_MOID);
1655 a68_op (A68_STD, "+:=", m, genie_plusab_mp);
1656 a68_op (A68_STD, "-:=", m, genie_minusab_mp);
1657 a68_op (A68_STD, "*:=", m, genie_timesab_mp);
1658 a68_op (A68_STD, "/:=", m, genie_divab_mp);
1659 a68_op (A68_STD, "PLUSAB", m, genie_plusab_mp);
1660 a68_op (A68_STD, "MINUSAB", m, genie_minusab_mp);
1661 a68_op (A68_STD, "TIMESAB", m, genie_timesab_mp);
1662 a68_op (A68_STD, "DIVAB", m, genie_divab_mp);
1663 //
1664 m = a68_proc (M_BOOL, M_LONG_REAL, M_LONG_REAL, NO_MOID);
1665 a68_op (A68_STD, "=", m, genie_eq_mp);
1666 a68_op (A68_STD, "EQ", m, genie_eq_mp);
1667 a68_op (A68_STD, "/=", m, genie_ne_mp);
1668 a68_op (A68_STD, "~=", m, genie_ne_mp);
1669 a68_op (A68_STD, "^=", m, genie_ne_mp);
1670 a68_op (A68_STD, "NE", m, genie_ne_mp);
1671 a68_op (A68_STD, "<", m, genie_lt_mp);
1672 a68_op (A68_STD, "LT", m, genie_lt_mp);
1673 a68_op (A68_STD, "<=", m, genie_le_mp);
1674 a68_op (A68_STD, "LE", m, genie_le_mp);
1675 a68_op (A68_STD, ">", m, genie_gt_mp);
1676 a68_op (A68_STD, "GT", m, genie_gt_mp);
1677 a68_op (A68_STD, ">=", m, genie_ge_mp);
1678 a68_op (A68_STD, "GE", m, genie_ge_mp);
1679 //
1680 m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_INT, NO_MOID);
1681 a68_op (A68_STD, "**", m, genie_pow_mp_int);
1682 a68_op (A68_STD, "UP", m, genie_pow_mp_int);
1683 a68_op (A68_STD, "^", m, genie_pow_mp_int);
1684 //
1685 m = a68_proc (M_LONG_COMPLEX, M_LONG_REAL, M_LONG_REAL, NO_MOID);
1686 a68_op (A68_STD, "I", m, genie_idle);
1687 a68_op (A68_STD, "+*", m, genie_idle);
1688 // LONG COMPLEX in software
1689 m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
1690 a68_op (A68_STD, "LENG", m, genie_lengthen_mp_complex_to_long_mp_complex);
1691 //
1692 m = a68_proc (M_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID);
1693 a68_op (A68_STD, "SHORTEN", m, genie_shorten_long_mp_complex_to_mp_complex);
1694 //
1695 m = a68_proc (M_LONG_COMPLEX, M_COMPLEX, NO_MOID);
1696 a68_op (A68_STD, "LENG", m, genie_lengthen_complex_to_mp_complex);
1697 //
1698 m = a68_proc (M_COMPLEX, M_LONG_COMPLEX, NO_MOID);
1699 a68_op (A68_STD, "SHORTEN", m, genie_shorten_mp_complex_to_complex);
1700 //
1701 m = a68_proc (M_LONG_REAL, M_LONG_COMPLEX, NO_MOID);
1702 a68_op (A68_STD, "RE", m, genie_re_mp_complex);
1703 a68_op (A68_STD, "IM", m, genie_im_mp_complex);
1704 a68_op (A68_STD, "ARG", m, genie_arg_mp_complex);
1705 a68_op (A68_STD, "ABS", m, genie_abs_mp_complex);
1706 //
1707 m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
1708 a68_op (A68_STD, "+", m, genie_idle);
1709 a68_op (A68_STD, "-", m, genie_minus_mp_complex);
1710 a68_op (A68_STD, "CONJ", m, genie_conj_mp_complex);
1711 //
1712 m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
1713 a68_op (A68_STD, "+", m, genie_add_mp_complex);
1714 a68_op (A68_STD, "-", m, genie_sub_mp_complex);
1715 a68_op (A68_STD, "*", m, genie_mul_mp_complex);
1716 a68_op (A68_STD, "/", m, genie_div_mp_complex);
1717 //
1718 m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, M_INT, NO_MOID);
1719 a68_op (A68_STD, "**", m, genie_pow_mp_complex_int);
1720 a68_op (A68_STD, "UP", m, genie_pow_mp_complex_int);
1721 a68_op (A68_STD, "^", m, genie_pow_mp_complex_int);
1722 //
1723 m = a68_proc (M_BOOL, M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
1724 a68_op (A68_STD, "=", m, genie_eq_mp_complex);
1725 a68_op (A68_STD, "EQ", m, genie_eq_mp_complex);
1726 a68_op (A68_STD, "/=", m, genie_ne_mp_complex);
1727 a68_op (A68_STD, "~=", m, genie_ne_mp_complex);
1728 a68_op (A68_STD, "^=", m, genie_ne_mp_complex);
1729 a68_op (A68_STD, "NE", m, genie_ne_mp_complex);
1730 //
1731 m = a68_proc (M_REF_LONG_COMPLEX, M_REF_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
1732 a68_op (A68_STD, "+:=", m, genie_plusab_mp_complex);
1733 a68_op (A68_STD, "-:=", m, genie_minusab_mp_complex);
1734 a68_op (A68_STD, "*:=", m, genie_timesab_mp_complex);
1735 a68_op (A68_STD, "/:=", m, genie_divab_mp_complex);
1736 a68_op (A68_STD, "PLUSAB", m, genie_plusab_mp_complex);
1737 a68_op (A68_STD, "MINUSAB", m, genie_minusab_mp_complex);
1738 a68_op (A68_STD, "TIMESAB", m, genie_timesab_mp_complex);
1739 a68_op (A68_STD, "DIVAB", m, genie_divab_mp_complex);
1740 //
1741 m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
1742 a68_idf (A68_EXT, "dcacos", m, genie_acos_mp_complex);
1743 a68_idf (A68_EXT, "dcasin", m, genie_asin_mp_complex);
1744 a68_idf (A68_EXT, "dcatan", m, genie_atan_mp_complex);
1745 a68_idf (A68_EXT, "dccos", m, genie_cos_mp_complex);
1746 a68_idf (A68_EXT, "dcexp", m, genie_exp_mp_complex);
1747 a68_idf (A68_EXT, "dcln", m, genie_ln_mp_complex);
1748 a68_idf (A68_EXT, "dcsin", m, genie_sin_mp_complex);
1749 a68_idf (A68_EXT, "dcsqrt", m, genie_sqrt_mp_complex);
1750 a68_idf (A68_EXT, "dctan", m, genie_tan_mp_complex);
1751 a68_idf (A68_EXT, "longcomplexarccos", m, genie_acos_mp_complex);
1752 a68_idf (A68_EXT, "longcomplexarcsin", m, genie_asin_mp_complex);
1753 a68_idf (A68_EXT, "longcomplexarctan", m, genie_atan_mp_complex);
1754 a68_idf (A68_EXT, "longcomplexcos", m, genie_cos_mp_complex);
1755 a68_idf (A68_EXT, "longcomplexexp", m, genie_exp_mp_complex);
1756 a68_idf (A68_EXT, "longcomplexln", m, genie_ln_mp_complex);
1757 a68_idf (A68_EXT, "longcomplexsin", m, genie_sin_mp_complex);
1758 a68_idf (A68_EXT, "longcomplexsqrt", m, genie_sqrt_mp_complex);
1759 a68_idf (A68_EXT, "longcomplextan", m, genie_tan_mp_complex);
1760 // LONG BITS in software
1761 m = a68_proc (M_LONG_BITS, M_ROW_BOOL, NO_MOID);
1762 a68_idf (A68_STD, "longbitspack", m, genie_long_bits_pack);
1763 //
1764 m = a68_proc (M_LONG_INT, M_LONG_BITS, NO_MOID);
1765 a68_op (A68_STD, "ABS", m, genie_idle);
1766 //
1767 m = a68_proc (M_LONG_BITS, M_LONG_INT, NO_MOID);
1768 a68_op (A68_STD, "BIN", m, genie_bin_mp);
1769 //
1770 m = a68_proc (M_BITS, M_LONG_BITS, NO_MOID);
1771 a68_op (A68_STD, "SHORTEN", m, genie_shorten_mp_to_bits);
1772 //
1773 m = a68_proc (M_LONG_BITS, M_BITS, NO_MOID);
1774 a68_op (A68_STD, "LENG", m, genie_lengthen_unt_to_mp);
1775 //
1776 m = a68_proc (M_LONG_BITS, M_LONG_BITS, NO_MOID);
1777 a68_op (A68_STD, "NOT", m, genie_not_mp);
1778 a68_op (A68_STD, "~", m, genie_not_mp);
1779 //
1780 m = a68_proc (M_BOOL, M_LONG_BITS, M_LONG_BITS, NO_MOID);
1781 a68_op (A68_STD, "=", m, genie_eq_mp);
1782 a68_op (A68_STD, "EQ", m, genie_eq_mp);
1783 a68_op (A68_STD, "/=", m, genie_ne_mp);
1784 a68_op (A68_STD, "~=", m, genie_ne_mp);
1785 a68_op (A68_STD, "^=", m, genie_ne_mp);
1786 a68_op (A68_STD, "NE", m, genie_ne_mp);
1787 a68_op (A68_STD, "<=", m, genie_le_long_bits);
1788 a68_op (A68_STD, "LE", m, genie_le_long_bits);
1789 a68_op (A68_STD, ">=", m, genie_ge_long_bits);
1790 a68_op (A68_STD, "GE", m, genie_ge_long_bits);
1791 //
1792 m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_LONG_BITS, NO_MOID);
1793 a68_op (A68_STD, "AND", m, genie_and_mp);
1794 a68_op (A68_STD, "&", m, genie_and_mp);
1795 a68_op (A68_STD, "OR", m, genie_or_mp);
1796 a68_op (A68_EXT, "XOR", m, genie_xor_mp);
1797 //
1798 m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_INT, NO_MOID);
1799 a68_op (A68_STD, "SHL", m, genie_shl_mp);
1800 a68_op (A68_STD, "UP", m, genie_shl_mp);
1801 a68_op (A68_STD, "SHR", m, genie_shr_mp);
1802 a68_op (A68_STD, "DOWN", m, genie_shr_mp);
1803 //
1804 m = a68_proc (M_BOOL, M_INT, M_LONG_BITS, NO_MOID);
1805 a68_op (A68_STD, "ELEM", m, genie_elem_long_bits);
1806 //
1807 m = a68_proc (M_LONG_BITS, M_INT, M_LONG_BITS, NO_MOID);
1808 a68_op (A68_STD, "SET", m, genie_set_long_bits);
1809 a68_op (A68_STD, "CLEAR", m, genie_clear_long_bits);
1810 #endif
1811 }
1812
1813 void stand_mp_level_3 (void)
1814 {
1815 #if (A68_LEVEL >= 3)
1816 MOID_T *m;
1817 a68_idf (A68_STD, "dpi", M_LONG_REAL, genie_pi_double);
1818 a68_idf (A68_STD, "longpi", M_LONG_REAL, genie_pi_double);
1819 a68_idf (A68_STD, "longmaxbits", M_LONG_BITS, genie_double_max_bits);
1820 a68_idf (A68_STD, "longmaxint", M_LONG_INT, genie_double_max_int);
1821 a68_idf (A68_STD, "longsmallreal", M_LONG_REAL, genie_double_small_real);
1822 a68_idf (A68_STD, "longmaxreal", M_LONG_REAL, genie_double_max_real);
1823 a68_idf (A68_STD, "longminreal", M_LONG_REAL, genie_double_min_real);
1824 a68_idf (A68_STD, "longinfinity", M_LONG_REAL, genie_infinity_double_real);
1825 a68_idf (A68_STD, "longminusinfinity", M_LONG_REAL, genie_minus_infinity_double_real);
1826 a68_idf (A68_STD, "longinf", M_LONG_REAL, genie_infinity_double_real);
1827 a68_idf (A68_STD, "longmininf", M_LONG_REAL, genie_minus_infinity_double_real);
1828 // LONG INT as 128 bit
1829 m = a68_proc (M_LONG_INT, M_LONG_INT, NO_MOID);
1830 a68_op (A68_STD, "+", m, genie_idle);
1831 a68_op (A68_STD, "-", m, genie_minus_double_int);
1832 a68_op (A68_STD, "ABS", m, genie_abs_double_int);
1833 //
1834 m = a68_proc (M_LONG_INT, M_INT, NO_MOID);
1835 a68_op (A68_STD, "LENG", m, genie_lengthen_int_to_double_int);
1836 //
1837 m = a68_proc (M_LONG_LONG_INT, M_LONG_INT, NO_MOID);
1838 a68_op (A68_STD, "LENG", m, genie_lengthen_double_int_to_mp);
1839 //
1840 m = a68_proc (M_INT, M_LONG_INT, NO_MOID);
1841 a68_op (A68_STD, "SHORTEN", m, genie_shorten_long_int_to_int);
1842 a68_op (A68_STD, "SIGN", m, genie_sign_double_int);
1843 //
1844 m = a68_proc (M_BOOL, M_LONG_INT, NO_MOID);
1845 a68_op (A68_STD, "ODD", m, genie_odd_double_int);
1846 //
1847 m = a68_proc (M_LONG_INT, M_LONG_REAL, NO_MOID);
1848 a68_op (A68_STD, "ENTIER", m, genie_entier_double_real);
1849 a68_op (A68_STD, "ROUND", m, genie_round_double_real);
1850 //
1851 m = a68_proc (M_LONG_INT, M_LONG_INT, M_LONG_INT, NO_MOID);
1852 a68_op (A68_STD, "+", m, genie_add_double_int);
1853 a68_op (A68_STD, "-", m, genie_sub_double_int);
1854 a68_op (A68_STD, "*", m, genie_mul_double_int);
1855 a68_op (A68_STD, "OVER", m, genie_over_double_int);
1856 a68_op (A68_STD, "%", m, genie_over_double_int);
1857 a68_op (A68_STD, "MOD", m, genie_mod_double_int);
1858 a68_op (A68_STD, "%*", m, genie_mod_double_int);
1859 //
1860 m = a68_proc (M_LONG_INT, M_LONG_INT, M_INT, NO_MOID);
1861 a68_op (A68_STD, "**", m, genie_pow_double_int_int);
1862 a68_op (A68_STD, "^", m, genie_pow_double_int_int);
1863 //
1864 m = a68_proc (M_REF_LONG_INT, M_REF_LONG_INT, M_LONG_INT, NO_MOID);
1865 a68_op (A68_STD, "+:=", m, genie_plusab_double_int);
1866 a68_op (A68_STD, "-:=", m, genie_minusab_double_int);
1867 a68_op (A68_STD, "*:=", m, genie_timesab_double_int);
1868 a68_op (A68_STD, "%:=", m, genie_overab_double_int);
1869 a68_op (A68_STD, "%*:=", m, genie_modab_double_int);
1870 a68_op (A68_STD, "PLUSAB", m, genie_plusab_double_int);
1871 a68_op (A68_STD, "MINUSAB", m, genie_minusab_double_int);
1872 a68_op (A68_STD, "TIMESAB", m, genie_timesab_double_int);
1873 a68_op (A68_STD, "OVERAB", m, genie_overab_double_int);
1874 a68_op (A68_STD, "MODAB", m, genie_modab_double_int);
1875 //
1876 m = a68_proc (M_LONG_REAL, M_LONG_INT, M_LONG_INT, NO_MOID);
1877 a68_op (A68_STD, "/", m, genie_div_double_int);
1878 //
1879 m = a68_proc (M_BOOL, M_LONG_INT, M_LONG_INT, NO_MOID);
1880 a68_op (A68_STD, "=", m, genie_eq_double_int);
1881 a68_op (A68_STD, "EQ", m, genie_eq_double_int);
1882 a68_op (A68_STD, "/=", m, genie_ne_double_int);
1883 a68_op (A68_STD, "~=", m, genie_ne_double_int);
1884 a68_op (A68_STD, "^=", m, genie_ne_double_int);
1885 a68_op (A68_STD, "NE", m, genie_ne_double_int);
1886 a68_op (A68_STD, "<", m, genie_lt_double_int);
1887 a68_op (A68_STD, "LT", m, genie_lt_double_int);
1888 a68_op (A68_STD, "<=", m, genie_le_double_int);
1889 a68_op (A68_STD, "LE", m, genie_le_double_int);
1890 a68_op (A68_STD, ">", m, genie_gt_double_int);
1891 a68_op (A68_STD, "GT", m, genie_gt_double_int);
1892 a68_op (A68_STD, ">=", m, genie_ge_double_int);
1893 a68_op (A68_STD, "GE", m, genie_ge_double_int);
1894 // LONG REAL as 128 bit
1895 m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID);
1896 a68_op (A68_STD, "+", m, genie_idle);
1897 a68_op (A68_STD, "-", m, genie_minus_double_real);
1898 a68_op (A68_STD, "ABS", m, genie_abs_double_real);
1899 //
1900 m = a68_proc (M_INT, M_LONG_REAL, NO_MOID);
1901 a68_op (A68_STD, "SIGN", m, genie_sign_double_real);
1902 //
1903 m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID);
1904 a68_op (A68_STD, "+", m, genie_add_double_real);
1905 a68_op (A68_STD, "-", m, genie_sub_double_real);
1906 a68_op (A68_STD, "*", m, genie_mul_double_real);
1907 a68_op (A68_STD, "/", m, genie_over_double_real);
1908 a68_op (A68_STD, "**", m, genie_pow_double_real);
1909 a68_op (A68_STD, "UP", m, genie_pow_double_real);
1910 a68_op (A68_STD, "^", m, genie_pow_double_real);
1911 //
1912 m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_INT, NO_MOID);
1913 a68_op (A68_STD, "**", m, genie_pow_double_real_int);
1914 a68_op (A68_STD, "UP", m, genie_pow_double_real_int);
1915 a68_op (A68_STD, "^", m, genie_pow_double_real_int);
1916 //
1917 m = a68_proc (M_LONG_REAL, M_REAL, NO_MOID);
1918 a68_op (A68_STD, "LENG", m, genie_lengthen_real_to_double_real);
1919 //
1920 m = a68_proc (M_REAL, M_LONG_REAL, NO_MOID);
1921 a68_op (A68_STD, "SHORTEN", m, genie_shorten_double_real_to_real);
1922 //
1923 m = a68_proc (M_LONG_LONG_REAL, M_LONG_REAL, NO_MOID);
1924 a68_op (A68_STD, "LENG", m, genie_lengthen_double_real_to_mp);
1925 //
1926 m = a68_proc (M_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
1927 a68_op (A68_STD, "SHORTEN", m, genie_shorten_mp_to_double_real);
1928 //
1929 m = a68_proc (M_LONG_INT, M_LONG_LONG_INT, NO_MOID);
1930 a68_op (A68_STD, "SHORTEN", m, genie_shorten_mp_to_double_int);
1931 //
1932 m = a68_proc (M_REF_LONG_REAL, M_REF_LONG_REAL, M_LONG_REAL, NO_MOID);
1933 a68_op (A68_STD, "+:=", m, genie_plusab_double_real);
1934 a68_op (A68_STD, "-:=", m, genie_minusab_double_real);
1935 a68_op (A68_STD, "*:=", m, genie_timesab_double_real);
1936 a68_op (A68_STD, "/:=", m, genie_divab_double_real);
1937 a68_op (A68_STD, "PLUSAB", m, genie_plusab_double_real);
1938 a68_op (A68_STD, "MINUSAB", m, genie_minusab_double_real);
1939 a68_op (A68_STD, "TIMESAB", m, genie_timesab_double_real);
1940 a68_op (A68_STD, "DIVAB", m, genie_divab_double_real);
1941 //
1942 m = a68_proc (M_BOOL, M_LONG_REAL, M_LONG_REAL, NO_MOID);
1943 a68_op (A68_STD, "=", m, genie_eq_double_real);
1944 a68_op (A68_STD, "EQ", m, genie_eq_double_real);
1945 a68_op (A68_STD, "/=", m, genie_ne_double_real);
1946 a68_op (A68_STD, "~=", m, genie_ne_double_real);
1947 a68_op (A68_STD, "^=", m, genie_ne_double_real);
1948 a68_op (A68_STD, "NE", m, genie_ne_double_real);
1949 a68_op (A68_STD, "<", m, genie_lt_double_real);
1950 a68_op (A68_STD, "LT", m, genie_lt_double_real);
1951 a68_op (A68_STD, "<=", m, genie_le_double_real);
1952 a68_op (A68_STD, "LE", m, genie_le_double_real);
1953 a68_op (A68_STD, ">", m, genie_gt_double_real);
1954 a68_op (A68_STD, "GT", m, genie_gt_double_real);
1955 a68_op (A68_STD, ">=", m, genie_ge_double_real);
1956 a68_op (A68_STD, "GE", m, genie_ge_double_real);
1957 //
1958 m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID);
1959 a68_idf (A68_EXT, "dacosdg", m, genie_acosdg_double_real);
1960 a68_idf (A68_EXT, "dacosh", m, genie_acosh_double_real);
1961 a68_idf (A68_EXT, "dacos", m, genie_acos_double_real);
1962 a68_idf (A68_EXT, "dacotdg", m, genie_acotdg_double_real);
1963 a68_idf (A68_EXT, "dacot", m, genie_acot_double_real);
1964 a68_idf (A68_EXT, "dacsc", m, genie_acsc_double_real);
1965 a68_idf (A68_EXT, "dasec", m, genie_asec_double_real);
1966 a68_idf (A68_EXT, "dasindg", m, genie_asindg_double_real);
1967 a68_idf (A68_EXT, "dasinh", m, genie_asinh_double_real);
1968 a68_idf (A68_EXT, "dasin", m, genie_asin_double_real);
1969 a68_idf (A68_EXT, "datandg", m, genie_atandg_double_real);
1970 a68_idf (A68_EXT, "datanh", m, genie_atanh_double_real);
1971 a68_idf (A68_EXT, "datan", m, genie_atan_double_real);
1972 a68_idf (A68_EXT, "dcbrt", m, genie_curt_double_real);
1973 a68_idf (A68_EXT, "dcosdg", m, genie_cosdg_double_real);
1974 a68_idf (A68_EXT, "dcosh", m, genie_cosh_double_real);
1975 a68_idf (A68_EXT, "dcos", m, genie_cos_double_real);
1976 a68_idf (A68_EXT, "dcospi", m, genie_cospi_double_real);
1977 a68_idf (A68_EXT, "dcotdg", m, genie_cotdg_double_real);
1978 a68_idf (A68_EXT, "dcot", m, genie_cot_double_real);
1979 a68_idf (A68_EXT, "dcotpi", m, genie_cotpi_double_real);
1980 a68_idf (A68_EXT, "dcsc", m, genie_csc_double_real);
1981 a68_idf (A68_EXT, "dcurt", m, genie_curt_double_real);
1982 a68_idf (A68_EXT, "derfc", m, genie_erfc_double_real);
1983 a68_idf (A68_EXT, "derf", m, genie_erf_double_real);
1984 a68_idf (A68_EXT, "dexp", m, genie_exp_double_real);
1985 a68_idf (A68_EXT, "dinverfc", m, genie_inverfc_double_real);
1986 a68_idf (A68_EXT, "dinverf", m, genie_inverf_double_real);
1987 a68_idf (A68_EXT, "dgamma", m, genie_gamma_double_real);
1988 a68_idf (A68_EXT, "dlngamma", m, genie_lngamma_double_real);
1989 a68_idf (A68_EXT, "dln", m, genie_ln_double_real);
1990 a68_idf (A68_EXT, "dlog", m, genie_log_double_real);
1991 a68_idf (A68_EXT, "dsec", m, genie_sec_double_real);
1992 a68_idf (A68_EXT, "dsindg", m, genie_sindg_double_real);
1993 a68_idf (A68_EXT, "dsinh", m, genie_sinh_double_real);
1994 a68_idf (A68_EXT, "dsin", m, genie_sin_double_real);
1995 a68_idf (A68_EXT, "dsinpi", m, genie_sinpi_double_real);
1996 a68_idf (A68_EXT, "dsqrt", m, genie_sqrt_double_real);
1997 a68_idf (A68_EXT, "dtandg", m, genie_tandg_double_real);
1998 a68_idf (A68_EXT, "dtanh", m, genie_tanh_double_real);
1999 a68_idf (A68_EXT, "dtan", m, genie_tan_double_real);
2000 a68_idf (A68_EXT, "dtanpi", m, genie_tanpi_double_real);
2001 a68_idf (A68_EXT, "longarccosdg", m, genie_acosdg_double_real);
2002 a68_idf (A68_EXT, "longarccosh", m, genie_acosh_double_real);
2003 a68_idf (A68_EXT, "longarccotdg", m, genie_acotdg_double_real);
2004 a68_idf (A68_EXT, "longarccot", m, genie_acot_double_real);
2005 a68_idf (A68_EXT, "longarccsc", m, genie_acsc_double_real);
2006 a68_idf (A68_EXT, "longarcsec", m, genie_asec_double_real);
2007 a68_idf (A68_EXT, "longarcsindg", m, genie_asindg_double_real);
2008 a68_idf (A68_EXT, "longarcsinh", m, genie_asinh_double_real);
2009 a68_idf (A68_EXT, "longarctandg", m, genie_atandg_double_real);
2010 a68_idf (A68_EXT, "longarctanh", m, genie_atanh_double_real);
2011 a68_idf (A68_EXT, "longcbrt", m, genie_curt_double_real);
2012 a68_idf (A68_EXT, "longcosdg", m, genie_cosdg_double_real);
2013 a68_idf (A68_EXT, "longcosh", m, genie_cosh_double_real);
2014 a68_idf (A68_EXT, "longcospi", m, genie_cospi_double_real);
2015 a68_idf (A68_EXT, "longcotdg", m, genie_cotdg_double_real);
2016 a68_idf (A68_EXT, "longcot", m, genie_cot_double_real);
2017 a68_idf (A68_EXT, "longcotpi", m, genie_cotpi_double_real);
2018 a68_idf (A68_EXT, "longcsc", m, genie_csc_double_real);
2019 a68_idf (A68_EXT, "longcurt", m, genie_curt_double_real);
2020 a68_idf (A68_EXT, "longerfc", m, genie_erfc_double_real);
2021 a68_idf (A68_EXT, "longerf", m, genie_erf_double_real);
2022 a68_idf (A68_EXT, "longinverfc", m, genie_inverfc_double_real);
2023 a68_idf (A68_EXT, "longinverf", m, genie_inverf_double_real);
2024 a68_idf (A68_EXT, "longgamma", m, genie_gamma_double_real);
2025 a68_idf (A68_EXT, "longlngamma", m, genie_lngamma_double_real);
2026 a68_idf (A68_EXT, "longsec", m, genie_sec_double_real);
2027 a68_idf (A68_EXT, "longsindg", m, genie_sindg_double_real);
2028 a68_idf (A68_EXT, "longsinh", m, genie_sinh_double_real);
2029 a68_idf (A68_EXT, "longsinpi", m, genie_sinpi_double_real);
2030 a68_idf (A68_EXT, "longtandg", m, genie_tandg_double_real);
2031 a68_idf (A68_EXT, "longtanh", m, genie_tanh_double_real);
2032 a68_idf (A68_EXT, "longtanpi", m, genie_tanpi_double_real);
2033 a68_idf (A68_STD, "longarccos", m, genie_acos_double_real);
2034 a68_idf (A68_STD, "longarcsin", m, genie_asin_double_real);
2035 a68_idf (A68_STD, "longarctan", m, genie_atan_double_real);
2036 a68_idf (A68_STD, "longcos", m, genie_cos_double_real);
2037 a68_idf (A68_STD, "longexp", m, genie_exp_double_real);
2038 a68_idf (A68_STD, "longln", m, genie_ln_double_real);
2039 a68_idf (A68_STD, "longlog", m, genie_log_double_real);
2040 a68_idf (A68_STD, "longsin", m, genie_sin_double_real);
2041 a68_idf (A68_STD, "longsqrt", m, genie_sqrt_double_real);
2042 a68_idf (A68_STD, "longtan", m, genie_tan_double_real);
2043 //
2044 m = a68_proc (M_LONG_REAL, NO_MOID);
2045 a68_idf (A68_STD, "longnextrandom", m, genie_next_random_double_real);
2046 a68_idf (A68_STD, "longrandom", m, genie_next_random_double_real);
2047 //
2048 m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID);
2049 a68_idf (A68_EXT, "darctan2dg", m, genie_atan2dg_double_real);
2050 a68_idf (A68_EXT, "darctan2", m, genie_atan2_double_real);
2051 a68_idf (A68_EXT, "dbeta", m, genie_beta_double_real);
2052 a68_idf (A68_EXT, "dgammaincgf", m, genie_gamma_inc_gf_double_real);
2053 a68_idf (A68_EXT, "dgammaincf", m, genie_gamma_inc_f_double_real);
2054 a68_idf (A68_EXT, "dgammainc", m, genie_gamma_inc_h_double_real);
2055 a68_idf (A68_EXT, "dlnbeta", m, genie_ln_beta_double_real);
2056 a68_idf (A68_EXT, "longarctan2dg", m, genie_atan2dg_double_real);
2057 a68_idf (A68_EXT, "longarctan2", m, genie_atan2_double_real);
2058 a68_idf (A68_EXT, "longbeta", m, genie_beta_double_real);
2059 a68_idf (A68_EXT, "longgammaincgf", m, genie_gamma_inc_gf_double_real);
2060 a68_idf (A68_EXT, "longgammaincf", m, genie_gamma_inc_f_double_real);
2061 a68_idf (A68_EXT, "longgammainc", m, genie_gamma_inc_h_double_real);
2062 a68_idf (A68_EXT, "longlnbeta", m, genie_ln_beta_double_real);
2063 //
2064 m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID);
2065 a68_idf (A68_EXT, "longbetainc", m, genie_beta_inc_cf_double_real);
2066 a68_idf (A68_EXT, "dbetainc", m, genie_beta_inc_cf_double_real);
2067 //
2068 m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID);
2069 a68_idf (A68_EXT, "longgammaincg", m, genie_gamma_inc_g_double_real);
2070 a68_idf (A68_EXT, "dgammaincg", m, genie_gamma_inc_g_double_real);
2071 // LONG BITS as 128 bit
2072 m = a68_proc (M_LONG_BITS, M_ROW_BOOL, NO_MOID);
2073 a68_idf (A68_STD, "longbitspack", m, genie_double_bits_pack);
2074 //
2075 m = a68_proc (M_BITS, M_LONG_BITS, NO_MOID);
2076 a68_op (A68_STD, "SHORTEN", m, genie_shorten_double_bits_to_bits);
2077 //
2078 m = a68_proc (M_LONG_BITS, M_BITS, NO_MOID);
2079 a68_op (A68_STD, "LENG", m, genie_lengthen_bits_to_double_bits);
2080 //
2081 m = a68_proc (M_LONG_INT, M_LONG_BITS, NO_MOID);
2082 a68_op (A68_STD, "ABS", m, genie_idle);
2083 //
2084 m = a68_proc (M_LONG_BITS, M_LONG_INT, NO_MOID);
2085 a68_op (A68_STD, "BIN", m, genie_bin_double_int);
2086 //
2087 m = a68_proc (M_LONG_BITS, M_LONG_BITS, NO_MOID);
2088 a68_op (A68_STD, "NOT", m, genie_not_double_bits);
2089 a68_op (A68_STD, "~", m, genie_not_double_bits);
2090 //
2091 m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_LONG_BITS, NO_MOID);
2092 a68_op (A68_STD, "AND", m, genie_and_double_bits);
2093 a68_op (A68_STD, "&", m, genie_and_double_bits);
2094 a68_op (A68_STD, "OR", m, genie_or_double_bits);
2095 a68_op (A68_EXT, "XOR", m, genie_xor_double_bits);
2096 a68_op (A68_EXT, "+", m, genie_add_double_bits);
2097 a68_op (A68_EXT, "-", m, genie_sub_double_bits);
2098 a68_op (A68_EXT, "*", m, genie_times_double_bits);
2099 a68_op (A68_EXT, "OVER", m, genie_over_double_bits);
2100 a68_op (A68_EXT, "MOD", m, genie_over_double_bits);
2101 //
2102 m = a68_proc (M_BOOL, M_LONG_BITS, M_LONG_BITS, NO_MOID);
2103 a68_op (A68_STD, "=", m, genie_eq_double_bits);
2104 a68_op (A68_STD, "/=", m, genie_ne_double_bits);
2105 a68_op (A68_STD, "~=", m, genie_ne_double_bits);
2106 a68_op (A68_STD, "^=", m, genie_ne_double_bits);
2107 a68_op (A68_STD, "<=", m, genie_le_double_bits);
2108 a68_op (A68_STD, ">=", m, genie_ge_double_bits);
2109 a68_op (A68_STD, "EQ", m, genie_eq_double_bits);
2110 a68_op (A68_STD, "NE", m, genie_ne_double_bits);
2111 a68_op (A68_STD, "LE", m, genie_le_double_bits);
2112 a68_op (A68_STD, "GE", m, genie_ge_double_bits);
2113 a68_op (A68_EXT, "<", m, genie_lt_double_bits);
2114 a68_op (A68_EXT, ">", m, genie_gt_double_bits);
2115 a68_op (A68_EXT, "LT", m, genie_lt_double_bits);
2116 a68_op (A68_EXT, "GT", m, genie_gt_double_bits);
2117 //
2118 m = a68_proc (M_BOOL, M_INT, M_LONG_BITS, NO_MOID);
2119 a68_op (A68_STD, "ELEM", m, genie_elem_double_bits);
2120 //
2121 m = a68_proc (M_LONG_BITS, M_INT, M_LONG_BITS, NO_MOID);
2122 a68_op (A68_STD, "SET", m, genie_set_double_bits);
2123 a68_op (A68_STD, "CLEAR", m, genie_clear_double_bits);
2124 //
2125 m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_INT, NO_MOID);
2126 a68_op (A68_STD, "SHL", m, genie_shl_double_bits);
2127 a68_op (A68_STD, "UP", m, genie_shl_double_bits);
2128 a68_op (A68_STD, "SHR", m, genie_shr_double_bits);
2129 a68_op (A68_STD, "DOWN", m, genie_shr_double_bits);
2130 a68_op (A68_EXT, "ROL", m, genie_rol_double_bits);
2131 a68_op (A68_EXT, "ROR", m, genie_ror_double_bits);
2132 // LONG COMPLEX as 2 x 128 bit.
2133 m = a68_proc (M_LONG_COMPLEX, M_COMPLEX, NO_MOID);
2134 a68_op (A68_STD, "LENG", m, genie_lengthen_complex_to_double_compl);
2135 //
2136 m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
2137 a68_op (A68_STD, "LENG", m, genie_lengthen_double_compl_to_long_mp_complex);
2138 //
2139 m = a68_proc (M_COMPLEX, M_LONG_COMPLEX, NO_MOID);
2140 a68_op (A68_STD, "SHORTEN", m, genie_shorten_double_compl_to_complex);
2141 //
2142 m = a68_proc (M_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID);
2143 a68_op (A68_STD, "SHORTEN", m, genie_shorten_long_mp_complex_to_double_compl);
2144 //
2145 m = a68_proc (M_LONG_COMPLEX, M_LONG_REAL, M_LONG_REAL, NO_MOID);
2146 a68_op (A68_STD, "I", m, genie_i_double_compl);
2147 a68_op (A68_STD, "+*", m, genie_i_double_compl);
2148 //
2149 m = a68_proc (M_LONG_COMPLEX, M_LONG_INT, M_LONG_INT, NO_MOID);
2150 a68_op (A68_STD, "I", m, genie_i_int_double_compl);
2151 a68_op (A68_STD, "+*", m, genie_i_int_double_compl);
2152 //
2153 m = a68_proc (M_LONG_REAL, M_LONG_COMPLEX, NO_MOID);
2154 a68_op (A68_STD, "RE", m, genie_re_double_compl);
2155 a68_op (A68_STD, "IM", m, genie_im_double_compl);
2156 a68_op (A68_STD, "ABS", m, genie_abs_double_compl);
2157 a68_op (A68_STD, "ARG", m, genie_arg_double_compl);
2158 //
2159 m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
2160 a68_op (A68_STD, "+", m, genie_idle);
2161 a68_op (A68_STD, "-", m, genie_minus_double_compl);
2162 a68_op (A68_STD, "CONJ", m, genie_conj_double_compl);
2163 //
2164 m = a68_proc (M_BOOL, M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
2165 a68_op (A68_STD, "=", m, genie_eq_double_compl);
2166 a68_op (A68_STD, "/=", m, genie_ne_double_compl);
2167 a68_op (A68_STD, "~=", m, genie_ne_double_compl);
2168 a68_op (A68_STD, "^=", m, genie_ne_double_compl);
2169 a68_op (A68_STD, "EQ", m, genie_eq_double_compl);
2170 a68_op (A68_STD, "NE", m, genie_ne_double_compl);
2171 //
2172 m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
2173 a68_op (A68_STD, "+", m, genie_add_double_compl);
2174 a68_op (A68_STD, "-", m, genie_sub_double_compl);
2175 a68_op (A68_STD, "*", m, genie_mul_double_compl);
2176 a68_op (A68_STD, "/", m, genie_div_double_compl);
2177 //
2178 m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, M_INT, NO_MOID);
2179 a68_op (A68_STD, "**", m, genie_pow_double_compl_int);
2180 a68_op (A68_STD, "UP", m, genie_pow_double_compl_int);
2181 a68_op (A68_STD, "^", m, genie_pow_double_compl_int);
2182 //
2183 m = a68_proc (M_REF_LONG_COMPLEX, M_REF_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
2184 a68_op (A68_STD, "+:=", m, genie_plusab_double_compl);
2185 a68_op (A68_STD, "-:=", m, genie_minusab_double_compl);
2186 a68_op (A68_STD, "*:=", m, genie_timesab_double_compl);
2187 a68_op (A68_STD, "/:=", m, genie_divab_double_compl);
2188 a68_op (A68_STD, "PLUSAB", m, genie_plusab_double_compl);
2189 a68_op (A68_STD, "MINUSAB", m, genie_minusab_double_compl);
2190 a68_op (A68_STD, "TIMESAB", m, genie_timesab_double_compl);
2191 a68_op (A68_STD, "DIVAB", m, genie_divab_double_compl);
2192 //
2193 m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID);
2194 a68_idf (A68_EXT, "dcacosh", m, genie_acosh_double_compl);
2195 a68_idf (A68_EXT, "dcacos", m, genie_acos_double_compl);
2196 a68_idf (A68_EXT, "dcarccosh", m, genie_acosh_double_compl);
2197 a68_idf (A68_EXT, "dcarccos", m, genie_acos_double_compl);
2198 a68_idf (A68_EXT, "dcarcsinh", m, genie_asinh_double_compl);
2199 a68_idf (A68_EXT, "dcarcsin", m, genie_asin_double_compl);
2200 a68_idf (A68_EXT, "dcarctanh", m, genie_atanh_double_compl);
2201 a68_idf (A68_EXT, "dcarctan", m, genie_atan_double_compl);
2202 a68_idf (A68_EXT, "dcasinh", m, genie_asinh_double_compl);
2203 a68_idf (A68_EXT, "dcasin", m, genie_asin_double_compl);
2204 a68_idf (A68_EXT, "dcatanh", m, genie_atanh_double_compl);
2205 a68_idf (A68_EXT, "dcatan", m, genie_atan_double_compl);
2206 a68_idf (A68_EXT, "dccosh", m, genie_cosh_double_compl);
2207 a68_idf (A68_EXT, "dccos", m, genie_cos_double_compl);
2208 a68_idf (A68_EXT, "dcexp", m, genie_exp_double_compl);
2209 a68_idf (A68_EXT, "dcln", m, genie_ln_double_compl);
2210 a68_idf (A68_EXT, "dcomplexacosh", m, genie_acosh_double_compl);
2211 a68_idf (A68_EXT, "dcomplexacos", m, genie_acos_double_compl);
2212 a68_idf (A68_EXT, "dcomplexarccosh", m, genie_acosh_double_compl);
2213 a68_idf (A68_EXT, "dcomplexarccos", m, genie_acos_double_compl);
2214 a68_idf (A68_EXT, "dcomplexarcsinh", m, genie_asinh_double_compl);
2215 a68_idf (A68_EXT, "dcomplexarcsin", m, genie_asin_double_compl);
2216 a68_idf (A68_EXT, "dcomplexarctanh", m, genie_atanh_double_compl);
2217 a68_idf (A68_EXT, "dcomplexarctan", m, genie_atan_double_compl);
2218 a68_idf (A68_EXT, "dcomplexasinh", m, genie_asinh_double_compl);
2219 a68_idf (A68_EXT, "dcomplexasin", m, genie_asin_double_compl);
2220 a68_idf (A68_EXT, "dcomplexatanh", m, genie_atanh_double_compl);
2221 a68_idf (A68_EXT, "dcomplexatan", m, genie_atan_double_compl);
2222 a68_idf (A68_EXT, "dcomplexcosh", m, genie_cosh_double_compl);
2223 a68_idf (A68_EXT, "dcomplexcos", m, genie_cos_double_compl);
2224 a68_idf (A68_EXT, "dcomplexexp", m, genie_exp_double_compl);
2225 a68_idf (A68_EXT, "dcomplexln", m, genie_ln_double_compl);
2226 a68_idf (A68_EXT, "dcomplexsin", m, genie_sin_double_compl);
2227 a68_idf (A68_EXT, "dcomplexsqrt", m, genie_sqrt_double_compl);
2228 a68_idf (A68_EXT, "dcomplextanh", m, genie_tanh_double_compl);
2229 a68_idf (A68_EXT, "dcomplextan", m, genie_tan_double_compl);
2230 a68_idf (A68_EXT, "dcsinh", m, genie_sinh_double_compl);
2231 a68_idf (A68_EXT, "dcsin", m, genie_sin_double_compl);
2232 a68_idf (A68_EXT, "dcsqrt", m, genie_sqrt_double_compl);
2233 a68_idf (A68_EXT, "dctanh", m, genie_tanh_double_compl);
2234 a68_idf (A68_EXT, "dctan", m, genie_tan_double_compl);
2235 a68_idf (A68_EXT, "longcacosh", m, genie_acosh_double_compl);
2236 a68_idf (A68_EXT, "longcacos", m, genie_acos_double_compl);
2237 a68_idf (A68_EXT, "longcarccosh", m, genie_acosh_double_compl);
2238 a68_idf (A68_EXT, "longcarccos", m, genie_acos_double_compl);
2239 a68_idf (A68_EXT, "longcarcsinh", m, genie_asinh_double_compl);
2240 a68_idf (A68_EXT, "longcarcsin", m, genie_asin_double_compl);
2241 a68_idf (A68_EXT, "longcarctanh", m, genie_atanh_double_compl);
2242 a68_idf (A68_EXT, "longcarctan", m, genie_atan_double_compl);
2243 a68_idf (A68_EXT, "longcasinh", m, genie_asinh_double_compl);
2244 a68_idf (A68_EXT, "longcasin", m, genie_asin_double_compl);
2245 a68_idf (A68_EXT, "longcatanh", m, genie_atanh_double_compl);
2246 a68_idf (A68_EXT, "longcatan", m, genie_atan_double_compl);
2247 a68_idf (A68_EXT, "longccosh", m, genie_cosh_double_compl);
2248 a68_idf (A68_EXT, "longccos", m, genie_cos_double_compl);
2249 a68_idf (A68_EXT, "longcexp", m, genie_exp_double_compl);
2250 a68_idf (A68_EXT, "longcln", m, genie_ln_double_compl);
2251 a68_idf (A68_EXT, "longcomplexacosh", m, genie_acosh_double_compl);
2252 a68_idf (A68_EXT, "longcomplexacos", m, genie_acos_double_compl);
2253 a68_idf (A68_EXT, "longcomplexarccosh", m, genie_acosh_double_compl);
2254 a68_idf (A68_EXT, "longcomplexarccos", m, genie_acos_double_compl);
2255 a68_idf (A68_EXT, "longcomplexarcsinh", m, genie_asinh_double_compl);
2256 a68_idf (A68_EXT, "longcomplexarcsin", m, genie_asin_double_compl);
2257 a68_idf (A68_EXT, "longcomplexarctanh", m, genie_atanh_double_compl);
2258 a68_idf (A68_EXT, "longcomplexarctan", m, genie_atan_double_compl);
2259 a68_idf (A68_EXT, "longcomplexasinh", m, genie_asinh_double_compl);
2260 a68_idf (A68_EXT, "longcomplexasin", m, genie_asin_double_compl);
2261 a68_idf (A68_EXT, "longcomplexatanh", m, genie_atanh_double_compl);
2262 a68_idf (A68_EXT, "longcomplexatan", m, genie_atan_double_compl);
2263 a68_idf (A68_EXT, "longcomplexcosh", m, genie_cosh_double_compl);
2264 a68_idf (A68_EXT, "longcomplexcos", m, genie_cos_double_compl);
2265 a68_idf (A68_EXT, "longcomplexexp", m, genie_exp_double_compl);
2266 a68_idf (A68_EXT, "longcomplexln", m, genie_ln_double_compl);
2267 a68_idf (A68_EXT, "longcomplexsinh", m, genie_sinh_double_compl);
2268 a68_idf (A68_EXT, "longcomplexsin", m, genie_sin_double_compl);
2269 a68_idf (A68_EXT, "longcomplexsqrt", m, genie_sqrt_double_compl);
2270 a68_idf (A68_EXT, "longcomplextanh", m, genie_tanh_double_compl);
2271 a68_idf (A68_EXT, "longcomplextan", m, genie_tan_double_compl);
2272 a68_idf (A68_EXT, "longcsinh", m, genie_sinh_double_compl);
2273 a68_idf (A68_EXT, "longcsin", m, genie_sin_double_compl);
2274 a68_idf (A68_EXT, "longcsqrt", m, genie_sqrt_double_compl);
2275 a68_idf (A68_EXT, "longctanh", m, genie_tanh_double_compl);
2276 a68_idf (A68_EXT, "longctan", m, genie_tan_double_compl);
2277
2278 #if defined (HAVE_GNU_MPFR)
2279 m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID);
2280 a68_idf (A68_EXT, "mpfrlonggammainc", m, genie_gamma_inc_double_real_mpfr);
2281 a68_idf (A68_EXT, "mpfrdgammainc", m, genie_gamma_inc_double_real_mpfr);
2282 //
2283 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
2284 a68_idf (A68_STD, "mpfrlonglongbeta", m, genie_beta_mpfr);
2285 a68_idf (A68_STD, "mpfrqbeta", m, genie_beta_mpfr);
2286 a68_idf (A68_STD, "mpfrlonglonglnbeta", m, genie_ln_beta_mpfr);
2287 a68_idf (A68_STD, "mpfrqlnbeta", m, genie_ln_beta_mpfr);
2288 a68_idf (A68_STD, "mpfrlonglonggammainc", m, genie_gamma_inc_mpfr);
2289 a68_idf (A68_STD, "mpfrqgammainc", m, genie_gamma_inc_mpfr);
2290 //
2291 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
2292 a68_idf (A68_STD, "mpfrlonglongbetainc", m, genie_beta_inc_mpfr);
2293 a68_idf (A68_STD, "mpfrqbetainc", m, genie_beta_inc_mpfr);
2294 //
2295 m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID);
2296 a68_idf (A68_EXT, "mpfrlonglonggamma", m, genie_gamma_mpfr);
2297 a68_idf (A68_EXT, "mpfrlonglonglngamma", m, genie_lngamma_mpfr);
2298 a68_idf (A68_EXT, "mpfrlonglongerfc", m, genie_mpfr_erfc_mp);
2299 a68_idf (A68_EXT, "mpfrlonglongerf", m, genie_mpfr_erf_mp);
2300 a68_idf (A68_EXT, "mpfrlonglonginverfc", m, genie_mpfr_inverfc_mp);
2301 a68_idf (A68_EXT, "mpfrlonglonginverf", m, genie_mpfr_inverf_mp);
2302 a68_idf (A68_EXT, "mpfrmp", m, genie_mpfr_mp);
2303 a68_idf (A68_EXT, "mpfrqgamma", m, genie_gamma_mpfr);
2304 a68_idf (A68_EXT, "mpfrqlngamma", m, genie_lngamma_mpfr);
2305 a68_idf (A68_EXT, "mpfrqerfc", m, genie_mpfr_erfc_mp);
2306 a68_idf (A68_EXT, "mpfrqerf", m, genie_mpfr_erf_mp);
2307 a68_idf (A68_EXT, "mpfrqinverfc", m, genie_mpfr_inverfc_mp);
2308 a68_idf (A68_EXT, "mpfrqinverf", m, genie_mpfr_inverf_mp);
2309 a68_idf (A68_EXT, "mpfrq", m, genie_mpfr_mp);
2310 #endif
2311 #endif
2312 }
2313
2314 void stand_transput (void)
2315 {
2316 MOID_T *m;
2317 a68_idf (A68_EXT, "blankcharacter", M_CHAR, genie_blank_char);
2318 a68_idf (A68_EXT, "formfeedcharacter", M_CHAR, genie_formfeed_char);
2319 a68_idf (A68_EXT, "formfeedchar", M_CHAR, genie_formfeed_char);
2320 a68_idf (A68_EXT, "newlinecharacter", M_CHAR, genie_newline_char);
2321 a68_idf (A68_EXT, "newlinechar", M_CHAR, genie_newline_char);
2322 a68_idf (A68_EXT, "nullcharacter", M_CHAR, genie_null_char);
2323 a68_idf (A68_EXT, "tabcharacter", M_CHAR, genie_tab_char);
2324 a68_idf (A68_EXT, "tabchar", M_CHAR, genie_tab_char);
2325 a68_idf (A68_STD, "blankchar", M_CHAR, genie_blank_char);
2326 a68_idf (A68_STD, "blank", M_CHAR, genie_blank_char);
2327 a68_idf (A68_STD, "errorchar", M_CHAR, genie_error_char);
2328 a68_idf (A68_STD, "expchar", M_CHAR, genie_exp_char);
2329 a68_idf (A68_STD, "flip", M_CHAR, genie_flip_char);
2330 a68_idf (A68_STD, "flop", M_CHAR, genie_flop_char);
2331 a68_idf (A68_STD, "nullchar", M_CHAR, genie_null_char);
2332 //
2333 m = a68_proc (M_STRING, M_HEX_NUMBER, M_INT, M_INT, NO_MOID);
2334 a68_idf (A68_STD, "bits", m, genie_bits);
2335 //
2336 m = a68_proc (M_STRING, M_NUMBER, M_INT, NO_MOID);
2337 a68_idf (A68_STD, "whole", m, genie_whole);
2338 //
2339 m = a68_proc (M_STRING, M_NUMBER, M_INT, M_INT, NO_MOID);
2340 a68_idf (A68_STD, "fixed", m, genie_fixed);
2341 //
2342 m = a68_proc (M_STRING, M_NUMBER, M_INT, M_INT, M_INT, NO_MOID);
2343 a68_idf (A68_STD, "float", m, genie_float);
2344 //
2345 m = a68_proc (M_STRING, M_NUMBER, M_INT, M_INT, M_INT, M_INT, NO_MOID);
2346 a68_idf (A68_STD, "real", m, genie_real);
2347 a68_idf (A68_STD, "standin", M_REF_FILE, genie_stand_in);
2348 a68_idf (A68_STD, "standout", M_REF_FILE, genie_stand_out);
2349 a68_idf (A68_STD, "standback", M_REF_FILE, genie_stand_back);
2350 a68_idf (A68_EXT, "standerror", M_REF_FILE, genie_stand_error);
2351 a68_idf (A68_STD, "standinchannel", M_CHANNEL, genie_stand_in_channel);
2352 a68_idf (A68_STD, "standoutchannel", M_CHANNEL, genie_stand_out_channel);
2353 a68_idf (A68_EXT, "standdrawchannel", M_CHANNEL, genie_stand_draw_channel);
2354 a68_idf (A68_STD, "standbackchannel", M_CHANNEL, genie_stand_back_channel);
2355 a68_idf (A68_EXT, "standerrorchannel", M_CHANNEL, genie_stand_error_channel);
2356 //
2357 m = a68_proc (M_VOID, M_REF_FILE, M_STRING, NO_MOID);
2358 a68_idf (A68_STD, "maketerm", m, genie_make_term);
2359 //
2360 m = a68_proc (M_BOOL, M_CHAR, M_REF_INT, M_STRING, NO_MOID);
2361 a68_idf (A68_STD, "charinstring", m, genie_char_in_string);
2362 a68_idf (A68_EXT, "lastcharinstring", m, genie_last_char_in_string);
2363 //
2364 m = a68_proc (M_BOOL, M_STRING, M_REF_INT, M_STRING, NO_MOID);
2365 a68_idf (A68_EXT, "stringinstring", m, genie_string_in_string);
2366 //
2367 m = a68_proc (M_STRING, M_REF_FILE, NO_MOID);
2368 a68_idf (A68_EXT, "idf", m, genie_idf);
2369 a68_idf (A68_EXT, "term", m, genie_term);
2370 //
2371 m = a68_proc (M_STRING, NO_MOID);
2372 a68_idf (A68_EXT, "programidf", m, genie_program_idf);
2373 // Event routines.
2374 m = a68_proc (M_VOID, M_REF_FILE, M_PROC_REF_FILE_BOOL, NO_MOID);
2375 a68_idf (A68_STD, "onfileend", m, genie_on_file_end);
2376 a68_idf (A68_STD, "onpageend", m, genie_on_page_end);
2377 a68_idf (A68_STD, "onlineend", m, genie_on_line_end);
2378 a68_idf (A68_STD, "onlogicalfileend", m, genie_on_file_end);
2379 a68_idf (A68_STD, "onphysicalfileend", m, genie_on_file_end);
2380 a68_idf (A68_STD, "onformatend", m, genie_on_format_end);
2381 a68_idf (A68_STD, "onformaterror", m, genie_on_format_error);
2382 a68_idf (A68_STD, "onvalueerror", m, genie_on_value_error);
2383 a68_idf (A68_STD, "onopenerror", m, genie_on_open_error);
2384 a68_idf (A68_EXT, "ontransputerror", m, genie_on_transput_error);
2385 // Enquiries on files.
2386 a68_idf (A68_EXT, "drawpossible", M_PROC_REF_FILE_BOOL, genie_draw_possible);
2387 a68_idf (A68_EXT, "endoffile", M_PROC_REF_FILE_BOOL, genie_eof);
2388 a68_idf (A68_EXT, "endofline", M_PROC_REF_FILE_BOOL, genie_eoln);
2389 a68_idf (A68_EXT, "eof", M_PROC_REF_FILE_BOOL, genie_eof);
2390 a68_idf (A68_EXT, "eoln", M_PROC_REF_FILE_BOOL, genie_eoln);
2391 a68_idf (A68_EXT, "rewindpossible", M_PROC_REF_FILE_BOOL, genie_reset_possible);
2392 a68_idf (A68_STD, "binpossible", M_PROC_REF_FILE_BOOL, genie_bin_possible);
2393 a68_idf (A68_STD, "compressible", M_PROC_REF_FILE_BOOL, genie_compressible);
2394 a68_idf (A68_STD, "getpossible", M_PROC_REF_FILE_BOOL, genie_get_possible);
2395 a68_idf (A68_STD, "putpossible", M_PROC_REF_FILE_BOOL, genie_put_possible);
2396 a68_idf (A68_STD, "reidfpossible", M_PROC_REF_FILE_BOOL, genie_reidf_possible);
2397 a68_idf (A68_STD, "resetpossible", M_PROC_REF_FILE_BOOL, genie_reset_possible);
2398 a68_idf (A68_STD, "setpossible", M_PROC_REF_FILE_BOOL, genie_set_possible);
2399 // Handling of files.
2400 m = a68_proc (M_INT, M_REF_FILE, M_STRING, M_CHANNEL, NO_MOID);
2401 a68_idf (A68_STD, "open", m, genie_open);
2402 a68_idf (A68_STD, "establish", m, genie_establish);
2403 //
2404 m = a68_proc (M_VOID, M_REF_FILE, M_REF_STRING, NO_MOID);
2405 a68_idf (A68_STD, "associate", m, genie_associate);
2406 //
2407 m = a68_proc (M_INT, M_REF_FILE, M_CHANNEL, NO_MOID);
2408 a68_idf (A68_EXT, "rewind", M_PROC_REF_FILE_VOID, genie_reset);
2409 a68_idf (A68_STD, "backspace", M_PROC_REF_FILE_VOID, genie_backspace);
2410 a68_idf (A68_STD, "close", M_PROC_REF_FILE_VOID, genie_close);
2411 a68_idf (A68_STD, "create", m, genie_create);
2412 a68_idf (A68_STD, "erase", M_PROC_REF_FILE_VOID, genie_erase);
2413 a68_idf (A68_STD, "lock", M_PROC_REF_FILE_VOID, genie_lock);
2414 a68_idf (A68_STD, "newline", M_PROC_REF_FILE_VOID, genie_new_line);
2415 a68_idf (A68_STD, "newpage", M_PROC_REF_FILE_VOID, genie_new_page);
2416 a68_idf (A68_STD, "reset", M_PROC_REF_FILE_VOID, genie_reset);
2417 a68_idf (A68_STD, "scratch", M_PROC_REF_FILE_VOID, genie_erase);
2418 a68_idf (A68_STD, "space", M_PROC_REF_FILE_VOID, genie_space);
2419 //
2420 m = a68_proc (M_INT, M_REF_FILE, M_INT, NO_MOID);
2421 a68_idf (A68_STD, "set", m, genie_set);
2422 a68_idf (A68_STD, "seek", m, genie_set);
2423 //
2424 m = a68_proc (M_VOID, M_ROW_SIMPLIN, NO_MOID);
2425 a68_idf (A68_STD, "read", m, genie_read);
2426 a68_idf (A68_STD, "readbin", m, genie_read_bin);
2427 a68_idf (A68_STD, "readf", m, genie_read_format);
2428 //
2429 m = a68_proc (M_VOID, M_ROW_SIMPLOUT, NO_MOID);
2430 a68_idf (A68_STD, "printbin", m, genie_write_bin);
2431 a68_idf (A68_STD, "printf", m, genie_write_format);
2432 a68_idf (A68_STD, "print", m, genie_write);
2433 a68_idf (A68_STD, "writebin", m, genie_write_bin);
2434 a68_idf (A68_STD, "writef", m, genie_write_format);
2435 a68_idf (A68_STD, "write", m, genie_write);
2436 //
2437 m = a68_proc (M_VOID, M_REF_FILE, M_ROW_SIMPLIN, NO_MOID);
2438 a68_idf (A68_STD, "get", m, genie_read_file);
2439 a68_idf (A68_STD, "getf", m, genie_read_file_format);
2440 a68_idf (A68_STD, "getbin", m, genie_read_bin_file);
2441 //
2442 m = a68_proc (M_VOID, M_REF_FILE, M_ROW_SIMPLOUT, NO_MOID);
2443 a68_idf (A68_STD, "put", m, genie_write_file);
2444 a68_idf (A68_STD, "putf", m, genie_write_file_format);
2445 a68_idf (A68_STD, "putbin", m, genie_write_bin_file);
2446
2447 A68C_DEFIO (bits, bits, BITS);
2448 A68C_DEFIO (bool, bool, BOOL);
2449 A68C_DEFIO (char, char, CHAR);
2450 A68C_DEFIO (compl, complex, COMPLEX);
2451 A68C_DEFIO (complex, complex, COMPLEX);
2452 A68C_DEFIO (double, long_real, LONG_REAL);
2453 A68C_DEFIO (int, int, INT);
2454 A68C_DEFIO (longbits, long_bits, LONG_BITS);
2455 A68C_DEFIO (longcomplex, mp_complex, LONG_COMPLEX);
2456 A68C_DEFIO (longcompl, mp_complex, LONG_COMPLEX);
2457 A68C_DEFIO (longint, long_int, LONG_INT);
2458 A68C_DEFIO (longlongcomplex, long_mp_complex, LONG_LONG_COMPLEX);
2459 A68C_DEFIO (longlongcompl, long_mp_complex, LONG_LONG_COMPLEX);
2460 A68C_DEFIO (longlongint, long_mp_int, LONG_LONG_INT);
2461 A68C_DEFIO (longlongreal, long_mp_real, LONG_LONG_REAL);
2462 A68C_DEFIO (longreal, long_real, LONG_REAL);
2463 A68C_DEFIO (quad, long_mp_real, LONG_LONG_REAL);
2464 A68C_DEFIO (real, real, REAL);
2465 A68C_DEFIO (string, string, STRING);
2466 a68_idf (A68_EXT, "readline", M_PROC_STRING, genie_read_line);
2467 }
2468
2469 //! @brief Set up standenv - extensions.
2470
2471 void stand_extensions (void)
2472 {
2473 MOID_T *m = NO_MOID;
2474 // UNIX things.
2475 m = A68_MCACHE (proc_int);
2476 a68_idf (A68_EXT, "rows", m, genie_rows);
2477 a68_idf (A68_EXT, "columns", m, genie_columns);
2478 a68_idf (A68_EXT, "argc", m, genie_argc);
2479 a68_idf (A68_EXT, "a68gargc", m, genie_a68_argc);
2480 a68_idf (A68_EXT, "errno", m, genie_errno);
2481 a68_idf (A68_EXT, "fork", m, genie_fork);
2482 //
2483 m = a68_proc (M_STRING, NO_MOID);
2484 a68_idf (A68_EXT, "getpwd", m, genie_pwd);
2485 //
2486 m = a68_proc (M_INT, M_STRING, NO_MOID);
2487 a68_idf (A68_EXT, "setpwd", m, genie_cd);
2488 //
2489 m = a68_proc (M_BOOL, M_STRING, NO_MOID);
2490 a68_idf (A68_EXT, "fileisdirectory", m, genie_file_is_directory);
2491 a68_idf (A68_EXT, "fileisblockdevice", m, genie_file_is_block_device);
2492 a68_idf (A68_EXT, "fileischardevice", m, genie_file_is_char_device);
2493 a68_idf (A68_EXT, "fileisregular", m, genie_file_is_regular);
2494 #if defined (S_ISFIFO)
2495 a68_idf (A68_EXT, "fileisfifo", m, genie_file_is_fifo);
2496 #endif
2497 #if defined (S_ISLNK)
2498 a68_idf (A68_EXT, "fileislink", m, genie_file_is_link);
2499 #endif
2500 m = a68_proc (M_BITS, M_STRING, NO_MOID);
2501 a68_idf (A68_EXT, "filemode", m, genie_file_mode);
2502 //
2503 m = a68_proc (M_STRING, M_INT, NO_MOID);
2504 a68_idf (A68_EXT, "argv", m, genie_argv);
2505 a68_idf (A68_EXT, "a68gargv", m, genie_a68_argv);
2506 a68_idf (A68_EXT, "reseterrno", A68_MCACHE (proc_void), genie_reset_errno);
2507 //
2508 m = a68_proc (M_STRING, M_INT, NO_MOID);
2509 a68_idf (A68_EXT, "strerror", m, genie_strerror);
2510 //
2511 m = a68_proc (M_INT, M_STRING, M_ROW_STRING, M_ROW_STRING, NO_MOID);
2512 a68_idf (A68_EXT, "exec", m, genie_exec);
2513 a68_idf (A68_EXT, "execve", m, genie_exec);
2514 //
2515 m = a68_proc (M_PIPE, NO_MOID);
2516 a68_idf (A68_EXT, "createpipe", m, genie_create_pipe);
2517 //
2518 m = a68_proc (M_INT, M_STRING, M_ROW_STRING, M_ROW_STRING, NO_MOID);
2519 a68_idf (A68_EXT, "execsub", m, genie_exec_sub);
2520 a68_idf (A68_EXT, "execvechild", m, genie_exec_sub);
2521 //
2522 m = a68_proc (M_PIPE, M_STRING, M_ROW_STRING, M_ROW_STRING, NO_MOID);
2523 a68_idf (A68_EXT, "execsubpipeline", m, genie_exec_sub_pipeline);
2524 a68_idf (A68_EXT, "execvechildpipe", m, genie_exec_sub_pipeline);
2525 //
2526 m = a68_proc (M_INT, M_STRING, M_ROW_STRING, M_ROW_STRING, M_REF_STRING, NO_MOID);
2527 a68_idf (A68_EXT, "execsuboutput", m, genie_exec_sub_output);
2528 a68_idf (A68_EXT, "execveoutput", m, genie_exec_sub_output);
2529 //
2530 m = a68_proc (M_STRING, M_STRING, NO_MOID);
2531 a68_idf (A68_EXT, "getenv", m, genie_getenv);
2532 //
2533 m = a68_proc (M_VOID, M_INT, NO_MOID);
2534 a68_idf (A68_EXT, "waitpid", m, genie_waitpid);
2535 //
2536 m = a68_proc (M_ROW_INT, NO_MOID);
2537 a68_idf (A68_EXT, "utctime", m, genie_utctime);
2538 a68_idf (A68_EXT, "localtime", m, genie_localtime);
2539 //
2540 m = a68_proc (M_INT, M_STRING, M_STRING, M_REF_INT, M_REF_INT, NO_MOID);
2541 a68_idf (A68_EXT, "grepinstring", m, genie_grep_in_string);
2542 a68_idf (A68_EXT, "grepinsubstring", m, genie_grep_in_substring);
2543 //
2544 m = a68_proc (M_INT, M_STRING, M_STRING, M_REF_STRING, NO_MOID);
2545 a68_idf (A68_EXT, "subinstring", m, genie_sub_in_string);
2546 #if defined (HAVE_DIRENT_H)
2547 m = a68_proc (M_ROW_STRING, M_STRING, NO_MOID);
2548 a68_idf (A68_EXT, "getdirectory", m, genie_directory);
2549 #endif
2550 #if defined (BUILD_HTTP)
2551 m = a68_proc (M_INT, M_REF_STRING, M_STRING, M_STRING, M_INT, NO_MOID);
2552 a68_idf (A68_EXT, "httpcontent", m, genie_http_content);
2553 a68_idf (A68_EXT, "tcprequest", m, genie_tcp_request);
2554 #endif
2555 }
2556
2557 #if defined (HAVE_GNU_PLOTUTILS)
2558
2559 void stand_plot (void)
2560 {
2561 MOID_T *m = NO_MOID;
2562 // Drawing.
2563 m = a68_proc (M_BOOL, M_REF_FILE, M_STRING, M_STRING, NO_MOID);
2564 a68_idf (A68_EXT, "drawdevice", m, genie_make_device);
2565 a68_idf (A68_EXT, "makedevice", m, genie_make_device);
2566 //
2567 m = a68_proc (M_REAL, M_REF_FILE, NO_MOID);
2568 a68_idf (A68_EXT, "drawaspect", m, genie_draw_aspect);
2569 //
2570 m = a68_proc (M_VOID, M_REF_FILE, NO_MOID);
2571 a68_idf (A68_EXT, "drawclear", m, genie_draw_clear);
2572 a68_idf (A68_EXT, "drawerase", m, genie_draw_clear);
2573 a68_idf (A68_EXT, "drawflush", m, genie_draw_show);
2574 a68_idf (A68_EXT, "drawshow", m, genie_draw_show);
2575 //
2576 m = a68_proc (M_VOID, M_REF_FILE, M_INT, NO_MOID);
2577 a68_idf (A68_EXT, "drawfillstyle", m, genie_draw_fillstyle);
2578 //
2579 m = a68_proc (M_STRING, M_INT, NO_MOID);
2580 a68_idf (A68_EXT, "drawgetcolourname", m, genie_draw_get_colour_name);
2581 a68_idf (A68_EXT, "drawgetcolorname", m, genie_draw_get_colour_name);
2582 //
2583 m = a68_proc (M_VOID, M_REF_FILE, M_REAL, M_REAL, M_REAL, NO_MOID);
2584 a68_idf (A68_EXT, "drawcolor", m, genie_draw_colour);
2585 a68_idf (A68_EXT, "drawcolour", m, genie_draw_colour);
2586 a68_idf (A68_EXT, "drawbackgroundcolor", m, genie_draw_background_colour);
2587 a68_idf (A68_EXT, "drawbackgroundcolour", m, genie_draw_background_colour);
2588 a68_idf (A68_EXT, "drawcircle", m, genie_draw_circle);
2589 a68_idf (A68_EXT, "drawball", m, genie_draw_atom);
2590 a68_idf (A68_EXT, "drawstar", m, genie_draw_star);
2591 //
2592 m = a68_proc (M_VOID, M_REF_FILE, M_REAL, M_REAL, NO_MOID);
2593 a68_idf (A68_EXT, "drawpoint", m, genie_draw_point);
2594 a68_idf (A68_EXT, "drawline", m, genie_draw_line);
2595 a68_idf (A68_EXT, "drawmove", m, genie_draw_move);
2596 a68_idf (A68_EXT, "drawrect", m, genie_draw_rect);
2597 //
2598 m = a68_proc (M_VOID, M_REF_FILE, M_CHAR, M_CHAR, M_ROW_CHAR, NO_MOID);
2599 a68_idf (A68_EXT, "drawtext", m, genie_draw_text);
2600 //
2601 m = a68_proc (M_VOID, M_REF_FILE, M_ROW_CHAR, NO_MOID);
2602 a68_idf (A68_EXT, "drawlinestyle", m, genie_draw_linestyle);
2603 a68_idf (A68_EXT, "drawfontname", m, genie_draw_fontname);
2604 //
2605 m = a68_proc (M_VOID, M_REF_FILE, M_REAL, NO_MOID);
2606 a68_idf (A68_EXT, "drawlinewidth", m, genie_draw_linewidth);
2607 //
2608 m = a68_proc (M_VOID, M_REF_FILE, M_INT, NO_MOID);
2609 a68_idf (A68_EXT, "drawfontsize", m, genie_draw_fontsize);
2610 a68_idf (A68_EXT, "drawtextangle", m, genie_draw_textangle);
2611 //
2612 m = a68_proc (M_VOID, M_REF_FILE, M_STRING, NO_MOID);
2613 a68_idf (A68_EXT, "drawcolorname", m, genie_draw_colour_name);
2614 a68_idf (A68_EXT, "drawcolourname", m, genie_draw_colour_name);
2615 a68_idf (A68_EXT, "drawbackgroundcolorname", m, genie_draw_background_colour_name);
2616 a68_idf (A68_EXT, "drawbackgroundcolourname", m, genie_draw_background_colour_name);
2617 }
2618
2619 #endif
2620
2621 #if defined (HAVE_CURSES)
2622
2623 void stand_curses (void)
2624 {
2625 MOID_T *m;
2626 a68_idf (A68_EXT, "cursesstart", A68_MCACHE (proc_void), genie_curses_start);
2627 a68_idf (A68_EXT, "cursesend", A68_MCACHE (proc_void), genie_curses_end);
2628 a68_idf (A68_EXT, "cursesclear", A68_MCACHE (proc_void), genie_curses_clear);
2629 a68_idf (A68_EXT, "cursesrefresh", A68_MCACHE (proc_void), genie_curses_refresh);
2630 a68_idf (A68_EXT, "cursesgreen", A68_MCACHE (proc_void), genie_curses_green);
2631 a68_idf (A68_EXT, "cursescyan", A68_MCACHE (proc_void), genie_curses_cyan);
2632 a68_idf (A68_EXT, "cursesred", A68_MCACHE (proc_void), genie_curses_red);
2633 a68_idf (A68_EXT, "cursesyellow", A68_MCACHE (proc_void), genie_curses_yellow);
2634 a68_idf (A68_EXT, "cursesmagenta", A68_MCACHE (proc_void), genie_curses_magenta);
2635 a68_idf (A68_EXT, "cursesblue", A68_MCACHE (proc_void), genie_curses_blue);
2636 a68_idf (A68_EXT, "curseswhite", A68_MCACHE (proc_void), genie_curses_white);
2637 a68_idf (A68_EXT, "cursesgreeninverse", A68_MCACHE (proc_void), genie_curses_green_inverse);
2638 a68_idf (A68_EXT, "cursescyaninverse", A68_MCACHE (proc_void), genie_curses_cyan_inverse);
2639 a68_idf (A68_EXT, "cursesredinverse", A68_MCACHE (proc_void), genie_curses_red_inverse);
2640 a68_idf (A68_EXT, "cursesyellowinverse", A68_MCACHE (proc_void), genie_curses_yellow_inverse);
2641 a68_idf (A68_EXT, "cursesmagentainverse", A68_MCACHE (proc_void), genie_curses_magenta_inverse);
2642 a68_idf (A68_EXT, "cursesblueinverse", A68_MCACHE (proc_void), genie_curses_blue_inverse);
2643 a68_idf (A68_EXT, "curseswhiteinverse", A68_MCACHE (proc_void), genie_curses_white_inverse);
2644 //
2645 m = A68_MCACHE (proc_char);
2646 a68_idf (A68_EXT, "cursesgetchar", m, genie_curses_getchar);
2647 //
2648 m = a68_proc (M_VOID, M_CHAR, NO_MOID);
2649 a68_idf (A68_EXT, "cursesputchar", m, genie_curses_putchar);
2650 //
2651 m = a68_proc (M_VOID, M_INT, M_INT, NO_MOID);
2652 a68_idf (A68_EXT, "cursesmove", m, genie_curses_move);
2653 //
2654 m = A68_MCACHE (proc_int);
2655 a68_idf (A68_EXT, "curseslines", m, genie_curses_lines);
2656 a68_idf (A68_EXT, "cursescolumns", m, genie_curses_columns);
2657 //
2658 m = a68_proc (M_BOOL, M_CHAR, NO_MOID);
2659 a68_idf (A68_EXT, "cursesdelchar", m, genie_curses_del_char);
2660 }
2661
2662 #endif
2663
2664 #if defined (HAVE_POSTGRESQL)
2665
2666 void stand_postgresql (void)
2667 {
2668 MOID_T *m = NO_MOID;
2669 m = a68_proc (M_INT, M_REF_FILE, M_STRING, M_REF_STRING, NO_MOID);
2670 a68_idf (A68_EXT, "pqconnectdb", m, genie_pq_connectdb);
2671 //
2672 m = a68_proc (M_INT, M_REF_FILE, NO_MOID);
2673 a68_idf (A68_EXT, "pqfinish", m, genie_pq_finish);
2674 a68_idf (A68_EXT, "pqreset", m, genie_pq_reset);
2675 //
2676 m = a68_proc (M_INT, M_REF_FILE, M_STRING, NO_MOID);
2677 a68_idf (A68_EXT, "pqparameterstatus", m, genie_pq_parameterstatus);
2678 a68_idf (A68_EXT, "pqexec", m, genie_pq_exec);
2679 a68_idf (A68_EXT, "pqfnumber", m, genie_pq_fnumber);
2680 //
2681 m = a68_proc (M_INT, M_REF_FILE, NO_MOID);
2682 a68_idf (A68_EXT, "pqntuples", m, genie_pq_ntuples);
2683 a68_idf (A68_EXT, "pqnfields", m, genie_pq_nfields);
2684 a68_idf (A68_EXT, "pqcmdstatus", m, genie_pq_cmdstatus);
2685 a68_idf (A68_EXT, "pqcmdtuples", m, genie_pq_cmdtuples);
2686 a68_idf (A68_EXT, "pqerrormessage", m, genie_pq_errormessage);
2687 a68_idf (A68_EXT, "pqresulterrormessage", m, genie_pq_resulterrormessage);
2688 a68_idf (A68_EXT, "pqdb", m, genie_pq_db);
2689 a68_idf (A68_EXT, "pquser", m, genie_pq_user);
2690 a68_idf (A68_EXT, "pqpass", m, genie_pq_pass);
2691 a68_idf (A68_EXT, "pqhost", m, genie_pq_host);
2692 a68_idf (A68_EXT, "pqport", m, genie_pq_port);
2693 a68_idf (A68_EXT, "pqtty", m, genie_pq_tty);
2694 a68_idf (A68_EXT, "pqoptions", m, genie_pq_options);
2695 a68_idf (A68_EXT, "pqprotocolversion", m, genie_pq_protocolversion);
2696 a68_idf (A68_EXT, "pqserverversion", m, genie_pq_serverversion);
2697 a68_idf (A68_EXT, "pqsocket", m, genie_pq_socket);
2698 a68_idf (A68_EXT, "pqbackendpid", m, genie_pq_backendpid);
2699 //
2700 m = a68_proc (M_INT, M_REF_FILE, M_INT, NO_MOID);
2701 a68_idf (A68_EXT, "pqfname", m, genie_pq_fname);
2702 a68_idf (A68_EXT, "pqfformat", m, genie_pq_fformat);
2703 //
2704 m = a68_proc (M_INT, M_REF_FILE, M_INT, M_INT, NO_MOID);
2705 a68_idf (A68_EXT, "pqgetvalue", m, genie_pq_getvalue);
2706 a68_idf (A68_EXT, "pqgetisnull", m, genie_pq_getisnull);
2707 }
2708
2709 #endif
2710
2711 #if defined (BUILD_LINUX)
2712 void stand_linux (void)
2713 {
2714 a68_idf (A68_EXT, "sigsegv", A68_MCACHE (proc_void), genie_sigsegv);
2715 }
2716 #endif
2717
2718 //! @brief Build the standard environ symbol table.
2719
2720 void make_standard_environ (void)
2721 {
2722 stand_moids ();
2723 //
2724 A68_MCACHE (proc_bool) = a68_proc (M_BOOL, NO_MOID);
2725 A68_MCACHE (proc_char) = a68_proc (M_CHAR, NO_MOID);
2726 A68_MCACHE (proc_complex_complex) = a68_proc (M_COMPLEX, M_COMPLEX, NO_MOID);
2727 A68_MCACHE (proc_int) = a68_proc (M_INT, NO_MOID);
2728 A68_MCACHE (proc_int_int) = a68_proc (M_INT, M_INT, NO_MOID);
2729 A68_MCACHE (proc_int_int_real) = a68_proc (M_REAL, M_INT, M_INT, NO_MOID);
2730 A68_MCACHE (proc_int_real) = a68_proc (M_REAL, M_INT, NO_MOID);
2731 A68_MCACHE (proc_int_real_real) = a68_proc (M_REAL, M_INT, M_REAL, NO_MOID);
2732 A68_MCACHE (proc_int_real_real_real) = a68_proc (M_REAL, M_INT, M_REAL, M_REAL, NO_MOID);
2733 A68_MCACHE (proc_real) = a68_proc (M_REAL, NO_MOID);
2734 A68_MCACHE (proc_real_int_real) = a68_proc (M_REAL, M_REAL, M_INT, NO_MOID);
2735 A68_MCACHE (proc_real_real_int_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_INT, NO_MOID);
2736 A68_MCACHE (proc_real_real) = M_PROC_REAL_REAL;
2737 A68_MCACHE (proc_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, NO_MOID);
2738 A68_MCACHE (proc_real_real_real_int) = a68_proc (M_INT, M_REAL, M_REAL, M_REAL, NO_MOID);
2739 A68_MCACHE (proc_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID);
2740 A68_MCACHE (proc_real_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID);
2741 A68_MCACHE (proc_real_real_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID);
2742 A68_MCACHE (proc_real_ref_real_ref_int_void) = a68_proc (M_VOID, M_REAL, M_REF_REAL, M_REF_INT, NO_MOID);
2743 A68_MCACHE (proc_void) = a68_proc (M_VOID, NO_MOID);
2744 //
2745 stand_prelude ();
2746 stand_mp_level_2 ();
2747 stand_mp_level_3 ();
2748 stand_transput ();
2749 stand_extensions ();
2750 #if (A68_LEVEL <= 2)
2751 stand_longlong_bits ();
2752 #endif
2753 #if defined (BUILD_LINUX)
2754 stand_linux ();
2755 #endif
2756 #if defined (HAVE_GSL)
2757 stand_gsl ();
2758 #endif
2759 #if defined (HAVE_MATHLIB)
2760 stand_mathlib ();
2761 #endif
2762 #if defined (HAVE_GNU_PLOTUTILS)
2763 stand_plot ();
2764 #endif
2765 #if defined (HAVE_CURSES)
2766 stand_curses ();
2767 #endif
2768 #if defined (HAVE_POSTGRESQL)
2769 stand_postgresql ();
2770 #endif
2771 }