From: Jan-Benedict G. <jb...@us...> - 2005-11-18 08:25:48
|
Update of /cvsroot/linux-vax/toolchain/patches In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1111 Added Files: uclibc-000023-libm-10-atan-cosh-sinh.patch Log Message: - atan() and friends - cosh() and friends - sinh() and friends - DO NOT RELY ON THEM!!! --- NEW FILE: uclibc-000023-libm-10-atan-cosh-sinh.patch --- diff -Nurp src-uclibc-fresh/libm-vax/atan.c src-uclibc-hacked/libm-vax/atan.c --- src-uclibc-fresh/libm-vax/atan.c 1970-01-01 01:00:00.000000000 +0100 +++ src-uclibc-hacked/libm-vax/atan.c 2005-11-18 08:35:12.000000000 +0100 @@ -0,0 +1,9 @@ + +extern long double atanl (long double value); + +double +atan (double value) +{ + return atanl (value); +} + diff -Nurp src-uclibc-fresh/libm-vax/atanf.c src-uclibc-hacked/libm-vax/atanf.c --- src-uclibc-fresh/libm-vax/atanf.c 1970-01-01 01:00:00.000000000 +0100 +++ src-uclibc-hacked/libm-vax/atanf.c 2005-11-18 08:34:43.000000000 +0100 @@ -0,0 +1,9 @@ + +extern long double atanl (long double value); + +float +atanf (float value) +{ + return atanl (value); +} + diff -Nurp src-uclibc-fresh/libm-vax/atanl.c src-uclibc-hacked/libm-vax/atanl.c --- src-uclibc-fresh/libm-vax/atanl.c 1970-01-01 01:00:00.000000000 +0100 +++ src-uclibc-hacked/libm-vax/atanl.c 2005-11-18 08:38:49.000000000 +0100 @@ -0,0 +1,22 @@ +#include "_foo_libmath.h" + +static long double +taylor_atanl (long double value, unsigned long long k) +{ + return _exp_ld_ll_ll (-1, k) + * _exp_ld_ld_ll (value, 2 * k + 1) + / (long double) (2 * k + 1); +} + +long double +atanl (long double value) +{ + long double taylor_sum = 0.0L; + unsigned long long n; + + for (n = 0; n < ATAN_NUM_TAYLOR; n++) + taylor_sum += taylor_atanl (value, n); + + return taylor_sum; +} + diff -Nurp src-uclibc-fresh/libm-vax/cosh.c src-uclibc-hacked/libm-vax/cosh.c --- src-uclibc-fresh/libm-vax/cosh.c 1970-01-01 01:00:00.000000000 +0100 +++ src-uclibc-hacked/libm-vax/cosh.c 2005-11-18 08:31:29.000000000 +0100 @@ -0,0 +1,9 @@ + +extern long double coshl (long double value); + +double +cosh (double value) +{ + return coshl (value); +} + diff -Nurp src-uclibc-fresh/libm-vax/coshf.c src-uclibc-hacked/libm-vax/coshf.c --- src-uclibc-fresh/libm-vax/coshf.c 1970-01-01 01:00:00.000000000 +0100 +++ src-uclibc-hacked/libm-vax/coshf.c 2005-11-18 08:30:45.000000000 +0100 @@ -0,0 +1,9 @@ + +extern long double coshl (long double value); + +float +coshf (float value) +{ + return coshl (value); +} + diff -Nurp src-uclibc-fresh/libm-vax/coshl.c src-uclibc-hacked/libm-vax/coshl.c --- src-uclibc-fresh/libm-vax/coshl.c 1970-01-01 01:00:00.000000000 +0100 +++ src-uclibc-hacked/libm-vax/coshl.c 2005-11-18 08:32:38.000000000 +0100 @@ -0,0 +1,21 @@ +#include "_foo_libmath.h" + +static long double +taylor_coshl (long double value, unsigned long long n) +{ + return _exp_ld_ld_ll (value, 2*n) + / _internal_facultaet_ld (2*n); +} + +long double +coshl (long double value) +{ + long double result = 0.0L; + unsigned long long n; + + for (n = 0; n < COSH_NUM_TAYLOR; n++) + result += taylor_coshl (value, n); + + return result; +} + diff -Nurp src-uclibc-fresh/libm-vax/_foo_libmath.h src-uclibc-hacked/libm-vax/_foo_libmath.h --- src-uclibc-fresh/libm-vax/_foo_libmath.h 2005-11-18 08:14:41.000000000 +0100 +++ src-uclibc-hacked/libm-vax/_foo_libmath.h 2005-11-18 08:39:27.000000000 +0100 @@ -8,9 +8,13 @@ */ #define SIN_NUM_TAYLOR 30 #define COS_NUM_TAYLOR 30 + #define ASIN_NUM_TAYLOR 30 #define ACOS_NUM_TAYLOR 30 +#define ATAN_NUM_TAYLOR 30 +#define SINH_NUM_TAYLOR 30 +#define COSH_NUM_TAYLOR 30 /* diff -Nurp src-uclibc-fresh/libm-vax/Makefile src-uclibc-hacked/libm-vax/Makefile --- src-uclibc-fresh/libm-vax/Makefile 2005-11-18 08:14:41.000000000 +0100 +++ src-uclibc-hacked/libm-vax/Makefile 2005-11-18 08:38:00.000000000 +0100 @@ -3,12 +3,15 @@ AR=$(TARGET)ar CC=$(TARGET)gcc CFLAGS= -OBJ= sinf.o sin.o sinl.o \ +OBJ= fabsf.o fabs.o fabsl.o \ + sinf.o sin.o sinl.o \ cosf.o cos.o cosl.o \ - fabsf.o fabs.o fabsl.o \ tanf.o tan.o tanl.o \ asinf.o asin.o asinl.o \ acosf.o acos.o acosl.o \ + atanf.o atan.o atanl.o \ + sinhf.o sinh.o sinhl.o \ + coshf.o cosh.o coshl.o \ _internal_facultaet.o \ _internal_exp.o \ _internal_binominal_r_over_n.o diff -Nurp src-uclibc-fresh/libm-vax/sinh.c src-uclibc-hacked/libm-vax/sinh.c --- src-uclibc-fresh/libm-vax/sinh.c 1970-01-01 01:00:00.000000000 +0100 +++ src-uclibc-hacked/libm-vax/sinh.c 2005-11-18 08:27:21.000000000 +0100 @@ -0,0 +1,9 @@ + +extern long double sinhl (long double value); + +double +sinh (double value) +{ + return sinhl (value); +} + diff -Nurp src-uclibc-fresh/libm-vax/sinhf.c src-uclibc-hacked/libm-vax/sinhf.c --- src-uclibc-fresh/libm-vax/sinhf.c 1970-01-01 01:00:00.000000000 +0100 +++ src-uclibc-hacked/libm-vax/sinhf.c 2005-11-18 08:25:51.000000000 +0100 @@ -0,0 +1,9 @@ + +extern long double sinhl (long double value); + +float +sinh (float value) +{ + return sinhl (value); +} + diff -Nurp src-uclibc-fresh/libm-vax/sinhl.c src-uclibc-hacked/libm-vax/sinhl.c --- src-uclibc-fresh/libm-vax/sinhl.c 1970-01-01 01:00:00.000000000 +0100 +++ src-uclibc-hacked/libm-vax/sinhl.c 2005-11-18 08:29:19.000000000 +0100 @@ -0,0 +1,21 @@ +#include "_foo_libmath.h" + +static long double +taylor_sinhl (long double value, unsigned long long n) +{ + return _exp_ld_ld_ll (value, 2*n+1) + / _internal_facultaet_ld (2*n+1); +} + +long double +sinhl (long double value) +{ + unsigned long long n; + long double result = 0.0L; + + for (n = 0; n < SINH_NUM_TAYLOR; n++) + result += taylor_sinhl (value, n); + + return result; +} + |