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