1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
// Copyright Naoki Shibata 2010 - 2017.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
typedef struct {
char *name;
int ulp;
int ulpSuffix;
int funcType;
int flags;
} funcSpec;
/*
ulp : (error bound in ulp) * 10
ulpSuffix:
0 : ""
1 : "_u1"
2 : "_u05"
3 : "_u35"
4 : "_u15"
funcType:
0 : vdouble func(vdouble);
1 : vdouble func(vdouble, vdouble);
2 : vdouble2 func(vdouble); GNUABI : void func(vdouble, double *, double *);
3 : vdouble func(vdouble, vint);
4 : vint func(vdouble);
5 : vdouble func(vdouble, vdouble, vdouble);
6 : vdouble2 func(vdouble); GNUABI : vdouble func(vdouble, double *);
7 : int func(int);
8 : void *func(int);
flags:
1 : No GNUABI
*/
funcSpec funcList[] = {
{ "sin", 35, 0, 0, 0 },
{ "cos", 35, 0, 0, 0 },
{ "sincos", 35, 0, 2, 0 },
{ "tan", 35, 0, 0, 0 },
{ "asin", 35, 0, 0, 0 },
{ "acos", 35, 0, 0, 0 },
{ "atan", 35, 0, 0, 0 },
{ "atan2", 35, 0, 1, 0 },
{ "log", 35, 0, 0, 0 },
{ "cbrt", 35, 0, 0, 0 },
{ "sin", 10, 1, 0, 0 },
{ "cos", 10, 1, 0, 0 },
{ "sincos", 10, 1, 2, 0 },
{ "tan", 10, 1, 0, 0 },
{ "asin", 10, 1, 0, 0 },
{ "acos", 10, 1, 0, 0 },
{ "atan", 10, 1, 0, 0 },
{ "atan2", 10, 1, 1, 0 },
{ "log", 10, 1, 0, 0 },
{ "cbrt", 10, 1, 0, 0 },
{ "exp", 10, 0, 0, 0 },
{ "pow", 10, 0, 1, 0 },
{ "sinh", 10, 0, 0, 0 },
{ "cosh", 10, 0, 0, 0 },
{ "tanh", 10, 0, 0, 0 },
{ "sinh", 35, 3, 0, 0 },
{ "cosh", 35, 3, 0, 0 },
{ "tanh", 35, 3, 0, 0 },
{ "asinh", 10, 0, 0, 0 },
{ "acosh", 10, 0, 0, 0 },
{ "atanh", 10, 0, 0, 0 },
{ "exp2", 10, 0, 0, 0 },
{ "exp10", 10, 0, 0, 0 },
{ "expm1", 10, 0, 0, 0 },
{ "log10", 10, 0, 0, 0 },
{ "log2", 10, 0, 0, 0 },
{ "log1p", 10, 0, 0, 0 },
{ "sincospi", 5, 2, 2, 0 },
{ "sincospi", 35, 3, 2, 0 },
{ "sinpi", 5, 2, 0, 0 },
{ "cospi", 5, 2, 0, 0 },
{ "ldexp", -1, 0, 3, 0 },
{ "ilogb", -1, 0, 4, 0 },
{ "fma", -1, 0, 5, 0 },
{ "sqrt", -1, 0, 0, 0 },
{ "sqrt", 5, 2, 0, 1 },
{ "sqrt", 35, 3, 0, 0 },
{ "hypot", 5, 2, 1, 0 },
{ "hypot", 35, 3, 1, 0 },
{ "fabs", -1, 0, 0, 0 },
{ "copysign", -1, 0, 1, 0 },
{ "fmax", -1, 0, 1, 0 },
{ "fmin", -1, 0, 1, 0 },
{ "fdim", -1, 0, 1, 0 },
{ "trunc", -1, 0, 0, 0 },
{ "floor", -1, 0, 0, 0 },
{ "ceil", -1, 0, 0, 0 },
{ "round", -1, 0, 0, 0 },
{ "rint", -1, 0, 0, 0 },
{ "nextafter", -1, 0, 1, 0 },
{ "frfrexp", -1, 0, 0, 0 },
{ "expfrexp", -1, 0, 4, 0 },
{ "fmod", -1, 0, 1, 0 },
{ "modf", -1, 0, 6, 0 },
{ "lgamma", 10, 1, 0, 0 },
{ "tgamma", 10, 1, 0, 0 },
{ "erf", 10, 1, 0, 0 },
{ "erfc", 15, 4, 0, 0 },
{ "getInt", -1, 0, 7, 1},
{ "getPtr", -1, 0, 8, 1},
{ NULL, -1, 0, 0, 0 },
};
|