Commit SoC long double support from Stathis Kamperis
This commit is contained in:
parent
f15acd14df
commit
e2a86dd3c7
@ -1,4 +1,4 @@
|
||||
# $NetBSD: mi,v 1.1507 2010/09/06 14:55:37 christos Exp $
|
||||
# $NetBSD: mi,v 1.1508 2010/09/15 16:11:28 christos Exp $
|
||||
#
|
||||
# Note: don't delete entries from here - mark them as "obsolete" instead.
|
||||
#
|
||||
@ -5365,6 +5365,7 @@
|
||||
./usr/share/man/cat3/chgat.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/cimag.0 comp-c-catman complex,.cat
|
||||
./usr/share/man/cat3/cimagf.0 comp-c-catman complex,.cat
|
||||
./usr/share/man/cat3/cimagl.0 comp-c-catman complex,.cat
|
||||
./usr/share/man/cat3/circleq_empty.0 comp-obsolete obsolete
|
||||
./usr/share/man/cat3/circleq_entry.0 comp-obsolete obsolete
|
||||
./usr/share/man/cat3/circleq_first.0 comp-obsolete obsolete
|
||||
@ -5423,6 +5424,7 @@
|
||||
./usr/share/man/cat3/conjf.0 comp-c-catman complex,.cat
|
||||
./usr/share/man/cat3/copysign.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/copysignf.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/copysignl.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/copywin.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/cos.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/cosf.0 comp-c-catman .cat
|
||||
@ -5430,6 +5432,7 @@
|
||||
./usr/share/man/cat3/coshf.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/cpow.0 comp-c-catman complex,.cat
|
||||
./usr/share/man/cat3/cpowf.0 comp-c-catman complex,.cat
|
||||
./usr/share/man/cat3/cproj.0 comp-c-catman complex,.cat
|
||||
./usr/share/man/cat3/cpuset.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/cpuset_clr.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/cpuset_create.0 comp-c-catman .cat
|
||||
@ -5440,6 +5443,7 @@
|
||||
./usr/share/man/cat3/cpuset_zero.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/creal.0 comp-c-catman complex,.cat
|
||||
./usr/share/man/cat3/crealf.0 comp-c-catman complex,.cat
|
||||
./usr/share/man/cat3/creall.0 comp-c-catman complex,.cat
|
||||
./usr/share/man/cat3/creat.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/crypt.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/crypto.0 comp-c-catman crypto,.cat
|
||||
@ -5783,6 +5787,8 @@
|
||||
./usr/share/man/cat3/execvp.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/exit.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/exp.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/exp2.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/exp2f.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/expf.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/expm1.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/expm1f.0 comp-c-catman .cat
|
||||
@ -7292,6 +7298,8 @@
|
||||
./usr/share/man/cat3/newwin.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/nextafter.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/nextafterf.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/nextafterl.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/nexttoward.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/nftw.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/ngettext.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/nice.0 comp-c-catman .cat
|
||||
@ -11320,6 +11328,7 @@
|
||||
./usr/share/man/html3/chgat.html comp-c-htmlman html
|
||||
./usr/share/man/html3/cimag.html comp-c-htmlman complex,html
|
||||
./usr/share/man/html3/cimagf.html comp-c-htmlman complex,html
|
||||
./usr/share/man/html3/cimagl.html comp-c-htmlman complex,html
|
||||
./usr/share/man/html3/clear.html comp-c-htmlman html
|
||||
./usr/share/man/html3/clearerr.html comp-c-htmlman html
|
||||
./usr/share/man/html3/clearok.html comp-c-htmlman html
|
||||
@ -11364,6 +11373,7 @@
|
||||
./usr/share/man/html3/conjf.html comp-c-htmlman complex,html
|
||||
./usr/share/man/html3/copysign.html comp-c-htmlman html
|
||||
./usr/share/man/html3/copysignf.html comp-c-htmlman html
|
||||
./usr/share/man/html3/copysignl.html comp-c-htmlman html
|
||||
./usr/share/man/html3/copywin.html comp-c-htmlman html
|
||||
./usr/share/man/html3/cos.html comp-c-htmlman html
|
||||
./usr/share/man/html3/cosf.html comp-c-htmlman html
|
||||
@ -11371,6 +11381,7 @@
|
||||
./usr/share/man/html3/coshf.html comp-c-htmlman html
|
||||
./usr/share/man/html3/cpow.html comp-c-htmlman complex,html
|
||||
./usr/share/man/html3/cpowf.html comp-c-htmlman complex,html
|
||||
./usr/share/man/html3/cproj.html comp-c-htmlman complex,html
|
||||
./usr/share/man/html3/cpuset.html comp-c-htmlman html
|
||||
./usr/share/man/html3/cpuset_clr.html comp-c-htmlman html
|
||||
./usr/share/man/html3/cpuset_create.html comp-c-htmlman html
|
||||
@ -11381,6 +11392,7 @@
|
||||
./usr/share/man/html3/cpuset_zero.html comp-c-htmlman html
|
||||
./usr/share/man/html3/creal.html comp-c-htmlman complex,html
|
||||
./usr/share/man/html3/crealf.html comp-c-htmlman complex,html
|
||||
./usr/share/man/html3/creall.html comp-c-htmlman complex,html
|
||||
./usr/share/man/html3/creat.html comp-c-htmlman html
|
||||
./usr/share/man/html3/crypt.html comp-c-htmlman html
|
||||
./usr/share/man/html3/crypto.html comp-c-htmlman crypto,html
|
||||
@ -11723,6 +11735,8 @@
|
||||
./usr/share/man/html3/exit.html comp-c-htmlman html
|
||||
./usr/share/man/html3/exp.html comp-c-htmlman html
|
||||
./usr/share/man/html3/expf.html comp-c-htmlman html
|
||||
./usr/share/man/html3/exp2.html comp-c-htmlman html
|
||||
./usr/share/man/html3/exp2f.html comp-c-htmlman html
|
||||
./usr/share/man/html3/expm1.html comp-c-htmlman html
|
||||
./usr/share/man/html3/expm1f.html comp-c-htmlman html
|
||||
./usr/share/man/html3/extattr.html comp-c-htmlman html
|
||||
@ -13192,6 +13206,8 @@
|
||||
./usr/share/man/html3/newwin.html comp-c-htmlman html
|
||||
./usr/share/man/html3/nextafter.html comp-c-htmlman html
|
||||
./usr/share/man/html3/nextafterf.html comp-c-htmlman html
|
||||
./usr/share/man/html3/nextafterl.html comp-c-htmlman html
|
||||
./usr/share/man/html3/nexttoward.html comp-c-htmlman html
|
||||
./usr/share/man/html3/nftw.html comp-c-htmlman html
|
||||
./usr/share/man/html3/ngettext.html comp-c-htmlman html
|
||||
./usr/share/man/html3/nice.html comp-c-htmlman html
|
||||
@ -17153,6 +17169,7 @@
|
||||
./usr/share/man/man3/chgat.3 comp-c-man .man
|
||||
./usr/share/man/man3/cimag.3 comp-c-man complex,.man
|
||||
./usr/share/man/man3/cimagf.3 comp-c-man complex,.man
|
||||
./usr/share/man/man3/cimagl.3 comp-c-man complex,.man
|
||||
./usr/share/man/man3/circleq_empty.3 comp-obsolete obsolete
|
||||
./usr/share/man/man3/circleq_entry.3 comp-obsolete obsolete
|
||||
./usr/share/man/man3/circleq_first.3 comp-obsolete obsolete
|
||||
@ -17211,6 +17228,7 @@
|
||||
./usr/share/man/man3/conjf.3 comp-c-man complex,.man
|
||||
./usr/share/man/man3/copysign.3 comp-c-man .man
|
||||
./usr/share/man/man3/copysignf.3 comp-c-man .man
|
||||
./usr/share/man/man3/copysignl.3 comp-c-man .man
|
||||
./usr/share/man/man3/copywin.3 comp-c-man .man
|
||||
./usr/share/man/man3/cos.3 comp-c-man .man
|
||||
./usr/share/man/man3/cosf.3 comp-c-man .man
|
||||
@ -17218,6 +17236,7 @@
|
||||
./usr/share/man/man3/coshf.3 comp-c-man .man
|
||||
./usr/share/man/man3/cpow.3 comp-c-man complex,.man
|
||||
./usr/share/man/man3/cpowf.3 comp-c-man complex,.man
|
||||
./usr/share/man/man3/cproj.3 comp-c-man complex,.man
|
||||
./usr/share/man/man3/cpuset.3 comp-c-man .man
|
||||
./usr/share/man/man3/cpuset_clr.3 comp-c-man .man
|
||||
./usr/share/man/man3/cpuset_create.3 comp-c-man .man
|
||||
@ -17228,6 +17247,7 @@
|
||||
./usr/share/man/man3/cpuset_zero.3 comp-c-man .man
|
||||
./usr/share/man/man3/creal.3 comp-c-man complex,.man
|
||||
./usr/share/man/man3/crealf.3 comp-c-man complex,.man
|
||||
./usr/share/man/man3/creall.3 comp-c-man complex,.man
|
||||
./usr/share/man/man3/creat.3 comp-c-man .man
|
||||
./usr/share/man/man3/crypt.3 comp-c-man .man
|
||||
./usr/share/man/man3/crypto.3 comp-c-man crypto,.man
|
||||
@ -17572,6 +17592,8 @@
|
||||
./usr/share/man/man3/exit.3 comp-c-man .man
|
||||
./usr/share/man/man3/exp.3 comp-c-man .man
|
||||
./usr/share/man/man3/expf.3 comp-c-man .man
|
||||
./usr/share/man/man3/exp2.3 comp-c-man .man
|
||||
./usr/share/man/man3/exp2f.3 comp-c-man .man
|
||||
./usr/share/man/man3/expm1.3 comp-c-man .man
|
||||
./usr/share/man/man3/expm1f.3 comp-c-man .man
|
||||
./usr/share/man/man3/extattr.3 comp-c-man .man
|
||||
@ -19080,6 +19102,8 @@
|
||||
./usr/share/man/man3/newwin.3 comp-c-man .man
|
||||
./usr/share/man/man3/nextafter.3 comp-c-man .man
|
||||
./usr/share/man/man3/nextafterf.3 comp-c-man .man
|
||||
./usr/share/man/man3/nextafterl.3 comp-c-man .man
|
||||
./usr/share/man/man3/nexttoward.3 comp-c-man .man
|
||||
./usr/share/man/man3/nftw.3 comp-c-man .man
|
||||
./usr/share/man/man3/ngettext.3 comp-c-man .man
|
||||
./usr/share/man/man3/nice.3 comp-c-man .man
|
||||
|
@ -1,10 +1,13 @@
|
||||
/* $NetBSD: complex.h,v 1.2 2009/07/22 15:09:57 drochner Exp $ */
|
||||
/* $NetBSD: complex.h,v 1.3 2010/09/15 16:11:30 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Written by Matthias Drochner.
|
||||
* Public domain.
|
||||
*/
|
||||
|
||||
#ifndef _COMPLEX_H
|
||||
#define _COMPLEX_H
|
||||
|
||||
#define complex _Complex
|
||||
#define _Complex_I 1.0fi
|
||||
#define I _Complex_I
|
||||
@ -13,57 +16,106 @@
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
double creal(double complex);
|
||||
double cimag(double complex);
|
||||
double complex conj(double complex);
|
||||
float crealf(float complex);
|
||||
float cimagf(float complex);
|
||||
float complex conjf(float complex);
|
||||
/* 7.3.5 Trigonometric functions */
|
||||
/* 7.3.5.1 The cacos functions */
|
||||
double complex cacos(double complex);
|
||||
float complex cacosf(float complex);
|
||||
|
||||
/* 7.3.5.2 The casin functions */
|
||||
double complex casin(double complex);
|
||||
float complex casinf(float complex);
|
||||
|
||||
/* 7.3.5.1 The catan functions */
|
||||
double complex catan(double complex);
|
||||
float complex catanf(float complex);
|
||||
|
||||
/* 7.3.5.1 The ccos functions */
|
||||
double complex ccos(double complex);
|
||||
float complex ccosf(float complex);
|
||||
|
||||
/* 7.3.5.1 The csin functions */
|
||||
double complex csin(double complex);
|
||||
float complex csinf(float complex);
|
||||
|
||||
/* 7.3.5.1 The ctan functions */
|
||||
double complex ctan(double complex);
|
||||
float complex ctanf(float complex);
|
||||
|
||||
/* 7.3.6 Hyperbolic functions */
|
||||
/* 7.3.6.1 The cacosh functions */
|
||||
double complex cacosh(double complex);
|
||||
float complex cacoshf(float complex);
|
||||
|
||||
/* 7.3.6.2 The casinh functions */
|
||||
double complex casinh(double complex);
|
||||
float complex casinhf(float complex);
|
||||
|
||||
/* 7.3.6.3 The catanh functions */
|
||||
double complex catanh(double complex);
|
||||
float complex catanhf(float complex);
|
||||
|
||||
/* 7.3.6.4 The ccosh functions */
|
||||
double complex ccosh(double complex);
|
||||
float complex ccoshf(float complex);
|
||||
|
||||
/* 7.3.6.5 The csinh functions */
|
||||
double complex csinh(double complex);
|
||||
float complex csinhf(float complex);
|
||||
|
||||
/* 7.3.6.6 The ctanh functions */
|
||||
double complex ctanh(double complex);
|
||||
float complex ctanhf(float complex);
|
||||
|
||||
/* 7.3.7 Exponential and logarithmic functions */
|
||||
/* 7.3.7.1 The cexp functions */
|
||||
double complex cexp(double complex);
|
||||
float complex cexpf(float complex);
|
||||
|
||||
/* 7.3.7.2 The clog functions */
|
||||
double complex clog(double complex);
|
||||
float complex clogf(float complex);
|
||||
|
||||
/* 7.3.8 Power and absolute-value functions */
|
||||
/* 7.3.8.1 The cabs functions */
|
||||
#ifndef __LIBM0_SOURCE__
|
||||
/* avoid conflict with historical cabs(struct complex) */
|
||||
double cabs(double complex) __RENAME(__c99_cabs);
|
||||
float cabsf(float complex) __RENAME(__c99_cabsf);
|
||||
#endif
|
||||
|
||||
/* 7.3.8.2 The cpow functions */
|
||||
double complex cpow(double complex, double complex);
|
||||
float complex cpowf(float complex, float complex);
|
||||
|
||||
/* 7.3.8.3 The csqrt functions */
|
||||
double complex csqrt(double complex);
|
||||
float complex csqrtf(float complex);
|
||||
|
||||
/* 7.3.9 Manipulation functions */
|
||||
/* 7.3.9.1 The carg functions */
|
||||
double carg(double complex);
|
||||
float cargf(float complex);
|
||||
|
||||
double complex csqrt(double complex);
|
||||
double complex cexp(double complex);
|
||||
double complex clog(double complex);
|
||||
double complex cpow(double complex, double complex);
|
||||
/* 7.3.9.2 The cimag functions */
|
||||
double cimag(double complex);
|
||||
float cimagf(float complex);
|
||||
long double cimagl(long double complex);
|
||||
|
||||
double complex csin(double complex);
|
||||
double complex ccos(double complex);
|
||||
double complex ctan(double complex);
|
||||
double complex csinh(double complex);
|
||||
double complex ccosh(double complex);
|
||||
double complex ctanh(double complex);
|
||||
/* 7.3.9.3 The conj functions */
|
||||
double complex conj(double complex);
|
||||
float complex conjf(float complex);
|
||||
long double complex conjl(long double complex);
|
||||
|
||||
double complex casin(double complex);
|
||||
double complex cacos(double complex);
|
||||
double complex catan(double complex);
|
||||
double complex casinh(double complex);
|
||||
double complex cacosh(double complex);
|
||||
double complex catanh(double complex);
|
||||
/* 7.3.9.4 The cproj functions */
|
||||
double complex cproj(double complex);
|
||||
float complex cprojf(float complex);
|
||||
long double complex cprojl(long double complex);
|
||||
|
||||
float complex csqrtf(float complex);
|
||||
float complex cexpf(float complex);
|
||||
float complex clogf(float complex);
|
||||
float complex cpowf(float complex, float complex);
|
||||
|
||||
float complex csinf(float complex);
|
||||
float complex ccosf(float complex);
|
||||
float complex ctanf(float complex);
|
||||
float complex csinhf(float complex);
|
||||
float complex ccoshf(float complex);
|
||||
float complex ctanhf(float complex);
|
||||
|
||||
float complex casinf(float complex);
|
||||
float complex cacosf(float complex);
|
||||
float complex catanf(float complex);
|
||||
float complex casinhf(float complex);
|
||||
float complex cacoshf(float complex);
|
||||
float complex catanhf(float complex);
|
||||
/* 7.3.9.5 The creal functions */
|
||||
double creal(double complex);
|
||||
float crealf(float complex);
|
||||
long double creall(long double complex);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* ! _COMPLEX_H */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: math.h,v 1.52 2010/05/02 06:31:48 dholland Exp $ */
|
||||
/* $NetBSD: math.h,v 1.53 2010/09/15 16:11:30 christos Exp $ */
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
@ -311,6 +311,7 @@ float scalbnf(float, int);
|
||||
|
||||
float cbrtf(float);
|
||||
float fabsf(float);
|
||||
long double fabsl(long double);
|
||||
float hypotf(float, float);
|
||||
float powf(float, float);
|
||||
float sqrtf(float);
|
||||
@ -351,10 +352,13 @@ float remainderf(float, float);
|
||||
/* 7.12.11 manipulation */
|
||||
|
||||
float copysignf(float, float);
|
||||
long double copysignl(long double, long double);
|
||||
double nan(const char *);
|
||||
float nanf(const char *);
|
||||
long double nanl(const char *);
|
||||
float nextafterf(float, float);
|
||||
long double nextafterl(long double, long double);
|
||||
double nexttoward(double, long double);
|
||||
|
||||
/* 7.12.14 comparison */
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile,v 1.97 2010/08/10 17:53:08 drochner Exp $
|
||||
# $NetBSD: Makefile,v 1.98 2010/09/15 16:11:29 christos Exp $
|
||||
#
|
||||
# @(#)Makefile 5.1beta 93/09/24
|
||||
#
|
||||
@ -57,7 +57,7 @@ ARCH_SRCS = s_copysign.S s_copysignf.S lrint.S
|
||||
.endif
|
||||
.PATH: ${.CURDIR}/arch/i387
|
||||
|
||||
COMMON_SRCS+= fenv.c
|
||||
COMMON_SRCS+= fenv.c s_nextafterl.c s_nexttoward.c
|
||||
ARCH_SRCS = e_acos.S e_asin.S e_atan2.S e_exp.S e_expf.S e_fmod.S e_log.S \
|
||||
e_logf.S e_log10.S e_log10f.S e_log2.S e_log2f.S e_remainder.S \
|
||||
e_remainderf.S e_scalb.S e_scalbf.S e_sqrt.S e_sqrtf.S s_atan.S \
|
||||
@ -127,8 +127,8 @@ COMMON_SRCS+= e_acos.c e_acosf.c e_acosh.c e_acoshf.c e_asin.c e_asinf.c \
|
||||
k_cos.c k_cosf.c k_rem_pio2.c k_rem_pio2f.c k_sin.c k_sinf.c \
|
||||
k_standard.c k_tan.c k_tanf.c \
|
||||
s_asinh.c s_asinhf.c s_atan.c s_atanf.c s_cbrt.c s_cbrtf.c s_ceil.c \
|
||||
s_ceilf.c s_copysign.c s_copysignf.c s_cos.c s_cosf.c s_erf.c \
|
||||
s_erff.c s_exp2.c s_exp2f.c s_expm1.c s_expm1f.c s_fabsf.c \
|
||||
s_ceilf.c s_copysign.c s_copysignf.c s_copysignl.c s_cos.c s_cosf.c s_erf.c \
|
||||
s_erff.c s_exp2.c s_exp2f.c s_expm1.c s_expm1f.c s_fabsf.c s_fabsl.c \
|
||||
s_finite.c s_finitef.c \
|
||||
s_floor.c s_floorf.c s_frexpf.c s_ilogb.c s_ilogbf.c \
|
||||
s_isinff.c s_isnanf.c s_ldexpf.c s_lib_version.c s_log1p.c \
|
||||
@ -226,16 +226,24 @@ MLINKS+=ceil.3 ceilf.3
|
||||
MLINKS+=cos.3 cosf.3
|
||||
MLINKS+=cosh.3 coshf.3
|
||||
MLINKS+=erf.3 erff.3 erf.3 erfc.3 erf.3 erfcf.3
|
||||
MLINKS+=exp.3 expf.3 exp.3 expm1.3 exp.3 expm1f.3 exp.3 log.3 exp.3 logf.3 \
|
||||
exp.3 log10.3 exp.3 log10f.3 exp.3 log1p.3 exp.3 log1pf.3 \
|
||||
exp.3 pow.3 exp.3 powf.3 exp.3 log2.3 exp.3 log2f.3
|
||||
MLINKS+=exp.3 expf.3 exp.3 expm1.3 exp.3 expm1f.3 \
|
||||
exp.3 exp2.3 exp.3 exp2f.3 \
|
||||
exp.3 log.3 exp.3 logf.3 \
|
||||
exp.3 log10.3 exp.3 log10f.3 \
|
||||
exp.3 log1p.3 exp.3 log1pf.3 \
|
||||
exp.3 pow.3 exp.3 powf.3 \
|
||||
exp.3 log2.3 exp.3 log2f.3
|
||||
MLINKS+=fabs.3 fabsf.3
|
||||
MLINKS+=floor.3 floorf.3
|
||||
MLINKS+=fmod.3 fmodf.3
|
||||
MLINKS+=hypot.3 hypotf.3
|
||||
MLINKS+=ieee.3 copysign.3 ieee.3 copysignf.3 ieee.3 finite.3 ieee.3 finitef.3 \
|
||||
ieee.3 ilogb.3 ieee.3 ilogbf.3 ieee.3 nextafter.3 ieee.3 nextafterf.3 \
|
||||
ieee.3 remainder.3 ieee.3 remainderf.3 ieee.3 scalbn.3 ieee.3 scalbnf.3
|
||||
MLINKS+=ieee.3 copysign.3 ieee.3 copysignf.3 ieee.3 copysignl.3 \
|
||||
ieee.3 finite.3 ieee.3 finitef.3 \
|
||||
ieee.3 ilogb.3 ieee.3 ilogbf.3 \
|
||||
ieee.3 nextafter.3 ieee.3 nextafterf.3 ieee.3 nextafterl.3 \
|
||||
ieee.3 nexttoward.3 \
|
||||
ieee.3 remainder.3 ieee.3 remainderf.3 \
|
||||
ieee.3 scalbn.3 ieee.3 scalbnf.3
|
||||
MLINKS+=ieee_test.3 logb.3 ieee_test.3 logbf.3
|
||||
MLINKS+=ieee_test.3 scalb.3 ieee_test.3 scalbf.3
|
||||
MLINKS+=ieee_test.3 significand.3 ieee_test.3 significandf.3
|
||||
|
@ -1,24 +1,28 @@
|
||||
# $NetBSD: Makefile.inc,v 1.2 2008/03/08 14:21:41 drochner Exp $
|
||||
# $NetBSD: Makefile.inc,v 1.3 2010/09/15 16:11:29 christos Exp $
|
||||
|
||||
.PATH: ${.CURDIR}/complex
|
||||
|
||||
SRCS+= cabs.c cabsf.c carg.c cargf.c
|
||||
SRCS+= creal.c crealf.c cimag.c cimagf.c conj.c conjf.c
|
||||
SRCS+= creal.c crealf.c creall.c cimag.c cimagf.c cimagl.c
|
||||
SRCS+= conj.c conjf.c conjl.c
|
||||
SRCS+= csqrt.c cexp.c clog.c cpow.c
|
||||
SRCS+= cephes_subr.c csin.c ccos.c ctan.c csinh.c ccosh.c ctanh.c
|
||||
SRCS+= casin.c cacos.c catan.c casinh.c cacosh.c catanh.c
|
||||
SRCS+= csqrtf.c cexpf.c clogf.c cpowf.c
|
||||
SRCS+= cephes_subrf.c csinf.c ccosf.c ctanf.c csinhf.c ccoshf.c ctanhf.c
|
||||
SRCS+= casinf.c cacosf.c catanf.c casinhf.c cacoshf.c catanhf.c
|
||||
SRCS+= cproj.c cprojf.c cprojl.c
|
||||
|
||||
MAN+= cabs.3 cacos.3 cacosh.3 carg.3 casin.3 casinh.3 catan.3 catanh.3
|
||||
MAN+= ccos.3 ccosh.3 cexp.3 cimag.3 clog.3 conj.3 cpow.3 creal.3
|
||||
MAN+= ccos.3 ccosh.3 cexp.3 cimag.3 clog.3 conj.3 cpow.3 cproj.3 creal.3
|
||||
MAN+= csin.3 csinh.3 csqrt.3 ctan.3 ctanh.3
|
||||
|
||||
MLINKS+= cabs.3 cabsf.3 cacos.3 cacosf.3 cacosh.3 cacoshf.3
|
||||
MLINKS+= carg.3 cargf.3 casin.3 casinf.3 casinh.3 casinhf.3
|
||||
MLINKS+= catan.3 catanf.3 catanh.3 catanhf.3 ccos.3 ccosf.3
|
||||
MLINKS+= ccosh.3 ccoshf.3 cexp.3 cexpf.3 cimag.3 cimagf.3
|
||||
MLINKS+= ccosh.3 ccoshf.3 cexp.3 cexpf.3
|
||||
MLINKS+= cimag.3 cimagf.3 cimag.3 cimagl.3
|
||||
MLINKS+= clog.3 clogf.3 conj.3 conjf.3 cpow.3 cpowf.3
|
||||
MLINKS+= creal.3 crealf.3 csin.3 csinf.3 csinh.3 csinhf.3
|
||||
MLINKS+= creal.3 crealf.3 creal.3 creall.3
|
||||
MLINKS+= csin.3 csinf.3 csinh.3 csinhf.3
|
||||
MLINKS+= csqrt.3 csqrtf.3 ctan.3 ctanf.3 ctanh.3 ctanhf.3
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: cimag.3,v 1.1 2008/02/20 09:55:38 drochner Exp $
|
||||
.\" $NetBSD: cimag.3,v 1.2 2010/09/15 16:11:29 christos Exp $
|
||||
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
||||
.TH "CIMAG" 3P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
||||
.\" cimag
|
||||
@ -13,6 +13,8 @@ double cimag(double complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
float cimagf(float complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
long double cimagl(long double complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
\fP
|
||||
.SH DESCRIPTION
|
||||
.LP
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: cimag.c,v 1.1 2007/08/20 16:01:34 drochner Exp $ */
|
||||
/* $NetBSD: cimag.c,v 1.2 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Written by Matthias Drochner <drochner@NetBSD.org>.
|
||||
@ -6,10 +6,12 @@
|
||||
*/
|
||||
|
||||
#include <complex.h>
|
||||
#include "../src/math_private.h"
|
||||
|
||||
double
|
||||
cimag(double complex z)
|
||||
{
|
||||
double_complex w = { .z = z };
|
||||
|
||||
return __imag__ z;
|
||||
return (IMAG_PART(w));
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: cimagf.c,v 1.1 2007/08/20 16:01:35 drochner Exp $ */
|
||||
/* $NetBSD: cimagf.c,v 1.2 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Written by Matthias Drochner <drochner@NetBSD.org>.
|
||||
@ -6,10 +6,12 @@
|
||||
*/
|
||||
|
||||
#include <complex.h>
|
||||
#include "../src/math_private.h"
|
||||
|
||||
float
|
||||
cimagf(float complex z)
|
||||
{
|
||||
float_complex w = { .z = z };
|
||||
|
||||
return __imag__ z;
|
||||
return (IMAG_PART(w));
|
||||
}
|
||||
|
44
lib/libm/complex/cimagl.c
Normal file
44
lib/libm/complex/cimagl.c
Normal file
@ -0,0 +1,44 @@
|
||||
/* $NetBSD: cimagl.c,v 1.1 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2010 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: cimagl.c,v 1.1 2010/09/15 16:11:29 christos Exp $");
|
||||
|
||||
#include <complex.h>
|
||||
#include "../src/math_private.h"
|
||||
|
||||
/*
|
||||
* cimagl(long double complex z)
|
||||
* This function returns the imaginary part value (as a real) of z.
|
||||
*/
|
||||
long double
|
||||
cimagl(long double complex z)
|
||||
{
|
||||
long_double_complex w = { .z = z };
|
||||
|
||||
return (IMAG_PART(w));
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: conj.3,v 1.1 2008/02/20 09:55:38 drochner Exp $
|
||||
.\" $NetBSD: conj.3,v 1.2 2010/09/15 16:11:29 christos Exp $
|
||||
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
||||
.TH "CONJ" 3P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
||||
.\" conj
|
||||
@ -13,6 +13,8 @@ double complex conj(double complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
float complex conjf(float complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
long double complex conjl(long double complex\fP \fIz\fP\fB, long double complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
\fP
|
||||
.SH DESCRIPTION
|
||||
.LP
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: conj.c,v 1.1 2007/08/20 16:01:35 drochner Exp $ */
|
||||
/* $NetBSD: conj.c,v 1.2 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Written by Matthias Drochner <drochner@NetBSD.org>.
|
||||
@ -6,10 +6,14 @@
|
||||
*/
|
||||
|
||||
#include <complex.h>
|
||||
#include "../src/math_private.h"
|
||||
|
||||
double complex
|
||||
conj(double complex z)
|
||||
{
|
||||
double_complex w = { .z = z };
|
||||
|
||||
return ~z;
|
||||
IMAG_PART(w) = -IMAG_PART(w);
|
||||
|
||||
return (w.z);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: conjf.c,v 1.1 2007/08/20 16:01:35 drochner Exp $ */
|
||||
/* $NetBSD: conjf.c,v 1.2 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Written by Matthias Drochner <drochner@NetBSD.org>.
|
||||
@ -6,10 +6,14 @@
|
||||
*/
|
||||
|
||||
#include <complex.h>
|
||||
#include "../src/math_private.h"
|
||||
|
||||
float complex
|
||||
conjf(float complex z)
|
||||
{
|
||||
float_complex w = { .z = z };
|
||||
|
||||
return ~z;
|
||||
IMAG_PART(w) = -IMAG_PART(w);
|
||||
|
||||
return (w.z);
|
||||
}
|
||||
|
49
lib/libm/complex/conjl.c
Normal file
49
lib/libm/complex/conjl.c
Normal file
@ -0,0 +1,49 @@
|
||||
/* $NetBSD: conjl.c,v 1.1 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2010 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: conjl.c,v 1.1 2010/09/15 16:11:29 christos Exp $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
#include <machine/ieee.h>
|
||||
|
||||
#include "../src/math_private.h"
|
||||
|
||||
/*
|
||||
* conjl(long double complex z)
|
||||
* This function returns the complex conjugate value of its argument, z.
|
||||
*/
|
||||
long double complex
|
||||
conjl(long double complex z)
|
||||
{
|
||||
long_double_complex w = { .z = z };
|
||||
|
||||
IMAG_PART(w) = -IMAG_PART(w);
|
||||
|
||||
return (w.z);
|
||||
}
|
59
lib/libm/complex/cproj.3
Normal file
59
lib/libm/complex/cproj.3
Normal file
@ -0,0 +1,59 @@
|
||||
.\" $NetBSD: cproj.3,v 1.1 2010/09/15 16:11:29 christos Exp $
|
||||
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
||||
.TH "CPROJ" 3P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
||||
.\" cproj
|
||||
.SH NAME
|
||||
cproj, cprojf, cprojl \- complex projection functions
|
||||
.SH SYNOPSIS
|
||||
.LP
|
||||
\fB#include <complex.h>
|
||||
.br
|
||||
.sp
|
||||
double cproj(double complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
float cprojf(float complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
long double cprojl(long double complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
\fP
|
||||
.SH DESCRIPTION
|
||||
.LP
|
||||
These functions compute a projection of \fIz\fP ono the Riemann sphere:
|
||||
\fIz\fP projects to \fIz\fP , except that all complex infinities (even those
|
||||
with one infinite part and one NaN part) project to positive infinity on the
|
||||
real axis. If \fIz\fP has an infinite part, then cproj(z) shall be equivalent to:
|
||||
INFINITY + I * copysign(0.0, cimag(z))
|
||||
.SH RETURN VALUE
|
||||
.LP
|
||||
These functions return the value of the projection onto the Riemann sphere.
|
||||
.SH ERRORS
|
||||
.LP
|
||||
No errors are defined.
|
||||
.LP
|
||||
\fIThe following sections are informative.\fP
|
||||
.SH EXAMPLES
|
||||
.LP
|
||||
None.
|
||||
.SH APPLICATION USAGE
|
||||
.LP
|
||||
None.
|
||||
.SH RATIONALE
|
||||
.LP
|
||||
None.
|
||||
.SH FUTURE DIRECTIONS
|
||||
.LP
|
||||
None.
|
||||
.SH SEE ALSO
|
||||
.LP
|
||||
\fIcarg\fP(), \fIcimag\fP(), \fIconj\fP(), \fIcreal\fP() the
|
||||
Base Definitions volume of IEEE\ Std\ 1003.1-2001, \fI<complex.h>\fP
|
||||
.SH COPYRIGHT
|
||||
Portions of this text are reprinted and reproduced in electronic form
|
||||
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
|
||||
-- Portable Operating System Interface (POSIX), The Open Group Base
|
||||
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
|
||||
Electrical and Electronics Engineers, Inc and The Open Group. In the
|
||||
event of any discrepancy between this version and the original IEEE and
|
||||
The Open Group Standard, the original IEEE and The Open Group Standard
|
||||
is the referee document. The original Standard can be obtained online at
|
||||
http://www.opengroup.org/unix/online.html .
|
60
lib/libm/complex/cproj.c
Normal file
60
lib/libm/complex/cproj.c
Normal file
@ -0,0 +1,60 @@
|
||||
/* $NetBSD: cproj.c,v 1.1 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2010 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: cproj.c,v 1.1 2010/09/15 16:11:29 christos Exp $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
#include <machine/ieee.h>
|
||||
|
||||
#include "../src/math_private.h"
|
||||
|
||||
/*
|
||||
* cproj(double complex z)
|
||||
*
|
||||
* These functions return the value of the projection (not stereographic!)
|
||||
* onto the Riemann sphere.
|
||||
*
|
||||
* z projects to z, except that all complex infinities (even those with one
|
||||
* infinite part and one NaN part) project to positive infinity on the real axis.
|
||||
* If z has an infinite part, then cproj(z) shall be equivalent to:
|
||||
*
|
||||
* INFINITY + I * copysign(0.0, cimag(z))
|
||||
*/
|
||||
double complex
|
||||
cproj(double complex z)
|
||||
{
|
||||
double_complex w = { .z = z };
|
||||
|
||||
if (isinf(creal(z) || isinf(cimag(z)))) {
|
||||
REAL_PART(w) = INFINITY;
|
||||
IMAG_PART(w) = copysign(0.0, cimag(z));
|
||||
}
|
||||
|
||||
return (w.z);
|
||||
}
|
61
lib/libm/complex/cprojf.c
Normal file
61
lib/libm/complex/cprojf.c
Normal file
@ -0,0 +1,61 @@
|
||||
/* $NetBSD: cprojf.c,v 1.1 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2010 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: cprojf.c,v 1.1 2010/09/15 16:11:29 christos Exp $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
#include <machine/ieee.h>
|
||||
|
||||
#include "../src/math_private.h"
|
||||
|
||||
/*
|
||||
* cprojf(float complex z)
|
||||
*
|
||||
* These functions return the value of the projection (not stereographic!)
|
||||
* onto the Riemann sphere.
|
||||
*
|
||||
* z projects to z, except that all complex infinities (even those with one
|
||||
* infinite part and one NaN part) project to positive infinity on the real axis.
|
||||
* If z has an infinite part, then cproj(z) shall be equivalent to:
|
||||
*
|
||||
* INFINITY + I * copysign(0.0, cimag(z))
|
||||
*/
|
||||
|
||||
float complex
|
||||
cprojf(float complex z)
|
||||
{
|
||||
float_complex w = { .z = z };
|
||||
|
||||
if (isinf(crealf(z) || isinf(cimagf(z)))) {
|
||||
REAL_PART(w) = INFINITY;
|
||||
IMAG_PART(w) = copysignf(0.0, cimagf(z));
|
||||
}
|
||||
|
||||
return (w.z);
|
||||
}
|
61
lib/libm/complex/cprojl.c
Normal file
61
lib/libm/complex/cprojl.c
Normal file
@ -0,0 +1,61 @@
|
||||
/* $NetBSD: cprojl.c,v 1.1 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2010 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: cprojl.c,v 1.1 2010/09/15 16:11:29 christos Exp $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
#include <machine/ieee.h>
|
||||
|
||||
#include "../src/math_private.h"
|
||||
|
||||
/*
|
||||
* cprojl(long double complex z)
|
||||
*
|
||||
* These functions return the value of the projection (not stereographic!)
|
||||
* onto the Riemann sphere.
|
||||
*
|
||||
* z projects to z, except that all complex infinities (even those with one
|
||||
* infinite part and one NaN part) project to positive infinity on the real axis.
|
||||
* If z has an infinite part, then cproj(z) shall be equivalent to:
|
||||
*
|
||||
* INFINITY + I * copysign(0.0, cimag(z))
|
||||
*/
|
||||
|
||||
long double complex
|
||||
cprojl(long double complex z)
|
||||
{
|
||||
long_double_complex w = { .z = z };
|
||||
|
||||
if (isinf(creall(z) || isinf(cimagl(z)))) {
|
||||
REAL_PART(w) = INFINITY;
|
||||
IMAG_PART(w) = copysignl(0.0, cimagl(z));
|
||||
}
|
||||
|
||||
return (w.z);
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: creal.3,v 1.1 2008/02/20 09:55:38 drochner Exp $
|
||||
.\" $NetBSD: creal.3,v 1.2 2010/09/15 16:11:29 christos Exp $
|
||||
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
||||
.TH "CREAL" 3P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
||||
.\" creal
|
||||
@ -13,6 +13,8 @@ double creal(double complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
float crealf(float complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
long double creall(long double complex\fP \fIz\fP\fB);
|
||||
.br
|
||||
\fP
|
||||
.SH DESCRIPTION
|
||||
.LP
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: creal.c,v 1.1 2007/08/20 16:01:36 drochner Exp $ */
|
||||
/* $NetBSD: creal.c,v 1.2 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Written by Matthias Drochner <drochner@NetBSD.org>.
|
||||
@ -6,10 +6,12 @@
|
||||
*/
|
||||
|
||||
#include <complex.h>
|
||||
#include "../src/math_private.h"
|
||||
|
||||
double
|
||||
creal(double complex z)
|
||||
{
|
||||
double_complex w = { .z = z };
|
||||
|
||||
return __real__ z;
|
||||
return (REAL_PART(w));
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: crealf.c,v 1.1 2007/08/20 16:01:36 drochner Exp $ */
|
||||
/* $NetBSD: crealf.c,v 1.2 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Written by Matthias Drochner <drochner@NetBSD.org>.
|
||||
@ -6,10 +6,12 @@
|
||||
*/
|
||||
|
||||
#include <complex.h>
|
||||
#include "../src/math_private.h"
|
||||
|
||||
float
|
||||
crealf(float complex z)
|
||||
{
|
||||
float_complex w = { .z = z };
|
||||
|
||||
return __real__ z;
|
||||
return (REAL_PART(w));
|
||||
}
|
||||
|
44
lib/libm/complex/creall.c
Normal file
44
lib/libm/complex/creall.c
Normal file
@ -0,0 +1,44 @@
|
||||
/* $NetBSD: creall.c,v 1.1 2010/09/15 16:11:29 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2010 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: creall.c,v 1.1 2010/09/15 16:11:29 christos Exp $");
|
||||
|
||||
#include <complex.h>
|
||||
#include "../src/math_private.h"
|
||||
|
||||
/*
|
||||
* creall(long double complex z)
|
||||
* This function returns the real part value of z.
|
||||
*/
|
||||
long double
|
||||
creall(long double complex z)
|
||||
{
|
||||
long_double_complex w = { .z = z };
|
||||
|
||||
return (REAL_PART(w));
|
||||
}
|
@ -26,7 +26,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" from: @(#)ieee.3 6.4 (Berkeley) 5/6/91
|
||||
.\" $NetBSD: ieee.3,v 1.20 2010/04/05 21:33:25 joerg Exp $
|
||||
.\" $NetBSD: ieee.3,v 1.21 2010/09/15 16:11:30 christos Exp $
|
||||
.\"
|
||||
.Dd February 25, 1994
|
||||
.Dt IEEE 3
|
||||
@ -34,12 +34,15 @@
|
||||
.Sh NAME
|
||||
.Nm copysign ,
|
||||
.Nm copysignf ,
|
||||
.Nm copysignl ,
|
||||
.Nm finite ,
|
||||
.Nm finitef ,
|
||||
.Nm ilogb ,
|
||||
.Nm ilogbf ,
|
||||
.Nm nextafter ,
|
||||
.Nm nextafterf ,
|
||||
.Nm nextafterl ,
|
||||
.Nm nexttoward ,
|
||||
.Nm remainder ,
|
||||
.Nm remainderf ,
|
||||
.Nm scalbn ,
|
||||
@ -53,6 +56,8 @@
|
||||
.Fn copysign "double x" "double y"
|
||||
.Ft float
|
||||
.Fn copysignf "float x" "float y"
|
||||
.Ft long double
|
||||
.Fn copysignl "long double x" "long double y"
|
||||
.Ft int
|
||||
.Fn finite "double x"
|
||||
.Ft int
|
||||
@ -65,6 +70,10 @@
|
||||
.Fn nextafter "double x" "double y"
|
||||
.Ft float
|
||||
.Fn nextafterf "float x" "float y"
|
||||
.Ft long double
|
||||
.Fn nextafterl "long double x" "long double y"
|
||||
.Ft double
|
||||
.Fn nexttoward "double x" "long double y"
|
||||
.Ft double
|
||||
.Fn remainder "double x" "double y"
|
||||
.Ft float
|
||||
@ -115,6 +124,18 @@ returns the next machine representable number from
|
||||
in direction
|
||||
.Fa y .
|
||||
.Pp
|
||||
.Fn nexttoward
|
||||
is equivalent to
|
||||
.Fn nextafter ,
|
||||
except that the second parameter has type
|
||||
.Ft long double
|
||||
and the function returns
|
||||
.Dv y
|
||||
converted to the type of the function if
|
||||
.Dv x
|
||||
equals
|
||||
.Dv y .
|
||||
.Pp
|
||||
.Fn remainder
|
||||
returns the remainder
|
||||
.Fa r
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
/*
|
||||
* from: @(#)fdlibm.h 5.1 93/09/24
|
||||
* $NetBSD: math_private.h,v 1.14 2010/01/11 16:28:39 christos Exp $
|
||||
* $NetBSD: math_private.h,v 1.15 2010/09/15 16:11:30 christos Exp $
|
||||
*/
|
||||
|
||||
#ifndef _MATH_PRIVATE_H_
|
||||
@ -170,6 +170,37 @@ do { \
|
||||
} while (/*CONSTCOND*/0)
|
||||
#endif
|
||||
|
||||
#ifdef _COMPLEX_H
|
||||
|
||||
/*
|
||||
* Quoting from ISO/IEC 9899:TC2:
|
||||
*
|
||||
* 6.2.5.13 Types
|
||||
* Each complex type has the same representation and alignment requirements as
|
||||
* an array type containing exactly two elements of the corresponding real type;
|
||||
* the first element is equal to the real part, and the second element to the
|
||||
* imaginary part, of the complex number.
|
||||
*/
|
||||
typedef union {
|
||||
float complex z;
|
||||
float parts[2];
|
||||
} float_complex;
|
||||
|
||||
typedef union {
|
||||
double complex z;
|
||||
double parts[2];
|
||||
} double_complex;
|
||||
|
||||
typedef union {
|
||||
long double complex z;
|
||||
long double complex parts[2];
|
||||
} long_double_complex;
|
||||
|
||||
#define REAL_PART(z) ((z).parts[0])
|
||||
#define IMAG_PART(z) ((z).parts[1])
|
||||
|
||||
#endif /* _COMPLEX_H */
|
||||
|
||||
/* ieee style elementary functions */
|
||||
extern double __ieee754_sqrt __P((double));
|
||||
extern double __ieee754_acos __P((double));
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: ieee.h,v 1.10 2007/02/02 23:07:44 christos Exp $ */
|
||||
/* $NetBSD: ieee.h,v 1.11 2010/09/15 16:11:28 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992, 1993
|
||||
@ -85,7 +85,9 @@ struct ieee_ext {
|
||||
* A NaN is a `signalling NaN' if its QUIETNAN bit is clear in its
|
||||
* high fraction; if the bit is set, it is a `quiet NaN'.
|
||||
*/
|
||||
#define EXT_EXP_INFNAN 32767
|
||||
#define EXT_EXP_INFNAN 0x7fff
|
||||
#define EXT_EXP_INF 0x7fff
|
||||
#define EXT_EXP_NAN 0x7fff
|
||||
|
||||
#if 0
|
||||
#define SNG_QUIETNAN (1 << 22)
|
||||
@ -105,3 +107,11 @@ union ieee_ext_u {
|
||||
long double extu_ld;
|
||||
struct ieee_ext extu_ext;
|
||||
};
|
||||
|
||||
#define extu_exp extu_ext.ext_exp
|
||||
#define extu_sign extu_ext.ext_sign
|
||||
#define extu_fracl extu_ext.ext_fracl
|
||||
#define extu_frach extu_ext.ext_frach
|
||||
|
||||
#define LDBL_NBIT 0x80000000
|
||||
#define mask_nbit_l(u) ((u).extu_frach &= ~LDBL_NBIT)
|
||||
|
Loading…
Reference in New Issue
Block a user