about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-03-15 02:38:42 -0400
committerRich Felker <dalias@aerifal.cx>2012-03-15 02:38:42 -0400
commit5657cc58e5e135bba85c9a7045e10d8de4b1be0a (patch)
tree9eb1a46ac4ea495e3b90d11a42f33c05102a854b
parent46702f68f98244f7384d6ac1742a452f0d7a2610 (diff)
downloadmusl-5657cc58e5e135bba85c9a7045e10d8de4b1be0a.tar.gz
musl-5657cc58e5e135bba85c9a7045e10d8de4b1be0a.tar.xz
musl-5657cc58e5e135bba85c9a7045e10d8de4b1be0a.zip
implement sincosf and sincosl functions; add prototypes
presumably broken gcc may generate calls to these, and it's said that
ffmpeg makes use of sincosf.
-rw-r--r--include/math.h3
-rw-r--r--src/linux/sincosf.c8
-rw-r--r--src/linux/sincosl.c8
3 files changed, 19 insertions, 0 deletions
diff --git a/include/math.h b/include/math.h
index f320b8e9..e9871516 100644
--- a/include/math.h
+++ b/include/math.h
@@ -382,6 +382,9 @@ long double ynl(int, long double);
 double      scalb(double, double);
 float       scalbf(float, float);
 long double scalbl(long double, long double);
+void sincosf(float, float *, float *);
+void sincos(double, double *, double *);
+void sincosl(long double, long double *, long double *);
 #endif
 
 #ifdef __cplusplus
diff --git a/src/linux/sincosf.c b/src/linux/sincosf.c
new file mode 100644
index 00000000..5d8d4458
--- /dev/null
+++ b/src/linux/sincosf.c
@@ -0,0 +1,8 @@
+#define _GNU_SOURCE
+#include <math.h>
+
+void sincosf(float t, float *y, float *x)
+{
+	*y = sinf(t);
+	*x = cosf(t);
+}
diff --git a/src/linux/sincosl.c b/src/linux/sincosl.c
new file mode 100644
index 00000000..2bfc4862
--- /dev/null
+++ b/src/linux/sincosl.c
@@ -0,0 +1,8 @@
+#define _GNU_SOURCE
+#include <math.h>
+
+void sincosl(long double t, long double *y, long double *x)
+{
+	*y = sinl(t);
+	*x = cosl(t);
+}