intrinsic.c
1 //! @file intrinsic.c
2 //! @author J. Marcel van der Veer
3 //
4 //! @section Copyright
5 //
6 // This file is part of VIF - vintage FORTRAN compiler.
7 // Copyright 2020-2025 J. Marcel van der Veer <algol68g@xs4all.nl>.
8 //
9 //! @section License
10 //
11 // This program is free software; you can redistribute it and/or modify it
12 // under the terms of the GNU General Public License as published by the
13 // Free Software Foundation; either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful, but
17 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
19 // more details. You should have received a copy of the GNU General Public
20 // License along with this program. If not, see <http://www.gnu.org/licenses/>.
21
22 //! @section Synopsis
23 //!
24 //! Compile intrinsic functions.
25
26 #include <vif.h>
27
28 // VIF intrinsic function definitions.
29
30 static INTRINS fun[] = {
31 // CHARACTER
32 {.ffun = "char", .spec = FALSE, .cfun = "_char", .rtyp = CHARACTER, .rlen = 1, .anum = 1, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
33 {.ffun = "ichar", .spec = FALSE, .cfun = "_ichar", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = CHARACTER, .alen = 0, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
34 {.ffun = "len", .spec = FALSE, .cfun = "(int_4) strlen", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = CHARACTER, .alen = 0, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
35 // INTEGER*2
36 {.ffun = "abs", .spec = FALSE, .cfun = "_abs", .rtyp = INTEGER, .rlen = 2, .anum = 1, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
37 {.ffun = "dim", .spec = FALSE, .cfun = "_dim", .rtyp = INTEGER, .rlen = 2, .anum = 2, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
38 {.ffun = "int", .spec = FALSE, .cfun = "(int_2)", .rtyp = INTEGER, .rlen = 2, .anum = 1, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
39 {.ffun = "max", .spec = FALSE, .cfun = "_max", .rtyp = INTEGER, .rlen = 2, .anum = 0, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
40 {.ffun = "min", .spec = FALSE, .cfun = "_min", .rtyp = INTEGER, .rlen = 2, .anum = 0, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
41 {.ffun = "mod", .spec = FALSE, .cfun = "_mod", .rtyp = INTEGER, .rlen = 2, .anum = 2, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
42 {.ffun = "sign", .spec = FALSE, .cfun = "_sign", .rtyp = INTEGER, .rlen = 2, .anum = 2, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
43 //
44 {.ffun = "jabs", .spec = FALSE, .cfun = "_abs", .rtyp = INTEGER, .rlen = 2, .anum = 1, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
45 {.ffun = "jdim", .spec = FALSE, .cfun = "_dim", .rtyp = INTEGER, .rlen = 2, .anum = 2, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
46 {.ffun = "jint", .spec = FALSE, .cfun = "(int_2)", .rtyp = INTEGER, .rlen = 2, .anum = 1, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
47 {.ffun = "jmax", .spec = FALSE, .cfun = "_max", .rtyp = INTEGER, .rlen = 2, .anum = 0, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
48 {.ffun = "jmin", .spec = FALSE, .cfun = "_min", .rtyp = INTEGER, .rlen = 2, .anum = 0, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
49 {.ffun = "jmod", .spec = FALSE, .cfun = "_mod", .rtyp = INTEGER, .rlen = 2, .anum = 2, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
50 {.ffun = "jsign", .spec = FALSE, .cfun = "_sign", .rtyp = INTEGER, .rlen = 2, .anum = 2, .atyp = INTEGER, .alen = 2, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
51 // INTEGER*4
52 {.ffun = "abs", .spec = FALSE, .cfun = "_abs", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
53 {.ffun = "dble", .spec = FALSE, .cfun = "(real_8)", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
54 {.ffun = "dfloat", .spec = FALSE, .cfun = "(real_8)", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
55 {.ffun = "dim", .spec = FALSE, .cfun = "_dim", .rtyp = INTEGER, .rlen = 4, .anum = 2, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
56 {.ffun = "float", .spec = FALSE, .cfun = "(real_4)", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
57 {.ffun = "int", .spec = FALSE, .cfun = "(int_4)", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
58 {.ffun = "max", .spec = FALSE, .cfun = "_max", .rtyp = INTEGER, .rlen = 4, .anum = 0, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
59 {.ffun = "max0", .spec = FALSE, .cfun = "_max", .rtyp = INTEGER, .rlen = 4, .anum = 0, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
60 {.ffun = "min", .spec = FALSE, .cfun = "_min", .rtyp = INTEGER, .rlen = 4, .anum = 0, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
61 {.ffun = "min0", .spec = FALSE, .cfun = "_min", .rtyp = INTEGER, .rlen = 4, .anum = 0, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
62 {.ffun = "mod", .spec = FALSE, .cfun = "_mod", .rtyp = INTEGER, .rlen = 4, .anum = 2, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
63 {.ffun = "qext", .spec = FALSE, .cfun = "(real_16)", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
64 {.ffun = "real", .spec = FALSE, .cfun = "(real_4)", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = INTEGER, .alen = 4, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
65 {.ffun = "sign", .spec = FALSE, .cfun = "_sign", .rtyp = INTEGER, .rlen = 4, .anum = 2, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
66 {.ffun = "xext", .spec = FALSE, .cfun = "inttox", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
67 //
68 {.ffun = "iabs", .spec = FALSE, .cfun = "_abs", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = INTEGER, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
69 // INTEGER*8
70 {.ffun = "abs", .spec = FALSE, .cfun = "_abs", .rtyp = INTEGER, .rlen = 8, .anum = 1, .atyp = INTEGER, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
71 {.ffun = "dble", .spec = FALSE, .cfun = "(real_8)", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = INTEGER, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
72 {.ffun = "dfloat", .spec = FALSE, .cfun = "(real_8)", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = INTEGER, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
73 {.ffun = "dim", .spec = FALSE, .cfun = "_dim", .rtyp = INTEGER, .rlen = 8, .anum = 2, .atyp = INTEGER, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
74 {.ffun = "int", .spec = FALSE, .cfun = "(int_8)", .rtyp = INTEGER, .rlen = 8, .anum = 1, .atyp = INTEGER, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
75 {.ffun = "max", .spec = FALSE, .cfun = "_max", .rtyp = INTEGER, .rlen = 8, .anum = 0, .atyp = INTEGER, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
76 {.ffun = "min", .spec = FALSE, .cfun = "_min", .rtyp = INTEGER, .rlen = 8, .anum = 0, .atyp = INTEGER, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
77 {.ffun = "mod", .spec = FALSE, .cfun = "_mod", .rtyp = INTEGER, .rlen = 8, .anum = 2, .atyp = INTEGER, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
78 {.ffun = "qext", .spec = FALSE, .cfun = "(real_16)", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = INTEGER, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
79 {.ffun = "real", .spec = FALSE, .cfun = "(real_4)", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = INTEGER, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
80 {.ffun = "sign", .spec = FALSE, .cfun = "_sign", .rtyp = INTEGER, .rlen = 8, .anum = 2, .atyp = INTEGER, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
81 // REAL*4
82 {.ffun = "abs", .spec = FALSE, .cfun = "_abs", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
83 {.ffun = "acosh", .spec = FALSE, .cfun = "acoshf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xacosh, .f2 = NO_FUN, .f3 = NO_FUN},
84 {.ffun = "acos", .spec = FALSE, .cfun = "acosf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xacos, .f2 = NO_FUN, .f3 = NO_FUN},
85 {.ffun = "acotan", .spec = FALSE, .cfun = "acotanf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xacotan, .f2 = NO_FUN, .f3 = NO_FUN},
86 {.ffun = "aint", .spec = FALSE, .cfun = "_aintf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = _xint, .f2 = NO_FUN, .f3 = NO_FUN},
87 {.ffun = "alog10", .spec = FALSE, .cfun = "log10f", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xlog10, .f2 = NO_FUN, .f3 = NO_FUN},
88 {.ffun = "alog", .spec = FALSE, .cfun = "logf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xlog, .f2 = NO_FUN, .f3 = NO_FUN},
89 {.ffun = "anint", .spec = FALSE, .cfun = "_anintf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = _xnint, .f2 = NO_FUN, .f3 = NO_FUN},
90 {.ffun = "asinh", .spec = FALSE, .cfun = "asinhf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xasinh, .f2 = NO_FUN, .f3 = NO_FUN},
91 {.ffun = "asin", .spec = FALSE, .cfun = "asinf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xasin, .f2 = NO_FUN, .f3 = NO_FUN},
92 {.ffun = "atan2", .spec = FALSE, .cfun = "atan2f", .rtyp = REAL, .rlen = 4, .anum = 2, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
93 {.ffun = "atanh", .spec = FALSE, .cfun = "atanhf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xatanh, .f2 = NO_FUN, .f3 = NO_FUN},
94 {.ffun = "atan", .spec = FALSE, .cfun = "atanf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xatan, .f2 = NO_FUN, .f3 = NO_FUN},
95 {.ffun = "cosh", .spec = FALSE, .cfun = "coshf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xcosh, .f2 = NO_FUN, .f3 = NO_FUN},
96 {.ffun = "cos", .spec = FALSE, .cfun = "cosf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xcos, .f2 = NO_FUN, .f3 = NO_FUN},
97 {.ffun = "cotan", .spec = FALSE, .cfun = "cotanf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xcotan, .f2 = NO_FUN, .f3 = NO_FUN},
98 {.ffun = "dble", .spec = FALSE, .cfun = "(real_8)", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 4, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
99 {.ffun = "dfloat", .spec = FALSE, .cfun = "(real_8)", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 4, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
100 {.ffun = "dim", .spec = FALSE, .cfun = "_dim", .rtyp = REAL, .rlen = 4, .anum = 2, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
101 {.ffun = "exp", .spec = FALSE, .cfun = "expf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xexp, .f2 = NO_FUN, .f3 = NO_FUN},
102 {.ffun = "int8", .spec = FALSE, .cfun = "(int_8)", .rtyp = INTEGER, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 4, .f1 = _xint, .f2 = NO_FUN, .f3 = NO_FUN},
103 {.ffun = "int", .spec = FALSE, .cfun = "(int_4)", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = _xint, .f2 = NO_FUN, .f3 = NO_FUN},
104 {.ffun = "log10", .spec = FALSE, .cfun = "log10f", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xlog10, .f2 = NO_FUN, .f3 = NO_FUN},
105 {.ffun = "log", .spec = FALSE, .cfun = "logf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xlog, .f2 = NO_FUN, .f3 = NO_FUN},
106 {.ffun = "max", .spec = FALSE, .cfun = "_max", .rtyp = REAL, .rlen = 4, .anum = 0, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
107 {.ffun = "min", .spec = FALSE, .cfun = "_min", .rtyp = REAL, .rlen = 4, .anum = 0, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
108 {.ffun = "mod", .spec = FALSE, .cfun = "_mod", .rtyp = REAL, .rlen = 4, .anum = 2, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
109 {.ffun = "nint", .spec = FALSE, .cfun = "_nintf", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = _xnint, .f2 = NO_FUN, .f3 = NO_FUN},
110 {.ffun = "qext", .spec = FALSE, .cfun = "(real_16)", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
111 {.ffun = "real", .spec = FALSE, .cfun = "", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
112 {.ffun = "sign", .spec = FALSE, .cfun = "_sign", .rtyp = REAL, .rlen = 4, .anum = 2, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
113 {.ffun = "sinh", .spec = FALSE, .cfun = "sinhf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xsinh, .f2 = NO_FUN, .f3 = NO_FUN},
114 {.ffun = "sin", .spec = FALSE, .cfun = "sinf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xsin, .f2 = NO_FUN, .f3 = NO_FUN},
115 {.ffun = "sngl", .spec = FALSE, .cfun = "", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
116 {.ffun = "sqrt", .spec = FALSE, .cfun = "sqrtf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xsqrt, .f2 = NO_FUN, .f3 = NO_FUN},
117 {.ffun = "tanh", .spec = FALSE, .cfun = "tanhf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xtanh, .f2 = NO_FUN, .f3 = NO_FUN},
118 {.ffun = "tan", .spec = FALSE, .cfun = "tanf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xtan, .f2 = NO_FUN, .f3 = NO_FUN},
119 {.ffun = "xext", .spec = FALSE, .cfun = "dbltox", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
120 //
121 {.ffun = "amax0", .spec = FALSE, .cfun = "(int_4) _max", .rtyp = INTEGER, .rlen = 4, .anum = 0, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
122 {.ffun = "amax1", .spec = FALSE, .cfun = "_max", .rtyp = REAL, .rlen = 4, .anum = 0, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
123 {.ffun = "acosf", .spec = TRUE, .cfun = "acosf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xacos, .f2 = NO_FUN, .f3 = NO_FUN},
124 {.ffun = "acoshf", .spec = FALSE, .cfun = "acoshf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xacosh, .f2 = NO_FUN, .f3 = NO_FUN},
125 {.ffun = "acotanf", .spec = TRUE, .cfun = "acotanf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xacotan, .f2 = NO_FUN, .f3 = NO_FUN},
126 {.ffun = "asinf", .spec = TRUE, .cfun = "asinf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xasin, .f2 = NO_FUN, .f3 = NO_FUN},
127 {.ffun = "asinhf", .spec = FALSE, .cfun = "asinhf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xasinh, .f2 = NO_FUN, .f3 = NO_FUN},
128 {.ffun = "atan2f", .spec = TRUE, .cfun = "atan2f", .rtyp = REAL, .rlen = 4, .anum = 2, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = xatan2, .f3 = NO_FUN},
129 {.ffun = "atanf", .spec = TRUE, .cfun = "atanf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xatan, .f2 = NO_FUN, .f3 = NO_FUN},
130 {.ffun = "atanhf", .spec = FALSE, .cfun = "atanhf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xatanh, .f2 = NO_FUN, .f3 = NO_FUN},
131 {.ffun = "cosf", .spec = TRUE, .cfun = "cosf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xcos, .f2 = NO_FUN, .f3 = NO_FUN},
132 {.ffun = "coshf", .spec = FALSE, .cfun = "coshf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xcosh, .f2 = NO_FUN, .f3 = NO_FUN},
133 {.ffun = "cotanf", .spec = FALSE, .cfun = "cotanf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xcotan, .f2 = NO_FUN, .f3 = NO_FUN},
134 {.ffun = "expf", .spec = TRUE, .cfun = "expf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xexp, .f2 = NO_FUN, .f3 = NO_FUN},
135 {.ffun = "log10f", .spec = TRUE, .cfun = "log10f", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xlog10, .f2 = NO_FUN, .f3 = NO_FUN},
136 {.ffun = "logf", .spec = TRUE, .cfun = "logf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xlog, .f2 = NO_FUN, .f3 = NO_FUN},
137 {.ffun = "sinf", .spec = TRUE, .cfun = "sinf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xsin, .f2 = NO_FUN, .f3 = NO_FUN},
138 {.ffun = "sinhf", .spec = FALSE, .cfun = "sinhf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xsinh, .f2 = NO_FUN, .f3 = NO_FUN},
139 {.ffun = "sqrtf", .spec = TRUE, .cfun = "sqrtf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xsqrt, .f2 = NO_FUN, .f3 = NO_FUN},
140 {.ffun = "tanf", .spec = TRUE, .cfun = "tanf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xtan, .f2 = NO_FUN, .f3 = NO_FUN},
141 {.ffun = "tanhf", .spec = FALSE, .cfun = "tanhf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xtanh, .f2 = NO_FUN, .f3 = NO_FUN},
142 // REAL*8
143 {.ffun = "abs", .spec = FALSE, .cfun = "_abs", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
144 {.ffun = "acosh", .spec = FALSE, .cfun = "acosh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xacosh, .f2 = NO_FUN, .f3 = NO_FUN},
145 {.ffun = "acos", .spec = FALSE, .cfun = "acos", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xacos, .f2 = NO_FUN, .f3 = NO_FUN},
146 {.ffun = "aint", .spec = FALSE, .cfun = "_aintd", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xint, .f2 = NO_FUN, .f3 = NO_FUN},
147 {.ffun = "alog10", .spec = FALSE, .cfun = "log10f", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 4, .f1 = xlog10, .f2 = NO_FUN, .f3 = NO_FUN},
148 {.ffun = "anint", .spec = FALSE, .cfun = "_anintd", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xnint, .f2 = NO_FUN, .f3 = NO_FUN},
149 {.ffun = "asinh", .spec = FALSE, .cfun = "asinh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xasinh, .f2 = NO_FUN, .f3 = NO_FUN},
150 {.ffun = "asin", .spec = FALSE, .cfun = "asin", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xasin, .f2 = NO_FUN, .f3 = NO_FUN},
151 {.ffun = "atan2", .spec = FALSE, .cfun = "atan2", .rtyp = REAL, .rlen = 8, .anum = 2, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
152 {.ffun = "atanh", .spec = FALSE, .cfun = "atanh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xatanh, .f2 = NO_FUN, .f3 = NO_FUN},
153 {.ffun = "atan", .spec = FALSE, .cfun = "atan", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xatan, .f2 = NO_FUN, .f3 = NO_FUN},
154 {.ffun = "cosh", .spec = FALSE, .cfun = "cosh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xcosh, .f2 = NO_FUN, .f3 = NO_FUN},
155 {.ffun = "cos", .spec = FALSE, .cfun = "cos", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xcos, .f2 = NO_FUN, .f3 = NO_FUN},
156 {.ffun = "cotan", .spec = FALSE, .cfun = "cotan", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xcotan, .f2 = NO_FUN, .f3 = NO_FUN},
157 {.ffun = "dble", .spec = FALSE, .cfun = "(real_8)", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
158 {.ffun = "dfloat", .spec = FALSE, .cfun = "(real_8)", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
159 {.ffun = "dim", .spec = FALSE, .cfun = "_dim", .rtyp = REAL, .rlen = 8, .anum = 2, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
160 {.ffun = "dint", .spec = FALSE, .cfun = "_aintd", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xint, .f2 = NO_FUN, .f3 = NO_FUN},
161 {.ffun = "dint", .spec = FALSE, .cfun = "_aintd", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xint, .f2 = NO_FUN, .f3 = NO_FUN},
162 {.ffun = "dnint", .spec = FALSE, .cfun = "_anintd", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xnint, .f2 = NO_FUN, .f3 = NO_FUN},
163 {.ffun = "idnint", .spec = FALSE, .cfun = "_anintd", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xnint, .f2 = NO_FUN, .f3 = NO_FUN},
164 {.ffun = "exp", .spec = FALSE, .cfun = "exp", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xexp, .f2 = NO_FUN, .f3 = NO_FUN},
165 {.ffun = "int", .spec = FALSE, .cfun = "(int_4)", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xint, .f2 = NO_FUN, .f3 = NO_FUN},
166 {.ffun = "log10", .spec = FALSE, .cfun = "log10", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xlog10, .f2 = NO_FUN, .f3 = NO_FUN},
167 {.ffun = "log", .spec = FALSE, .cfun = "log", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xlog, .f2 = NO_FUN, .f3 = NO_FUN},
168 {.ffun = "max", .spec = FALSE, .cfun = "_max", .rtyp = REAL, .rlen = 8, .anum = 0, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
169 {.ffun = "min", .spec = FALSE, .cfun = "_min", .rtyp = REAL, .rlen = 8, .anum = 0, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
170 {.ffun = "mod", .spec = FALSE, .cfun = "_mod", .rtyp = REAL, .rlen = 8, .anum = 2, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
171 {.ffun = "nint", .spec = FALSE, .cfun = "_nintd", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xnint, .f2 = NO_FUN, .f3 = NO_FUN},
172 {.ffun = "qext", .spec = FALSE, .cfun = "_qext", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
173 {.ffun = "qextd", .spec = FALSE, .cfun = "_qext", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
174 {.ffun = "real", .spec = FALSE, .cfun = "(real_4)", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
175 {.ffun = "sign", .spec = FALSE, .cfun = "_sign", .rtyp = REAL, .rlen = 8, .anum = 2, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
176 {.ffun = "sinh", .spec = FALSE, .cfun = "sinh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xsinh, .f2 = NO_FUN, .f3 = NO_FUN},
177 {.ffun = "sin", .spec = FALSE, .cfun = "sin", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xsin, .f2 = NO_FUN, .f3 = NO_FUN},
178 {.ffun = "sngl", .spec = FALSE, .cfun = "(real_4)", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
179 {.ffun = "sqrt", .spec = FALSE, .cfun = "sqrt", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xsqrt, .f2 = NO_FUN, .f3 = NO_FUN},
180 {.ffun = "tanh", .spec = FALSE, .cfun = "tanh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xtanh, .f2 = NO_FUN, .f3 = NO_FUN},
181 {.ffun = "tan", .spec = FALSE, .cfun = "tan", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xtan, .f2 = NO_FUN, .f3 = NO_FUN},
182 {.ffun = "xext", .spec = FALSE, .cfun = "dbltox", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
183 //
184 {.ffun = "dmax0", .spec = FALSE, .cfun = "(int_4) _max", .rtyp = INTEGER, .rlen = 4, .anum = 0, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
185 {.ffun = "dmax1", .spec = FALSE, .cfun = "_max", .rtyp = REAL, .rlen = 8, .anum = 0, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
186 {.ffun = "idnint", .spec = FALSE, .cfun = "_nintd", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 8, .f1 = _xnint, .f2 = NO_FUN, .f3 = NO_FUN},
187 {.ffun = "dabs", .spec = FALSE, .cfun = "_abs", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
188 {.ffun = "dacosh", .spec = FALSE, .cfun = "acosh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xacosh, .f2 = NO_FUN, .f3 = NO_FUN},
189 {.ffun = "dacos", .spec = TRUE, .cfun = "acos", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xacos, .f2 = NO_FUN, .f3 = NO_FUN},
190 {.ffun = "dasinh", .spec = FALSE, .cfun = "asinh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xasinh, .f2 = NO_FUN, .f3 = NO_FUN},
191 {.ffun = "dasin", .spec = TRUE, .cfun = "asin", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xasin, .f2 = NO_FUN, .f3 = NO_FUN},
192 {.ffun = "datan2", .spec = TRUE, .cfun = "atan2", .rtyp = REAL, .rlen = 8, .anum = 2, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
193 {.ffun = "datanh", .spec = FALSE, .cfun = "atanh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xatanh, .f2 = NO_FUN, .f3 = NO_FUN},
194 {.ffun = "datan", .spec = TRUE, .cfun = "atan", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xatan, .f2 = NO_FUN, .f3 = NO_FUN},
195 {.ffun = "dcosh", .spec = FALSE, .cfun = "cosh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xcosh, .f2 = NO_FUN, .f3 = NO_FUN},
196 {.ffun = "dcos", .spec = TRUE, .cfun = "cos", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xcos, .f2 = NO_FUN, .f3 = NO_FUN},
197 {.ffun = "dcotan", .spec = FALSE, .cfun = "cotan", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xcotan, .f2 = NO_FUN, .f3 = NO_FUN},
198 {.ffun = "ddble", .spec = FALSE, .cfun = "(real_8)", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
199 {.ffun = "dexp", .spec = TRUE, .cfun = "exp", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xexp, .f2 = NO_FUN, .f3 = NO_FUN},
200 {.ffun = "dlog10", .spec = TRUE, .cfun = "log10", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xlog10, .f2 = NO_FUN, .f3 = NO_FUN},
201 {.ffun = "dlog", .spec = TRUE, .cfun = "log", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xlog, .f2 = NO_FUN, .f3 = NO_FUN},
202 {.ffun = "dmax", .spec = FALSE, .cfun = "_max", .rtyp = REAL, .rlen = 8, .anum = 0, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
203 {.ffun = "dmin", .spec = FALSE, .cfun = "_min", .rtyp = REAL, .rlen = 8, .anum = 0, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
204 {.ffun = "dmod", .spec = FALSE, .cfun = "_mod", .rtyp = REAL, .rlen = 8, .anum = 2, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
205 {.ffun = "dsign", .spec = FALSE, .cfun = "_sign", .rtyp = REAL, .rlen = 8, .anum = 2, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
206 {.ffun = "dsinh", .spec = FALSE, .cfun = "sinh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xsinh, .f2 = NO_FUN, .f3 = NO_FUN},
207 {.ffun = "dsin", .spec = TRUE, .cfun = "sin", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xsin, .f2 = NO_FUN, .f3 = NO_FUN},
208 {.ffun = "dsqrt", .spec = TRUE, .cfun = "sqrt", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xsqrt, .f2 = NO_FUN, .f3 = NO_FUN},
209 {.ffun = "dtanh", .spec = FALSE, .cfun = "tanh", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xtanh, .f2 = NO_FUN, .f3 = NO_FUN},
210 {.ffun = "dtan", .spec = TRUE, .cfun = "tan", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = xtan, .f2 = NO_FUN, .f3 = NO_FUN},
211 // REAL*16
212 {.ffun = "abs", .spec = FALSE, .cfun = "_abs", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
213 {.ffun = "acosh", .spec = FALSE, .cfun = "acoshq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xacosh, .f2 = NO_FUN, .f3 = NO_FUN},
214 {.ffun = "acos", .spec = FALSE, .cfun = "acosq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xacos, .f2 = NO_FUN, .f3 = NO_FUN},
215 {.ffun = "aint", .spec = FALSE, .cfun = "_aintd", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = _xint, .f2 = NO_FUN, .f3 = NO_FUN},
216 {.ffun = "anint", .spec = FALSE, .cfun = "_anintd", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = _xnint, .f2 = NO_FUN, .f3 = NO_FUN},
217 {.ffun = "asinh", .spec = FALSE, .cfun = "asinhq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xasinh, .f2 = NO_FUN, .f3 = NO_FUN},
218 {.ffun = "asin", .spec = FALSE, .cfun = "asinq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xasin, .f2 = NO_FUN, .f3 = NO_FUN},
219 {.ffun = "atan2", .spec = FALSE, .cfun = "atan2q", .rtyp = REAL, .rlen = 16, .anum = 2, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
220 {.ffun = "atanh", .spec = FALSE, .cfun = "atanhq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xatanh, .f2 = NO_FUN, .f3 = NO_FUN},
221 {.ffun = "atan", .spec = FALSE, .cfun = "atanq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xatan, .f2 = NO_FUN, .f3 = NO_FUN},
222 {.ffun = "cosh", .spec = FALSE, .cfun = "coshq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xcosh, .f2 = NO_FUN, .f3 = NO_FUN},
223 {.ffun = "cos", .spec = FALSE, .cfun = "cosq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xcos, .f2 = NO_FUN, .f3 = NO_FUN},
224 {.ffun = "cotan", .spec = FALSE, .cfun = "cotanq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xcotan, .f2 = NO_FUN, .f3 = NO_FUN},
225 {.ffun = "dble", .spec = FALSE, .cfun = "(real_8)", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 16, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
226 {.ffun = "dbleq", .spec = FALSE, .cfun = "(real_8)", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 16, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
227 {.ffun = "dim", .spec = FALSE, .cfun = "_dim", .rtyp = REAL, .rlen = 16, .anum = 2, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
228 {.ffun = "exp", .spec = FALSE, .cfun = "expq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xexp, .f2 = NO_FUN, .f3 = NO_FUN},
229 {.ffun = "int", .spec = FALSE, .cfun = "(int_4)", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 16, .f1 = _xint, .f2 = NO_FUN, .f3 = NO_FUN},
230 {.ffun = "log10", .spec = FALSE, .cfun = "log10q", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xlog10, .f2 = NO_FUN, .f3 = NO_FUN},
231 {.ffun = "log", .spec = FALSE, .cfun = "logq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xlog, .f2 = NO_FUN, .f3 = NO_FUN},
232 {.ffun = "max", .spec = FALSE, .cfun = "_max", .rtyp = REAL, .rlen = 16, .anum = 0, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
233 {.ffun = "min", .spec = FALSE, .cfun = "_min", .rtyp = REAL, .rlen = 16, .anum = 0, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
234 {.ffun = "mod", .spec = FALSE, .cfun = "_qmod", .rtyp = REAL, .rlen = 16, .anum = 2, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
235 {.ffun = "nint", .spec = FALSE, .cfun = "_nintq", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = REAL, .alen = 16, .f1 = _xnint, .f2 = NO_FUN, .f3 = NO_FUN},
236 {.ffun = "qext", .spec = FALSE, .cfun = "", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = _xI, .f2 = NO_FUN, .f3 = NO_FUN},
237 {.ffun = "qint", .spec = FALSE, .cfun = "_aintq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = _xint, .f2 = NO_FUN, .f3 = NO_FUN},
238 {.ffun = "qnint", .spec = FALSE, .cfun = "_anintq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = _xnint, .f2 = NO_FUN, .f3 = NO_FUN},
239 {.ffun = "sign", .spec = FALSE, .cfun = "_sign", .rtyp = REAL, .rlen = 16, .anum = 2, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
240 {.ffun = "sinh", .spec = FALSE, .cfun = "sinhq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xsinh, .f2 = NO_FUN, .f3 = NO_FUN},
241 {.ffun = "sin", .spec = FALSE, .cfun = "sinq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xsin, .f2 = NO_FUN, .f3 = NO_FUN},
242 {.ffun = "sqrt", .spec = FALSE, .cfun = "sqrtq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xsqrt, .f2 = NO_FUN, .f3 = NO_FUN},
243 {.ffun = "tanh", .spec = FALSE, .cfun = "tanhq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xtanh, .f2 = NO_FUN, .f3 = NO_FUN},
244 {.ffun = "tan", .spec = FALSE, .cfun = "tanq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xtan, .f2 = NO_FUN, .f3 = NO_FUN},
245 {.ffun = "xext", .spec = FALSE, .cfun = "_quadtox", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
246 //
247 {.ffun = "qabs", .spec = FALSE, .cfun = "_abs", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
248 {.ffun = "qacosh", .spec = FALSE, .cfun = "acoshq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xacosh, .f2 = NO_FUN, .f3 = NO_FUN},
249 {.ffun = "qacos", .spec = TRUE, .cfun = "acosq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xacos, .f2 = NO_FUN, .f3 = NO_FUN},
250 {.ffun = "qasinh", .spec = FALSE, .cfun = "asinhq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xasinh, .f2 = NO_FUN, .f3 = NO_FUN},
251 {.ffun = "qasin", .spec = TRUE, .cfun = "asinq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xasin, .f2 = NO_FUN, .f3 = NO_FUN},
252 {.ffun = "qatan2", .spec = TRUE, .cfun = "atan2q", .rtyp = REAL, .rlen = 16, .anum = 2, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
253 {.ffun = "qatanh", .spec = FALSE, .cfun = "atanhq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xatanh, .f2 = NO_FUN, .f3 = NO_FUN},
254 {.ffun = "qatan", .spec = TRUE, .cfun = "atanq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xatan, .f2 = NO_FUN, .f3 = NO_FUN},
255 {.ffun = "qcosh", .spec = FALSE, .cfun = "coshq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xcosh, .f2 = NO_FUN, .f3 = NO_FUN},
256 {.ffun = "qcos", .spec = TRUE, .cfun = "cosq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xcos, .f2 = NO_FUN, .f3 = NO_FUN},
257 {.ffun = "qcotan", .spec = FALSE, .cfun = "cotanq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xcotan, .f2 = NO_FUN, .f3 = NO_FUN},
258 {.ffun = "qdim", .spec = FALSE, .cfun = "_dim", .rtyp = REAL, .rlen = 16, .anum = 2, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
259 {.ffun = "qexp", .spec = TRUE, .cfun = "expq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xexp, .f2 = NO_FUN, .f3 = NO_FUN},
260 {.ffun = "qint", .spec = FALSE, .cfun = "_qint", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
261 {.ffun = "qlog10", .spec = TRUE, .cfun = "log10q", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xlog10, .f2 = NO_FUN, .f3 = NO_FUN},
262 {.ffun = "qlog", .spec = TRUE, .cfun = "logq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xlog, .f2 = NO_FUN, .f3 = NO_FUN},
263 {.ffun = "qmax", .spec = FALSE, .cfun = "_max", .rtyp = REAL, .rlen = 16, .anum = 0, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
264 {.ffun = "qmin", .spec = FALSE, .cfun = "_min", .rtyp = REAL, .rlen = 16, .anum = 0, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
265 {.ffun = "qmod", .spec = FALSE, .cfun = "_qmod", .rtyp = REAL, .rlen = 16, .anum = 2, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
266 {.ffun = "qnint", .spec = FALSE, .cfun = "_qnint", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
267 {.ffun = "qsign", .spec = FALSE, .cfun = "_sign", .rtyp = REAL, .rlen = 16, .anum = 2, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
268 {.ffun = "qsinh", .spec = FALSE, .cfun = "sinhq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xsinh, .f2 = NO_FUN, .f3 = NO_FUN},
269 {.ffun = "qsin", .spec = TRUE, .cfun = "sinq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xsin, .f2 = NO_FUN, .f3 = NO_FUN},
270 {.ffun = "qsqrt", .spec = TRUE, .cfun = "sqrtq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xsqrt, .f2 = NO_FUN, .f3 = NO_FUN},
271 {.ffun = "qtanh", .spec = FALSE, .cfun = "tanhq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xtanh, .f2 = NO_FUN, .f3 = NO_FUN},
272 {.ffun = "qtan", .spec = TRUE, .cfun = "tanq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 16, .f1 = xtan, .f2 = NO_FUN, .f3 = NO_FUN},
273 // REAL*32
274 {.ffun = "abs", .spec = FALSE, .cfun = "xabs", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
275 {.ffun = "acosh", .spec = FALSE, .cfun = "xacosh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xacosh, .f2 = NO_FUN, .f3 = NO_FUN},
276 {.ffun = "acos", .spec = FALSE, .cfun = "xacos", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xacos, .f2 = NO_FUN, .f3 = NO_FUN},
277 {.ffun = "asinh", .spec = FALSE, .cfun = "xasinh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xasinh, .f2 = NO_FUN, .f3 = NO_FUN},
278 {.ffun = "asin", .spec = FALSE, .cfun = "xasin", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xasin, .f2 = NO_FUN, .f3 = NO_FUN},
279 {.ffun = "atan2", .spec = FALSE, .cfun = "xatan2", .rtyp = REAL, .rlen = 32, .anum = 2, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
280 {.ffun = "atanh", .spec = FALSE, .cfun = "xatanh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xatanh, .f2 = NO_FUN, .f3 = NO_FUN},
281 {.ffun = "atan", .spec = FALSE, .cfun = "xatan", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xatan, .f2 = NO_FUN, .f3 = NO_FUN},
282 {.ffun = "cosh", .spec = FALSE, .cfun = "xcosh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xcosh, .f2 = NO_FUN, .f3 = NO_FUN},
283 {.ffun = "cos", .spec = FALSE, .cfun = "xcos", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xcos, .f2 = NO_FUN, .f3 = NO_FUN},
284 {.ffun = "cotan", .spec = FALSE, .cfun = "xcotan", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xcotan, .f2 = NO_FUN, .f3 = NO_FUN},
285 {.ffun = "dble", .spec = FALSE, .cfun = "xtodbl", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
286 {.ffun = "exp", .spec = FALSE, .cfun = "xexp", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xexp, .f2 = NO_FUN, .f3 = NO_FUN},
287 {.ffun = "int", .spec = FALSE, .cfun = "_xint4", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
288 {.ffun = "log10", .spec = FALSE, .cfun = "xlog10", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xlog10, .f2 = NO_FUN, .f3 = NO_FUN},
289 {.ffun = "log", .spec = FALSE, .cfun = "xlog", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xlog, .f2 = NO_FUN, .f3 = NO_FUN},
290 {.ffun = "max", .spec = FALSE, .cfun = "_xmax", .rtyp = REAL, .rlen = 32, .anum = 0, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
291 {.ffun = "min", .spec = FALSE, .cfun = "_xmin", .rtyp = REAL, .rlen = 32, .anum = 0, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
292 {.ffun = "mod", .spec = FALSE, .cfun = "_xmod", .rtyp = REAL, .rlen = 32, .anum = 2, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
293 {.ffun = "nint", .spec = FALSE, .cfun = "_xnint4", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
294 {.ffun = "qext", .spec = FALSE, .cfun = "_xtoquad", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
295 {.ffun = "real", .spec = FALSE, .cfun = "(real_4) xtodbl", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
296 {.ffun = "sign", .spec = FALSE, .cfun = "_xsgn", .rtyp = REAL, .rlen = 32, .anum = 2, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
297 {.ffun = "sinh", .spec = FALSE, .cfun = "xsinh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xsinh, .f2 = NO_FUN, .f3 = NO_FUN},
298 {.ffun = "sin", .spec = FALSE, .cfun = "xsin", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xsin, .f2 = NO_FUN, .f3 = NO_FUN},
299 {.ffun = "sqrt", .spec = FALSE, .cfun = "xsqrt", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xsqrt, .f2 = NO_FUN, .f3 = NO_FUN},
300 {.ffun = "tanh", .spec = FALSE, .cfun = "xtanh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xtanh, .f2 = NO_FUN, .f3 = NO_FUN},
301 {.ffun = "tan", .spec = FALSE, .cfun = "xtan", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xtan, .f2 = NO_FUN, .f3 = NO_FUN},
302 {.ffun = "xext", .spec = FALSE, .cfun = "", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
303 //
304 {.ffun = "qext", .spec = FALSE, .cfun = "_xtoquad", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
305 {.ffun = "real", .spec = FALSE, .cfun = "(real_4) xtodbl", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
306 {.ffun = "xabs", .spec = FALSE, .cfun = "xabs", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
307 {.ffun = "xacosh", .spec = FALSE, .cfun = "xacosh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xacosh, .f2 = NO_FUN, .f3 = NO_FUN},
308 {.ffun = "xacos", .spec = TRUE, .cfun = "xacos", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xacos, .f2 = NO_FUN, .f3 = NO_FUN},
309 {.ffun = "xasinh", .spec = FALSE, .cfun = "xasinh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xasinh, .f2 = NO_FUN, .f3 = NO_FUN},
310 {.ffun = "xasin", .spec = TRUE, .cfun = "xasin", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xasin, .f2 = NO_FUN, .f3 = NO_FUN},
311 {.ffun = "xatan2", .spec = TRUE, .cfun = "xatan2", .rtyp = REAL, .rlen = 32, .anum = 2, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
312 {.ffun = "xatanh", .spec = FALSE, .cfun = "xatanh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xatanh, .f2 = NO_FUN, .f3 = NO_FUN},
313 {.ffun = "xatan", .spec = TRUE, .cfun = "xatan", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xatan, .f2 = NO_FUN, .f3 = NO_FUN},
314 {.ffun = "xcosh", .spec = FALSE, .cfun = "xcosh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xcosh, .f2 = NO_FUN, .f3 = NO_FUN},
315 {.ffun = "xcos", .spec = TRUE, .cfun = "xcos", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xcos, .f2 = NO_FUN, .f3 = NO_FUN},
316 {.ffun = "xcotan", .spec = FALSE, .cfun = "xcotan", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xcotan, .f2 = NO_FUN, .f3 = NO_FUN},
317 {.ffun = "xdble", .spec = FALSE, .cfun = "xtodbl", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
318 {.ffun = "xexp", .spec = FALSE, .cfun = "xexp", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xexp, .f2 = NO_FUN, .f3 = NO_FUN},
319 {.ffun = "xext", .spec = FALSE, .cfun = "", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
320 {.ffun = "xint", .spec = FALSE, .cfun = "_xint4", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
321 {.ffun = "xlog10", .spec = TRUE, .cfun = "xlog10", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xlog10, .f2 = NO_FUN, .f3 = NO_FUN},
322 {.ffun = "xlog", .spec = TRUE, .cfun = "xlog", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xlog, .f2 = NO_FUN, .f3 = NO_FUN},
323 {.ffun = "xmax", .spec = FALSE, .cfun = "_xmax", .rtyp = REAL, .rlen = 32, .anum = 0, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
324 {.ffun = "xmin", .spec = FALSE, .cfun = "_xmin", .rtyp = REAL, .rlen = 32, .anum = 0, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
325 {.ffun = "xmod", .spec = FALSE, .cfun = "_xmod", .rtyp = REAL, .rlen = 32, .anum = 2, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
326 {.ffun = "xnint", .spec = FALSE, .cfun = "_xnint4", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
327 {.ffun = "xsign", .spec = FALSE, .cfun = "_xsgn", .rtyp = REAL, .rlen = 32, .anum = 2, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
328 {.ffun = "xsinh", .spec = FALSE, .cfun = "xsinh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xsinh, .f2 = NO_FUN, .f3 = NO_FUN},
329 {.ffun = "xsin", .spec = TRUE, .cfun = "xsin", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xsin, .f2 = NO_FUN, .f3 = NO_FUN},
330 {.ffun = "xsqrt", .spec = TRUE, .cfun = "xsqrt", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xsqrt, .f2 = NO_FUN, .f3 = NO_FUN},
331 {.ffun = "xtanh", .spec = FALSE, .cfun = "xtanh", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xtanh, .f2 = NO_FUN, .f3 = NO_FUN},
332 {.ffun = "xtan", .spec = TRUE, .cfun = "xtan", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 32, .f1 = xtan, .f2 = NO_FUN, .f3 = NO_FUN},
333 // COMPLEX*8
334 {.ffun = "aimag", .spec = FALSE, .cfun = "cimagf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
335 {.ffun = "cmplx", .spec = FALSE, .cfun = "CMPLXF", .rtyp = COMPLEX, .rlen = 8, .anum = 2, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
336 {.ffun = "cmplx", .spec = FALSE, .cfun = "(complex_8)", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 4, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
337 {.ffun = "conjg", .spec = FALSE, .cfun = "conjf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
338 {.ffun = "imag", .spec = FALSE, .cfun = "cimagf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
339 {.ffun = "real", .spec = FALSE, .cfun = "crealf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
340 //
341 {.ffun = "int", .spec = FALSE, .cfun = "(int_4) crealf", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
342 {.ffun = "abs", .spec = FALSE, .cfun = "cabsf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
343 {.ffun = "cos", .spec = FALSE, .cfun = "ccosf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxcos},
344 {.ffun = "exp", .spec = FALSE, .cfun = "cexpf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxexp},
345 {.ffun = "log", .spec = FALSE, .cfun = "clogf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxlog},
346 {.ffun = "sin", .spec = FALSE, .cfun = "csinf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsin},
347 {.ffun = "sqrt", .spec = FALSE, .cfun = "csqrtf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsqrt},
348 {.ffun = "tan", .spec = FALSE, .cfun = "ctanf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxtan},
349 //
350 {.ffun = "cint", .spec = FALSE, .cfun = "(int_4) crealf", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
351 {.ffun = "cabs", .spec = FALSE, .cfun = "cabsf", .rtyp = REAL, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
352 {.ffun = "ccos", .spec = FALSE, .cfun = "ccosf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxcos},
353 {.ffun = "cexp", .spec = FALSE, .cfun = "cexpf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxexp},
354 {.ffun = "clog", .spec = FALSE, .cfun = "clogf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxlog},
355 {.ffun = "csin", .spec = FALSE, .cfun = "csinf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsin},
356 {.ffun = "csqrt", .spec = FALSE, .cfun = "csqrtf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsqrt},
357 {.ffun = "ctan", .spec = FALSE, .cfun = "ctanf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxtan},
358 //
359 {.ffun = "ccosf", .spec = TRUE, .cfun = "ccosf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxcos},
360 {.ffun = "cexpf", .spec = TRUE, .cfun = "cexpf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxexp},
361 {.ffun = "clogf", .spec = TRUE, .cfun = "clogf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxlog},
362 {.ffun = "csinf", .spec = TRUE, .cfun = "csinf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsin},
363 {.ffun = "csqrtf", .spec = TRUE, .cfun = "csqrtf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsqrt},
364 {.ffun = "ctanf", .spec = TRUE, .cfun = "ctanf", .rtyp = COMPLEX, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxtan},
365 // COMPLEX*16
366 {.ffun = "cmplx", .spec = FALSE, .cfun = "(complex_16)", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
367 {.ffun = "dcmplx", .spec = FALSE, .cfun = "(complex_16)", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
368 {.ffun = "cmplx", .spec = FALSE, .cfun = "CMPLX", .rtyp = COMPLEX, .rlen = 16, .anum = 2, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
369 {.ffun = "dcmplx", .spec = FALSE, .cfun = "CMPLX", .rtyp = COMPLEX, .rlen = 16, .anum = 2, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
370 {.ffun = "conjg", .spec = FALSE, .cfun = "conj", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
371 {.ffun = "real", .spec = FALSE, .cfun = "creal", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
372 {.ffun = "imag", .spec = FALSE, .cfun = "cimag", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
373 //
374 {.ffun = "int", .spec = FALSE, .cfun = "(int_4) creal", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
375 {.ffun = "abs", .spec = FALSE, .cfun = "cabs", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
376 {.ffun = "cos", .spec = FALSE, .cfun = "ccos", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxcos},
377 {.ffun = "exp", .spec = FALSE, .cfun = "cexp", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxexp},
378 {.ffun = "log", .spec = FALSE, .cfun = "clog", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxlog},
379 {.ffun = "sin", .spec = FALSE, .cfun = "csin", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsin},
380 {.ffun = "sqrt", .spec = FALSE, .cfun = "csqrt", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsqrt},
381 {.ffun = "tan", .spec = FALSE, .cfun = "ctan", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxtan},
382 //
383 {.ffun = "cint", .spec = FALSE, .cfun = "(int_4) creal", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
384 {.ffun = "cabs", .spec = FALSE, .cfun = "cabs", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
385 {.ffun = "ccos", .spec = FALSE, .cfun = "ccos", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxcos},
386 {.ffun = "cexp", .spec = FALSE, .cfun = "cexp", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxexp},
387 {.ffun = "clog", .spec = FALSE, .cfun = "clog", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxlog},
388 {.ffun = "csin", .spec = FALSE, .cfun = "csin", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsin},
389 {.ffun = "csqrt", .spec = FALSE, .cfun = "csqrt", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsqrt},
390 {.ffun = "ctan", .spec = FALSE, .cfun = "ctan", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxtan},
391 //
392 {.ffun = "dble", .spec = FALSE, .cfun = "creal", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
393 {.ffun = "dimag", .spec = FALSE, .cfun = "cimag", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
394 {.ffun = "dreal", .spec = FALSE, .cfun = "creal", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
395 {.ffun = "dconjg", .spec = FALSE, .cfun = "conj", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
396 //
397 {.ffun = "cdint", .spec = FALSE, .cfun = "(int_4) creal", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
398 {.ffun = "cdabs", .spec = FALSE, .cfun = "cabs", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
399 {.ffun = "cdcos", .spec = TRUE, .cfun = "ccos", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxcos},
400 {.ffun = "cdexp", .spec = TRUE, .cfun = "cexp", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxexp},
401 {.ffun = "cdlog", .spec = TRUE, .cfun = "clog", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxlog},
402 {.ffun = "cdsin", .spec = TRUE, .cfun = "csin", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsin},
403 {.ffun = "cdsqrt", .spec = TRUE, .cfun = "csqrt", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsqrt},
404 {.ffun = "cdtan", .spec = TRUE, .cfun = "ctan", .rtyp = COMPLEX, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxtan},
405 {.ffun = "cdabs", .spec = FALSE, .cfun = "_zabs_16", .rtyp = REAL, .rlen = 8, .anum = 1, .atyp = REAL, .alen = 8, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
406 // COMPLEX*32
407 {.ffun = "cmplx", .spec = FALSE, .cfun = "(complex_32)", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
408 {.ffun = "qcmplx", .spec = FALSE, .cfun = "(complex_32)", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
409 {.ffun = "cmplx", .spec = FALSE, .cfun = "CMPLXQ", .rtyp = COMPLEX, .rlen = 32, .anum = 2, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
410 {.ffun = "qcmplx", .spec = FALSE, .cfun = "CMPLXQ", .rtyp = COMPLEX, .rlen = 32, .anum = 2, .atyp = REAL, .alen = 16, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
411 {.ffun = "conjg", .spec = FALSE, .cfun = "conjq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
412 {.ffun = "imag", .spec = FALSE, .cfun = "cimagq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
413 {.ffun = "real", .spec = FALSE, .cfun = "crealq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
414 //
415 {.ffun = "int", .spec = FALSE, .cfun = "(int_4) crealq", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
416 {.ffun = "abs", .spec = FALSE, .cfun = "cabsq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
417 {.ffun = "cos", .spec = FALSE, .cfun = "ccosq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxcos},
418 {.ffun = "exp", .spec = FALSE, .cfun = "cexpq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxexp},
419 {.ffun = "log", .spec = FALSE, .cfun = "clogq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxlog},
420 {.ffun = "sin", .spec = FALSE, .cfun = "csinq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsin},
421 {.ffun = "sqrt", .spec = FALSE, .cfun = "csqrtq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsqrt},
422 {.ffun = "tan", .spec = FALSE, .cfun = "ctanq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxtan},
423 //
424 {.ffun = "cint", .spec = FALSE, .cfun = "(int_4) crealq", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
425 {.ffun = "cabs", .spec = FALSE, .cfun = "cabsq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
426 {.ffun = "ccos", .spec = FALSE, .cfun = "ccosq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxcos},
427 {.ffun = "cexp", .spec = FALSE, .cfun = "cexpq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxexp},
428 {.ffun = "clog", .spec = FALSE, .cfun = "clogq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxlog},
429 {.ffun = "csin", .spec = FALSE, .cfun = "csinq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsin},
430 {.ffun = "csqrt", .spec = FALSE, .cfun = "csqrtq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsqrt},
431 {.ffun = "ctan", .spec = FALSE, .cfun = "ctanq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxtan},
432 //
433 {.ffun = "qconjg", .spec = FALSE, .cfun = "conjq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
434 {.ffun = "qimag", .spec = FALSE, .cfun = "cimagq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
435 {.ffun = "qreal", .spec = FALSE, .cfun = "crealq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
436 //
437 {.ffun = "cqint", .spec = FALSE, .cfun = "(int_4) crealq", .rtyp = INTEGER, .rlen = 4, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
438 {.ffun = "cqabs", .spec = FALSE, .cfun = "cabsq", .rtyp = REAL, .rlen = 16, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
439 {.ffun = "cqcos", .spec = TRUE, .cfun = "ccosq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxcos},
440 {.ffun = "cqexp", .spec = TRUE, .cfun = "cexpq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxexp},
441 {.ffun = "cqlog", .spec = TRUE, .cfun = "clogq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxlog},
442 {.ffun = "cqsin", .spec = TRUE, .cfun = "csinq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsin},
443 {.ffun = "cqsqrt", .spec = TRUE, .cfun = "csqrtq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxsqrt},
444 {.ffun = "cqtan", .spec = TRUE, .cfun = "ctanq", .rtyp = COMPLEX, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = cxtan},
445 // COMPLEX*64
446 {.ffun = "cmplx", .spec = FALSE, .cfun = "CMPLXX", .rtyp = COMPLEX, .rlen = 64, .anum = 2, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
447 {.ffun = "conjg", .spec = FALSE, .cfun = "cxconj", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
448 {.ffun = "imag", .spec = FALSE, .cfun = "cxim", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
449 {.ffun = "real", .spec = FALSE, .cfun = "cxre", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
450 //
451 {.ffun = "abs", .spec = FALSE, .cfun = "cxabs", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
452 {.ffun = "cos", .spec = FALSE, .cfun = "cxcos", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
453 {.ffun = "exp", .spec = FALSE, .cfun = "cxexp", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
454 {.ffun = "log", .spec = FALSE, .cfun = "cxlog", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
455 {.ffun = "sin", .spec = FALSE, .cfun = "cxsin", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
456 {.ffun = "sqrt", .spec = FALSE, .cfun = "cxsqrt", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
457 {.ffun = "tan", .spec = FALSE, .cfun = "cxtan", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
458 //
459 {.ffun = "cabs", .spec = FALSE, .cfun = "cxabs", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
460 {.ffun = "ccos", .spec = FALSE, .cfun = "cxcos", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
461 {.ffun = "cexp", .spec = FALSE, .cfun = "cxexp", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
462 {.ffun = "clog", .spec = FALSE, .cfun = "cxlog", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
463 {.ffun = "csin", .spec = FALSE, .cfun = "cxsin", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
464 {.ffun = "csqrt", .spec = FALSE, .cfun = "cxsqrt", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
465 {.ffun = "ctan", .spec = FALSE, .cfun = "cxtan", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
466 //
467 {.ffun = "xcmplx", .spec = FALSE, .cfun = "CMPLXX", .rtyp = COMPLEX, .rlen = 64, .anum = 2, .atyp = REAL, .alen = 32, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
468 {.ffun = "xconjg", .spec = FALSE, .cfun = "cxconj", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
469 {.ffun = "ximag", .spec = FALSE, .cfun = "cxim", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
470 {.ffun = "xreal", .spec = FALSE, .cfun = "cxre", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
471 //
472 {.ffun = "cxabs", .spec = FALSE, .cfun = "cxabs", .rtyp = REAL, .rlen = 32, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
473 {.ffun = "cxcos", .spec = TRUE, .cfun = "cxcos", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
474 {.ffun = "cxexp", .spec = TRUE, .cfun = "cxexp", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
475 {.ffun = "cxlog", .spec = TRUE, .cfun = "cxlog", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
476 {.ffun = "cxsin", .spec = TRUE, .cfun = "cxsin", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
477 {.ffun = "cxsqrt", .spec = TRUE, .cfun = "cxsqrt", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
478 {.ffun = "cxtan", .spec = TRUE, .cfun = "cxtan", .rtyp = COMPLEX, .rlen = 64, .anum = 1, .atyp = COMPLEX, .alen = 64, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN},
479 // End of list
480 {.ffun = NO_TEXT, .spec = FALSE, .cfun = NO_TEXT, .rtyp = NOTYPE, .rlen = 0, .anum = 0, .atyp = NOTYPE, .alen = 0, .f1 = NO_FUN, .f2 = NO_FUN, .f3 = NO_FUN}
481 };
482
483 int_4 is_intrins (char *name)
484 {
485 for (int_4 k = 0; fun[k].ffun != NO_TEXT; k++) {
486 if (EQUAL (name, fun[k].ffun)) {
487 return TRUE;
488 }
489 }
490 return FALSE;
491 }
492
493 int_4 is_specific (char *name)
494 {
495 // Match name for table to approve for INTRINSIC statement.
496 for (int_4 k = 0; fun[k].ffun != NO_TEXT; k++) {
497 if (EQUAL (name, fun[k].ffun)) {
498 return fun[k].spec;
499 }
500 }
501 return FALSE;
502 }
503
504 int_4 intrinsic_call (char *name, EXPR * loc)
505 {
506 EXPR lhs, rhs;
507 // If 'name' is not an intrinsic function, stop here.
508 if (! is_intrins (name)) {
509 return FALSE;
510 }
511 //
512 memset (loc, 0, sizeof (EXPR));
513 (void) scan (EXPECT_NONE);
514 if (! TOKEN ("(")) {
515 UNSCAN;
516 return FALSE;
517 }
518 (void) scan (EXPECT_NONE);
519 express (&lhs, NOTYPE, 0);
520 if (!valid_expr (&lhs)) {
521 return FALSE;
522 }
523 (void) scan (EXPECT_NONE);
524 if (!TOKEN (",") && (lhs.mode.type == CHARACTER)) {
525 // 1 operand, CHARACTER, length independent.
526 UNSCAN;
527 for (int_4 k = 0; fun[k].ffun != NO_TEXT; k++) {
528 INTRINS *F = &fun[k];
529 if (EQUAL (name, F->ffun) && (lhs.mode.type == F->atyp)) {
530 _srecordf (loc->str, "%s (%s)", F->cfun, lhs.str);
531 loc->mode = (MODE) { .type = F->rtyp,.len = F->rlen,.dim = 0};
532 (void) scan (")");
533 return TRUE;
534 }
535 }
536 RECORD str;
537 _srecordf (str, "%s (%s)", name, qtype (&(lhs.mode)));
538 ERROR (2001, "undefined", str);
539 (void) scan (")");
540 return FALSE;
541 } else if (!TOKEN (",")) {
542 // 1 operand.
543 UNSCAN;
544 for (int_4 k = 0; fun[k].ffun != NO_TEXT; k++) {
545 INTRINS *F = &fun[k];
546 if (EQUAL (name, F->ffun) && F->anum == 1 && accept_mode (lhs.mode.type, lhs.mode.len, F->atyp, F->alen)) {
547 if (fold_intrinsic (F, &lhs, NO_EXPR)) {
548 _srecordf (loc->str, "%s", lhs.str);
549 loc->variant = EXPR_CONST;
550 loc->mode = (MODE) { .type = F->rtyp, .len = _max (F->rlen, lhs.mode.len), .dim = 0};
551 } else {
552 _srecordf (loc->str, "%s (%s)", F->cfun, lhs.str);
553 loc->mode = (MODE) { .type = F->rtyp, .len = F->rlen, .dim = 0};
554 }
555 (void) scan (")");
556 return TRUE;
557 }
558 }
559 RECORD str;
560 _srecordf (str, "%s (%s)", name, qtype (&(lhs.mode)));
561 ERROR (2002, "undefined", str);
562 (void) scan (")");
563 return FALSE;
564 } else {
565 // >= 2 operands
566 (void) scan (EXPECT_NONE);
567 express (&rhs, NOTYPE, 0);
568 if (!valid_expr (&rhs)) {
569 return FALSE;
570 }
571 int_4 llen = lhs.mode.len, rlen = rhs.mode.len;
572 if ((lhs.variant == EXPR_CONST || rhs.variant == EXPR_CONST)) {
573 // Cross terms involving constants - adapt to non-constant.
574 if (lhs.variant != EXPR_CONST) {
575 rlen = llen;
576 } else if (rhs.variant != EXPR_CONST) {
577 llen = rlen;
578 } else {
579 llen = rlen = _max (llen, rlen);
580 }
581 } else {
582 llen = rlen = _max (llen, rlen);
583 }
584 for (int_4 k = 0; fun[k].ffun != NO_TEXT; k++) {
585 INTRINS *F = &fun[k];
586 if (EQUAL (name, F->ffun) && F->anum != 1 && accept_mode (lhs.mode.type, lhs.mode.len, F->atyp, F->alen) && accept_mode (rhs.mode.type, rhs.mode.len, F->atyp, F->alen)) {
587 loc->mode = (MODE) {.type = F->rtyp, .len = F->rlen, .dim = 0};
588 (void) scan (EXPECT_NONE);
589 if (TOKEN (")") && (F->anum == 2 || F->anum == 0)) {
590 // 2 operands
591 if (fold_intrinsic (F, &lhs, &rhs)) {
592 _srecordf (loc->str, "%s", lhs.str);
593 loc->variant = EXPR_CONST;
594 loc->mode = (MODE) { .type = F->rtyp, .len = _max (lhs.mode.len, rhs.mode.len) , .dim = 0};
595 } else {
596 _srecordf (loc->str, "%s (%s, %s)", F->cfun, lhs.str, rhs.str);
597 }
598 return TRUE;
599 } else if (TOKEN (",") && F->anum == 0) {
600 // > 2 operands
601 RECORD idf, str, tmp;
602 _srecordf (idf, "%s", edit_tmp (nloctmps++));
603 add_local (idf, loc->mode.type, loc->mode.len, UNIQ, NOPATCH, NOARG, LOCAL, TEMP);
604 str[0] = '\0';
605 _srecordf (str, "%s = %s (%s, %s)", idf, F->cfun, lhs.str, rhs.str);
606 while (TOKEN (",")) {
607 (void) scan (EXPECT_NONE);
608 express (&rhs, NOTYPE, 0);
609 (void) scan (EXPECT_NONE);
610 if (TOKEN (",")) {
611 _srecordf (tmp, ", %s = %s (%s, %s)", idf, F->cfun, idf, rhs.str);
612 } else if (TOKEN (")")) {
613 _srecordf (tmp, ", %s (%s, %s)", F->cfun, idf, rhs.str);
614 } else {
615 EXPECT (2003, ", or )");
616 }
617 bufcat (str, tmp, RECLN);
618 }
619 _srecordf (loc->str, "(%s)", str);
620 return TRUE;
621 } else {
622 SYNTAX (2004, "number of operands");
623 }
624 }
625 }
626 RECORD str;
627 _srecordf (str, "%s (%s, %s)", name, qtype (&(lhs.mode)), qtype (&(rhs.mode)));
628 ERROR (2005, "undefined", str);
629 (void) scan (")");
630 return FALSE;
631 }
632 }
© 2002-2025 J.M. van der Veer (jmvdveer@xs4all.nl)
|