pthread_rwlock regression test
[libc-test] / src / math / gen / mplibm.c
index cf17d6d..141fa85 100644 (file)
@@ -54,6 +54,29 @@ static int mpl2(struct t *s, long double (*f)(long double, long double))
        return 0;
 }
 
+static double sinpi(double x) { return sin(3.141592653589793238*x); }
+int mpsinpi(struct t *t) { return mpd1(t, sinpi); }
+
+
+#define OP(n,op,t) static t n(t x, t y) { t z = x op y; return z; }
+OP(add,+,double)
+OP(addf,+,float)
+OP(addl,+,long double)
+OP(mul,*,double)
+OP(mulf,*,float)
+OP(mull,*,long double)
+OP(div,/,double)
+OP(divf,/,float)
+OP(divl,/,long double)
+int mpadd(struct t *t) { return mpd2(t, add); }
+int mpaddf(struct t *t) { return mpf2(t, addf); }
+int mpaddl(struct t *t) { return mpl2(t, addl); }
+int mpmul(struct t *t) { return mpd2(t, mul); }
+int mpmulf(struct t *t) { return mpf2(t, mulf); }
+int mpmull(struct t *t) { return mpl2(t, mull); }
+int mpdiv(struct t *t) { return mpd2(t, div); }
+int mpdivf(struct t *t) { return mpf2(t, divf); }
+int mpdivl(struct t *t) { return mpl2(t, divl); }
 
 int mpacos(struct t *t) { return mpd1(t, acos); }
 int mpacosf(struct t *t) { return mpf1(t, acosf); }
@@ -411,3 +434,20 @@ 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)
+