+int mpmodf(struct t *t)
+{
+ double y2;
+
+ t->dy = t->dy2 = 0;
+ setupfenv(t->r);
+ t->y = modf(t->x, &y2);
+ t->y2 = y2;
+ t->e = getexcept();
+ return 0;
+}
+
+int mpmodff(struct t *t)
+{
+ float y2;
+
+ t->dy = t->dy2 = 0;
+ setupfenv(t->r);
+ t->y = modff(t->x, &y2);
+ t->y2 = y2;
+ t->e = getexcept();
+ return 0;
+}
+
+int mpmodfl(struct t *t)
+{
+ t->dy = t->dy2 = 0;
+ setupfenv(t->r);
+ t->y = modfl(t->x, &t->y2);
+ t->e = getexcept();
+ return 0;
+}
+
+int mpsincos(struct t *t)
+{
+ double y, y2;
+
+ t->dy = t->dy2 = 0;
+ setupfenv(t->r);
+ sincos(t->x, &y, &y2);
+ t->y = y;
+ t->y2 = y2;
+ t->e = getexcept();
+ return 0;
+}
+
+int mpsincosf(struct t *t)
+{
+ float y, y2;
+
+ t->dy = t->dy2 = 0;
+ setupfenv(t->r);
+ sincosf(t->x, &y, &y2);
+ t->y = y;
+ t->y2 = y2;
+ t->e = getexcept();
+ return 0;
+}
+
+int mpsincosl(struct t *t)
+{
+ t->dy = t->dy2 = 0;
+ setupfenv(t->r);
+ sincosl(t->x, &t->y, &t->y2);
+ t->e = getexcept();
+ return 0;
+}
+
+#define mp_ff_fi(n) \
+int mp##n(struct t *t) \
+{ \
+ int i; \
+ t->dy = 0; \
+ setupfenv(t->r); \
+ t->y = n(t->x, t->x2, &i); \
+ t->e = getexcept(); \
+ t->i = i; \
+ return 0; \
+}
+
+mp_ff_fi(remquo)
+mp_ff_fi(remquof)
+mp_ff_fi(remquol)
+
+#define mp_fff_f(n) \
+int mp##n(struct t *t) \
+{ \
+ t->dy = 0; \
+ setupfenv(t->r); \
+ t->y = n(t->x, t->x2, t->x3); \
+ t->e = getexcept(); \
+ return 0; \
+}
+
+mp_fff_f(fma)
+mp_fff_f(fmaf)
+mp_fff_f(fmal)
+
+#define mp_if_f(n) \
+int mp##n(struct t *t) \
+{ \
+ t->dy = 0; \
+ setupfenv(t->r); \
+ t->y = n(t->i, t->x); \
+ t->e = getexcept(); \
+ return 0; \
+}
+
+mp_if_f(jn)
+mp_if_f(jnf)
+//mp_if_f(jnl)
+mp_if_f(yn)
+mp_if_f(ynf)
+//mp_if_f(ynl)
+