1 | /* Copyright (C) 2004-2023 Free Software Foundation, Inc. |
2 | |
3 | This file is part of GCC. |
4 | |
5 | GCC is free software; you can redistribute it and/or modify it under |
6 | the terms of the GNU General Public License as published by the Free |
7 | Software Foundation; either version 3, or (at your option) any later |
8 | version. |
9 | |
10 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
11 | WARRANTY; without even the implied warranty of MERCHANTABILITY or |
12 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
13 | for more details. |
14 | |
15 | You should have received a copy of the GNU General Public License |
16 | along with GCC; see the file COPYING3. If not see |
17 | <http://www.gnu.org/licenses/>. */ |
18 | |
19 | /* DEFINE_MATH_BUILTIN (CODE, NAME, ARGTYPE) |
20 | NAME The name of the builtin |
21 | SNAME The name of the builtin as a string |
22 | ARGTYPE The type of the arguments. See f95-lang.cc |
23 | |
24 | Use DEFINE_MATH_BUILTIN_C if the complex versions of the builtin are |
25 | also available. */ |
26 | DEFINE_MATH_BUILTIN_C (ACOS, "acos" , 0) |
27 | DEFINE_MATH_BUILTIN_C (ACOSH, "acosh" , 0) |
28 | DEFINE_MATH_BUILTIN_C (ASIN, "asin" , 0) |
29 | DEFINE_MATH_BUILTIN_C (ASINH, "asinh" , 0) |
30 | DEFINE_MATH_BUILTIN_C (ATAN, "atan" , 0) |
31 | DEFINE_MATH_BUILTIN_C (ATANH, "atanh" , 0) |
32 | DEFINE_MATH_BUILTIN (ATAN2, "atan2" , 1) |
33 | DEFINE_MATH_BUILTIN_C (COS, "cos" , 0) |
34 | DEFINE_MATH_BUILTIN_C (COSH, "cosh" , 0) |
35 | DEFINE_MATH_BUILTIN_C (EXP, "exp" , 0) |
36 | DEFINE_MATH_BUILTIN_C (LOG, "log" , 0) |
37 | DEFINE_MATH_BUILTIN_C (LOG10, "log10" , 0) |
38 | DEFINE_MATH_BUILTIN_C (SIN, "sin" , 0) |
39 | DEFINE_MATH_BUILTIN_C (SINH, "sinh" , 0) |
40 | DEFINE_MATH_BUILTIN_C (SQRT, "sqrt" , 0) |
41 | DEFINE_MATH_BUILTIN_C (TAN, "tan" , 0) |
42 | DEFINE_MATH_BUILTIN_C (TANH, "tanh" , 0) |
43 | DEFINE_MATH_BUILTIN (J0, "j0" , 0) |
44 | DEFINE_MATH_BUILTIN (J1, "j1" , 0) |
45 | DEFINE_MATH_BUILTIN (JN, "jn" , 5) |
46 | DEFINE_MATH_BUILTIN (Y0, "y0" , 0) |
47 | DEFINE_MATH_BUILTIN (Y1, "y1" , 0) |
48 | DEFINE_MATH_BUILTIN (YN, "yn" , 5) |
49 | DEFINE_MATH_BUILTIN (ERF, "erf" , 0) |
50 | DEFINE_MATH_BUILTIN (ERFC, "erfc" , 0) |
51 | DEFINE_MATH_BUILTIN (TGAMMA,"tgamma" , 0) |
52 | DEFINE_MATH_BUILTIN (LGAMMA,"lgamma" , 0) |
53 | DEFINE_MATH_BUILTIN (HYPOT, "hypot" , 1) |
54 | |
55 | /* OTHER_BUILTIN (CODE, NAME, PROTOTYPE_TYPE, CONST) |
56 | For floating-point builtins that do not directly correspond to a |
57 | Fortran intrinsic. This is used to map the different variants (float, |
58 | double and long double) and to build the quad-precision decls. */ |
59 | OTHER_BUILTIN (CABS, "cabs" , cabs, true) |
60 | OTHER_BUILTIN (COPYSIGN, "copysign" , 2, true) |
61 | OTHER_BUILTIN (CPOW, "cpow" , cpow, true) |
62 | OTHER_BUILTIN (FABS, "fabs" , 1, true) |
63 | OTHER_BUILTIN (FMA, "fma" , 3, true) |
64 | OTHER_BUILTIN (FMAX, "fmax" , 2, true) |
65 | OTHER_BUILTIN (FMIN, "fmin" , 2, true) |
66 | OTHER_BUILTIN (FMOD, "fmod" , 2, true) |
67 | OTHER_BUILTIN (FREXP, "frexp" , frexp, false) |
68 | OTHER_BUILTIN (LOGB, "logb" , 1, true) |
69 | OTHER_BUILTIN (LLROUND, "llround" , llround, true) |
70 | OTHER_BUILTIN (LROUND, "lround" , lround, true) |
71 | OTHER_BUILTIN (IROUND, "iround" , iround, true) |
72 | OTHER_BUILTIN (NEXTAFTER, "nextafter" , 2, true) |
73 | OTHER_BUILTIN (POW, "pow" , 2, true) |
74 | OTHER_BUILTIN (REMAINDER, "remainder" , 2, true) |
75 | OTHER_BUILTIN (RINT, "rint" , 1, true) |
76 | OTHER_BUILTIN (ROUND, "round" , 1, true) |
77 | OTHER_BUILTIN (SCALBN, "scalbn" , scalbn, true) |
78 | OTHER_BUILTIN (TRUNC, "trunc" , 1, true) |
79 | |