3 static int mpf1(struct t *s, float (*f)(float))
12 static int mpf2(struct t *s, float (*f)(float,float))
16 s->y = f(s->x, s->x2);
21 static int mpd1(struct t *s, double (*f)(double))
30 static int mpd2(struct t *s, double (*f)(double, double))
34 s->y = f(s->x, s->x2);
39 static int mpl1(struct t *s, long double (*f)(long double))
48 static int mpl2(struct t *s, long double (*f)(long double, long double))
51 s->y = f(s->x, s->x2);
57 static double sinpi(double x) { return sin(3.141592653589793238*x); }
58 int mpsinpi(struct t *t) { return mpd1(t, sinpi); }
60 static double add(double x, double y) { double z = x + y; return z; }
61 int mpadd(struct t *t) { return mpd2(t, add); }
62 static double mul(double x, double y) { double z = x * y; return z; }
63 int mpmul(struct t *t) { return mpd2(t, mul); }
64 static double div(double x, double y) { double z = x / y; return z; }
65 int mpdiv(struct t *t) { return mpd2(t, div); }
67 int mpacos(struct t *t) { return mpd1(t, acos); }
68 int mpacosf(struct t *t) { return mpf1(t, acosf); }
69 int mpacosl(struct t *t) { return mpl1(t, acosl); }
70 int mpacosh(struct t *t) { return mpd1(t, acosh); }
71 int mpacoshf(struct t *t) { return mpf1(t, acoshf); }
72 int mpacoshl(struct t *t) { return mpl1(t, acoshl); }
73 int mpasin(struct t *t) { return mpd1(t, asin); }
74 int mpasinf(struct t *t) { return mpf1(t, asinf); }
75 int mpasinl(struct t *t) { return mpl1(t, asinl); }
76 int mpasinh(struct t *t) { return mpd1(t, asinh); }
77 int mpasinhf(struct t *t) { return mpf1(t, asinhf); }
78 int mpasinhl(struct t *t) { return mpl1(t, asinhl); }
79 int mpatan(struct t *t) { return mpd1(t, atan); }
80 int mpatanf(struct t *t) { return mpf1(t, atanf); }
81 int mpatanl(struct t *t) { return mpl1(t, atanl); }
82 int mpatan2(struct t *t) { return mpd2(t, atan2); }
83 int mpatan2f(struct t *t) { return mpf2(t, atan2f); }
84 int mpatan2l(struct t *t) { return mpl2(t, atan2l); }
85 int mpatanh(struct t *t) { return mpd1(t, atanh); }
86 int mpatanhf(struct t *t) { return mpf1(t, atanhf); }
87 int mpatanhl(struct t *t) { return mpl1(t, atanhl); }
88 int mpcbrt(struct t *t) { return mpd1(t, cbrt); }
89 int mpcbrtf(struct t *t) { return mpf1(t, cbrtf); }
90 int mpcbrtl(struct t *t) { return mpl1(t, cbrtl); }
91 int mpceil(struct t *t) { return mpd1(t, ceil); }
92 int mpceilf(struct t *t) { return mpf1(t, ceilf); }
93 int mpceill(struct t *t) { return mpl1(t, ceill); }
94 int mpcopysign(struct t *t) { return mpd2(t, copysign); }
95 int mpcopysignf(struct t *t) { return mpf2(t, copysignf); }
96 int mpcopysignl(struct t *t) { return mpl2(t, copysignl); }
97 int mpcos(struct t *t) { return mpd1(t, cos); }
98 int mpcosf(struct t *t) { return mpf1(t, cosf); }
99 int mpcosl(struct t *t) { return mpl1(t, cosl); }
100 int mpcosh(struct t *t) { return mpd1(t, cosh); }
101 int mpcoshf(struct t *t) { return mpf1(t, coshf); }
102 int mpcoshl(struct t *t) { return mpl1(t, coshl); }
103 int mperf(struct t *t) { return mpd1(t, erf); }
104 int mperff(struct t *t) { return mpf1(t, erff); }
105 int mperfl(struct t *t) { return mpl1(t, erfl); }
106 int mperfc(struct t *t) { return mpd1(t, erfc); }
107 int mperfcf(struct t *t) { return mpf1(t, erfcf); }
108 int mperfcl(struct t *t) { return mpl1(t, erfcl); }
109 int mpexp(struct t *t) { return mpd1(t, exp); }
110 int mpexpf(struct t *t) { return mpf1(t, expf); }
111 int mpexpl(struct t *t) { return mpl1(t, expl); }
112 int mpexp2(struct t *t) { return mpd1(t, exp2); }
113 int mpexp2f(struct t *t) { return mpf1(t, exp2f); }
114 int mpexp2l(struct t *t) { return mpl1(t, exp2l); }
115 int mpexpm1(struct t *t) { return mpd1(t, expm1); }
116 int mpexpm1f(struct t *t) { return mpf1(t, expm1f); }
117 int mpexpm1l(struct t *t) { return mpl1(t, expm1l); }
118 int mpfabs(struct t *t) { return mpd1(t, fabs); }
119 int mpfabsf(struct t *t) { return mpf1(t, fabsf); }
120 int mpfabsl(struct t *t) { return mpl1(t, fabsl); }
121 int mpfdim(struct t *t) { return mpd2(t, fdim); }
122 int mpfdimf(struct t *t) { return mpf2(t, fdimf); }
123 int mpfdiml(struct t *t) { return mpl2(t, fdiml); }
124 int mpfloor(struct t *t) { return mpd1(t, floor); }
125 int mpfloorf(struct t *t) { return mpf1(t, floorf); }
126 int mpfloorl(struct t *t) { return mpl1(t, floorl); }
127 int mpfmax(struct t *t) { return mpd2(t, fmax); }
128 int mpfmaxf(struct t *t) { return mpf2(t, fmaxf); }
129 int mpfmaxl(struct t *t) { return mpl2(t, fmaxl); }
130 int mpfmin(struct t *t) { return mpd2(t, fmin); }
131 int mpfminf(struct t *t) { return mpf2(t, fminf); }
132 int mpfminl(struct t *t) { return mpl2(t, fminl); }
133 int mpfmod(struct t *t) { return mpd2(t, fmod); }
134 int mpfmodf(struct t *t) { return mpf2(t, fmodf); }
135 int mpfmodl(struct t *t) { return mpl2(t, fmodl); }
136 int mphypot(struct t *t) { return mpd2(t, hypot); }
137 int mphypotf(struct t *t) { return mpf2(t, hypotf); }
138 int mphypotl(struct t *t) { return mpl2(t, hypotl); }
139 int mplog(struct t *t) { return mpd1(t, log); }
140 int mplogf(struct t *t) { return mpf1(t, logf); }
141 int mplogl(struct t *t) { return mpl1(t, logl); }
142 int mplog10(struct t *t) { return mpd1(t, log10); }
143 int mplog10f(struct t *t) { return mpf1(t, log10f); }
144 int mplog10l(struct t *t) { return mpl1(t, log10l); }
145 int mplog1p(struct t *t) { return mpd1(t, log1p); }
146 int mplog1pf(struct t *t) { return mpf1(t, log1pf); }
147 int mplog1pl(struct t *t) { return mpl1(t, log1pl); }
148 int mplog2(struct t *t) { return mpd1(t, log2); }
149 int mplog2f(struct t *t) { return mpf1(t, log2f); }
150 int mplog2l(struct t *t) { return mpl1(t, log2l); }
151 int mplogb(struct t *t) { return mpd1(t, logb); }
152 int mplogbf(struct t *t) { return mpf1(t, logbf); }
153 int mplogbl(struct t *t) { return mpl1(t, logbl); }
154 int mpnearbyint(struct t *t) { return mpd1(t, nearbyint); }
155 int mpnearbyintf(struct t *t) { return mpf1(t, nearbyintf); }
156 int mpnearbyintl(struct t *t) { return mpl1(t, nearbyintl); }
157 int mpnextafter(struct t *t) { return mpd2(t, nextafter); }
158 int mpnextafterf(struct t *t) { return mpf2(t, nextafterf); }
159 int mpnextafterl(struct t *t) { return mpl2(t, nextafterl); }
160 int mpnexttoward(struct t *t)
162 feclearexcept(FE_ALL_EXCEPT);
163 t->y = nexttoward(t->x, t->x2);
168 int mpnexttowardf(struct t *t)
170 feclearexcept(FE_ALL_EXCEPT);
171 t->y = nexttowardf(t->x, t->x2);
176 int mpnexttowardl(struct t *t) { return mpl2(t, nexttowardl); }
177 int mppow(struct t *t) { return mpd2(t, pow); }
178 int mppowf(struct t *t) { return mpf2(t, powf); }
179 int mppowl(struct t *t) { return mpl2(t, powl); }
180 int mpremainder(struct t *t) { return mpd2(t, remainder); }
181 int mpremainderf(struct t *t) { return mpf2(t, remainderf); }
182 int mpremainderl(struct t *t) { return mpl2(t, remainderl); }
183 int mprint(struct t *t) { return mpd1(t, rint); }
184 int mprintf(struct t *t) { return mpf1(t, rintf); }
185 int mprintl(struct t *t) { return mpl1(t, rintl); }
186 int mpround(struct t *t) { return mpd1(t, round); }
187 int mproundf(struct t *t) { return mpf1(t, roundf); }
188 int mproundl(struct t *t) { return mpl1(t, roundl); }
189 int mpsin(struct t *t) { return mpd1(t, sin); }
190 int mpsinf(struct t *t) { return mpf1(t, sinf); }
191 int mpsinl(struct t *t) { return mpl1(t, sinl); }
192 int mpsinh(struct t *t) { return mpd1(t, sinh); }
193 int mpsinhf(struct t *t) { return mpf1(t, sinhf); }
194 int mpsinhl(struct t *t) { return mpl1(t, sinhl); }
195 int mpsqrt(struct t *t) { return mpd1(t, sqrt); }
196 int mpsqrtf(struct t *t) { return mpf1(t, sqrtf); }
197 int mpsqrtl(struct t *t) { return mpl1(t, sqrtl); }
198 int mptan(struct t *t) { return mpd1(t, tan); }
199 int mptanf(struct t *t) { return mpf1(t, tanf); }
200 int mptanl(struct t *t) { return mpl1(t, tanl); }
201 int mptanh(struct t *t) { return mpd1(t, tanh); }
202 int mptanhf(struct t *t) { return mpf1(t, tanhf); }
203 int mptanhl(struct t *t) { return mpl1(t, tanhl); }
204 int mptgamma(struct t *t) { return mpd1(t, tgamma); }
205 int mptgammaf(struct t *t) { return mpf1(t, tgammaf); }
206 int mptgammal(struct t *t) { return mpl1(t, tgammal); }
207 int mptrunc(struct t *t) { return mpd1(t, trunc); }
208 int mptruncf(struct t *t) { return mpf1(t, truncf); }
209 int mptruncl(struct t *t) { return mpl1(t, truncl); }
210 int mpj0(struct t *t) { return mpd1(t, j0); }
211 int mpj1(struct t *t) { return mpd1(t, j1); }
212 int mpy0(struct t *t) { return mpd1(t, y0); }
213 int mpy1(struct t *t) { return mpd1(t, y1); }
214 int mpscalb(struct t *t) { return mpd2(t, scalb); }
215 int mpscalbf(struct t *t) { return mpf2(t, scalbf); }
216 int mpj0f(struct t *t) { return mpf1(t, j0f); }
217 int mpj0l(struct t *t) { return -1;}//mpl1(t, j0l); }
218 int mpj1f(struct t *t) { return mpf1(t, j1f); }
219 int mpj1l(struct t *t) { return -1;}//mpl1(t, j1l); }
220 int mpy0f(struct t *t) { return mpf1(t, y0f); }
221 int mpy0l(struct t *t) { return -1;}//mpl1(t, y0l); }
222 int mpy1f(struct t *t) { return mpf1(t, y1f); }
223 int mpy1l(struct t *t) { return -1;}//mpl1(t, y1l); }
224 int mpexp10(struct t *t) { return mpd1(t, exp10); }
225 int mpexp10f(struct t *t) { return mpf1(t, exp10f); }
226 int mpexp10l(struct t *t) { return mpl1(t, exp10l); }
227 int mppow10(struct t *t) { return mpd1(t, pow10); }
228 int mppow10f(struct t *t) { return mpf1(t, pow10f); }
229 int mppow10l(struct t *t) { return mpl1(t, pow10l); }
232 int mp##n(struct t *t) \
236 t->y = n(t->x, t->i); \
237 t->e = getexcept(); \
252 int mp##n(struct t *t) \
257 t->y = n(t->x, &i); \
258 t->e = getexcept(); \
270 int mplgamma(struct t *t)
280 int mplgammaf(struct t *t)
284 t->y = lgammaf(t->x);
290 int mplgammal(struct t *t)
294 t->y = lgammal(t->x);
301 int mp##n(struct t *t) \
305 t->e = getexcept(); \
325 int mpmodf(struct t *t)
331 t->y = modf(t->x, &y2);
337 int mpmodff(struct t *t)
343 t->y = modff(t->x, &y2);
349 int mpmodfl(struct t *t)
353 t->y = modfl(t->x, &t->y2);
358 int mpsincos(struct t *t)
364 sincos(t->x, &y, &y2);
371 int mpsincosf(struct t *t)
377 sincosf(t->x, &y, &y2);
384 int mpsincosl(struct t *t)
388 sincosl(t->x, &t->y, &t->y2);
393 #define mp_ff_fi(n) \
394 int mp##n(struct t *t) \
399 t->y = n(t->x, t->x2, &i); \
400 t->e = getexcept(); \
409 #define mp_fff_f(n) \
410 int mp##n(struct t *t) \
414 t->y = n(t->x, t->x2, t->x3); \
415 t->e = getexcept(); \
424 int mp##n(struct t *t) \
428 t->y = n(t->i, t->x); \
429 t->e = getexcept(); \