FreeBSD Bugzilla – Attachment 187692 Details for
Bug 221341
C99 functions cpow, cpowf, cpowl, clog, clogf, clogl are missing
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for 11-RELEASE-p2
cpow.patch (text/plain), 17.92 KB, created by
Anonymized Account
on 2017-11-03 14:32:19 UTC
(
hide
)
Description:
Patch for 11-RELEASE-p2
Filename:
MIME Type:
Creator:
Anonymized Account
Created:
2017-11-03 14:32:19 UTC
Size:
17.92 KB
patch
obsolete
>diff -ruN lib/msun.orig/Makefile lib/msun/Makefile >--- lib/msun.orig/Makefile 2017-08-13 13:19:08.000000000 +0200 >+++ lib/msun/Makefile 2017-11-03 14:49:32.252602000 +0100 >@@ -79,7 +79,9 @@ > s_scalbln.c s_scalbn.c s_scalbnf.c s_signbit.c \ > s_signgam.c s_significand.c s_significandf.c s_sin.c s_sinf.c \ > s_tan.c s_tanf.c s_tanh.c s_tanhf.c s_tgammaf.c s_trunc.c s_truncf.c \ >- w_cabs.c w_cabsf.c w_drem.c w_dremf.c >+ w_cabs.c w_cabsf.c w_drem.c w_dremf.c \ >+ s_cpowf.c s_cpowl.c s_cpow.c \ >+ s_clog.c s_clogf.c s_clogl.c > > # Location of fpmath.h and _fpmath.h > .if exists(${LIBCSRCDIR}/${MACHINE_ARCH}) >@@ -221,6 +223,7 @@ > MLINKS+=tan.3 tanf.3 tan.3 tanl.3 > MLINKS+=tanh.3 tanhf.3 tanh.3 tanhl.3 > MLINKS+=trunc.3 truncf.3 trunc.3 truncl.3 >+MLINKS+=clog.3 cpow.3 > > .include <src.opts.mk> > >diff -ruN lib/msun.orig/man/clog.3 lib/msun/man/clog.3 >--- lib/msun.orig/man/clog.3 1970-01-01 01:00:00.000000000 +0100 >+++ lib/msun/man/clog.3 2017-11-02 19:43:53.560047000 +0100 >@@ -0,0 +1,73 @@ >+.\" $OpenBSD: clog.3,v 1.2 2013/06/05 03:40:26 tedu Exp $ >+.\" >+.\" Copyright (c) 2011 Martynas Venckus <martynas@openbsd.org> >+.\" >+.\" Permission to use, copy, modify, and distribute this software for any >+.\" purpose with or without fee is hereby granted, provided that the above >+.\" copyright notice and this permission notice appear in all copies. >+.\" >+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES >+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF >+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR >+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES >+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN >+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF >+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. >+.\" >+.Dd $Mdocdate: June 5 2013 $ >+.Dt CLOG 3 >+.Os >+.Sh NAME >+.Nm clog , >+.Nm clogf , >+.Nm clogl >+.Nd complex natural logarithm >+.Sh SYNOPSIS >+.In complex.h >+.Ft double complex >+.Fn clog "double complex z" >+.Ft float complex >+.Fn clogf "float complex z" >+.Ft long double complex >+.Fn clogl "long double complex z" >+.Sh DESCRIPTION >+The >+.Fn clog , >+.Fn clogf >+and >+.Fn clogl >+functions compute the complex logarithm to the base >+.Ms e >+(2.718...) of >+.Fa z . >+.Pp >+If >+.Fa z >+= x + iy, then >+.Bd -literal -offset indent >+clog(z) = log(sqrt(x^2 + y^2)) + i atan(y / x). >+.Ed >+.Sh RETURN VALUES >+The >+.Fn clog , >+.Fn clogf >+and >+.Fn clogl >+functions return the complex logarithm to the base >+.Ms e >+of >+.Fa z >+with imaginary part in the interval >+.Bq -Pi, Pi , >+and unbounded real part. >+.Sh SEE ALSO >+.Xr cexp 3 , >+.Xr cpow 3 >+.Sh STANDARDS >+The >+.Fn clog , >+.Fn clogf >+and >+.Fn clogl >+functions conform to >+.St -isoC-99 . >diff -ruN lib/msun.orig/man/complex.3 lib/msun/man/complex.3 >--- lib/msun.orig/man/complex.3 2017-08-13 13:19:09.000000000 +0200 >+++ lib/msun/man/complex.3 2017-11-02 20:39:51.520976000 +0100 >@@ -116,9 +116,3 @@ > .In complex.h > functions described here conform to > .St -isoC-99 . >-.Sh BUGS >-The logarithmic functions >-.Fn clog >-and the power functions >-.Fn cpow >-are not implemented. >diff -ruN lib/msun.orig/man/cpow.3 lib/msun/man/cpow.3 >--- lib/msun.orig/man/cpow.3 1970-01-01 01:00:00.000000000 +0100 >+++ lib/msun/man/cpow.3 2017-11-02 19:43:53.565240000 +0100 >@@ -0,0 +1,64 @@ >+.\" $OpenBSD: cpow.3,v 1.3 2013/06/05 03:40:26 tedu Exp $ >+.\" >+.\" Copyright (c) 2011 Martynas Venckus <martynas@openbsd.org> >+.\" >+.\" Permission to use, copy, modify, and distribute this software for any >+.\" purpose with or without fee is hereby granted, provided that the above >+.\" copyright notice and this permission notice appear in all copies. >+.\" >+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES >+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF >+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR >+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES >+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN >+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF >+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. >+.\" >+.Dd $Mdocdate: June 5 2013 $ >+.Dt CPOW 3 >+.Os >+.Sh NAME >+.Nm cpow , >+.Nm cpowf , >+.Nm cpowl >+.Nd complex power functions >+.Sh SYNOPSIS >+.In complex.h >+.Ft double complex >+.Fn cpow "double complex x" "double complex z" >+.Ft float complex >+.Fn cpowf "float complex x" "float complex z" >+.Ft long double complex >+.Fn cpowl "long double complex x" "long double complex z" >+.Sh DESCRIPTION >+The >+.Fn cpow , >+.Fn cpowf >+and >+.Fn cpowl >+functions compute the complex number >+.Fa x >+raised to the complex power >+.Fa z , >+with a branch cut along the negative real axis for the first argument. >+.Sh RETURN VALUES >+The >+.Fn cpow , >+.Fn cpowf >+and >+.Fn cpowl >+functions return the complex number >+.Fa x >+raised to the complex power >+.Fa z . >+.Sh SEE ALSO >+.Xr cexp 3 , >+.Xr clog 3 >+.Sh STANDARDS >+The >+.Fn cpow , >+.Fn cpowf >+and >+.Fn cpowl >+functions conform to >+.St -isoC-99 . >diff -ruN lib/msun.orig/src/s_clog.c lib/msun/src/s_clog.c >--- lib/msun.orig/src/s_clog.c 1970-01-01 01:00:00.000000000 +0100 >+++ lib/msun/src/s_clog.c 2017-11-02 20:31:38.991792000 +0100 >@@ -0,0 +1,73 @@ >+/* $OpenBSD: s_clog.c,v 1.7 2016/09/12 19:47:02 guenther Exp $ */ >+/* >+ * Copyright (c) 2008 Stephen L. Moshier <steve@moshier.net> >+ * >+ * Permission to use, copy, modify, and distribute this software for any >+ * purpose with or without fee is hereby granted, provided that the above >+ * copyright notice and this permission notice appear in all copies. >+ * >+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES >+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF >+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR >+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES >+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN >+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF >+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. >+ */ >+ >+/* clog.c >+ * >+ * Complex natural logarithm >+ * >+ * >+ * >+ * SYNOPSIS: >+ * >+ * double complex clog(); >+ * double complex z, w; >+ * >+ * w = clog (z); >+ * >+ * >+ * >+ * DESCRIPTION: >+ * >+ * Returns complex logarithm to the base e (2.718...) of >+ * the complex argument x. >+ * >+ * If z = x + iy, r = sqrt( x**2 + y**2 ), >+ * then >+ * w = log(r) + i arctan(y/x). >+ * >+ * The arctangent ranges from -PI to +PI. >+ * >+ * >+ * ACCURACY: >+ * >+ * Relative error: >+ * arithmetic domain # trials peak rms >+ * DEC -10,+10 7000 8.5e-17 1.9e-17 >+ * IEEE -10,+10 30000 5.0e-15 1.1e-16 >+ * >+ * Larger relative error can be observed for z near 1 +i0. >+ * In IEEE arithmetic the peak absolute error is 5.2e-16, rms >+ * absolute error 1.0e-16. >+ */ >+ >+#include <complex.h> >+#include <float.h> >+#include <math.h> >+ >+double complex >+clog(double complex z) >+{ >+ double complex w; >+ double p, rr; >+ >+ /*rr = sqrt( z->r * z->r + z->i * z->i );*/ >+ rr = cabs(z); >+ p = log(rr); >+ rr = atan2 (cimag (z), creal (z)); >+ w = p + rr * I; >+ return (w); >+} >diff -ruN lib/msun.orig/src/s_clogf.c lib/msun/src/s_clogf.c >--- lib/msun.orig/src/s_clogf.c 1970-01-01 01:00:00.000000000 +0100 >+++ lib/msun/src/s_clogf.c 2017-11-02 20:31:47.262488000 +0100 >@@ -0,0 +1,72 @@ >+/* $OpenBSD: s_clogf.c,v 1.3 2016/09/12 19:47:02 guenther Exp $ */ >+/* >+ * Copyright (c) 2008 Stephen L. Moshier <steve@moshier.net> >+ * >+ * Permission to use, copy, modify, and distribute this software for any >+ * purpose with or without fee is hereby granted, provided that the above >+ * copyright notice and this permission notice appear in all copies. >+ * >+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES >+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF >+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR >+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES >+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN >+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF >+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. >+ */ >+ >+/* clogf.c >+ * >+ * Complex natural logarithm >+ * >+ * >+ * >+ * SYNOPSIS: >+ * >+ * void clogf(); >+ * cmplxf z, w; >+ * >+ * clogf( &z, &w ); >+ * >+ * >+ * >+ * DESCRIPTION: >+ * >+ * Returns complex logarithm to the base e (2.718...) of >+ * the complex argument x. >+ * >+ * If z = x + iy, r = sqrt( x**2 + y**2 ), >+ * then >+ * w = log(r) + i arctan(y/x). >+ * >+ * The arctangent ranges from -PI to +PI. >+ * >+ * >+ * ACCURACY: >+ * >+ * Relative error: >+ * arithmetic domain # trials peak rms >+ * IEEE -10,+10 30000 1.9e-6 6.2e-8 >+ * >+ * Larger relative error can be observed for z near 1 +i0. >+ * In IEEE arithmetic the peak absolute error is 3.1e-7. >+ * >+ */ >+ >+#include <complex.h> >+#include <math.h> >+ >+float complex >+clogf(float complex z) >+{ >+ float complex w; >+ float p, rr, x, y; >+ >+ x = crealf(z); >+ y = cimagf(z); >+ rr = atan2f(y, x); >+ p = cabsf(z); >+ p = logf(p); >+ w = p + rr * I; >+ return (w); >+} >diff -ruN lib/msun.orig/src/s_clogl.c lib/msun/src/s_clogl.c >--- lib/msun.orig/src/s_clogl.c 1970-01-01 01:00:00.000000000 +0100 >+++ lib/msun/src/s_clogl.c 2017-11-02 20:31:57.318629000 +0100 >@@ -0,0 +1,73 @@ >+/* $OpenBSD: s_clogl.c,v 1.3 2016/09/12 19:47:02 guenther Exp $ */ >+ >+/* >+ * Copyright (c) 2008 Stephen L. Moshier <steve@moshier.net> >+ * >+ * Permission to use, copy, modify, and distribute this software for any >+ * purpose with or without fee is hereby granted, provided that the above >+ * copyright notice and this permission notice appear in all copies. >+ * >+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES >+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF >+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR >+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES >+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN >+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF >+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. >+ */ >+ >+/* clogl.c >+ * >+ * Complex natural logarithm >+ * >+ * >+ * >+ * SYNOPSIS: >+ * >+ * long double complex clogl(); >+ * long double complex z, w; >+ * >+ * w = clogl( z ); >+ * >+ * >+ * >+ * DESCRIPTION: >+ * >+ * Returns complex logarithm to the base e (2.718...) of >+ * the complex argument x. >+ * >+ * If z = x + iy, r = sqrt( x**2 + y**2 ), >+ * then >+ * w = log(r) + i arctan(y/x). >+ * >+ * The arctangent ranges from -PI to +PI. >+ * >+ * >+ * ACCURACY: >+ * >+ * Relative error: >+ * arithmetic domain # trials peak rms >+ * DEC -10,+10 7000 8.5e-17 1.9e-17 >+ * IEEE -10,+10 30000 5.0e-15 1.1e-16 >+ * >+ * Larger relative error can be observed for z near 1 +i0. >+ * In IEEE arithmetic the peak absolute error is 5.2e-16, rms >+ * absolute error 1.0e-16. >+ */ >+ >+#include <complex.h> >+#include <math.h> >+ >+long double complex >+clogl(long double complex z) >+{ >+ long double complex w; >+ long double p, rr; >+ >+ /*rr = sqrt(z->r * z->r + z->i * z->i);*/ >+ p = cabsl(z); >+ p = logl(p); >+ rr = atan2l(cimagl(z), creall(z)); >+ w = p + rr * I; >+ return (w); >+} >diff -ruN lib/msun.orig/src/s_cpow.c lib/msun/src/s_cpow.c >--- lib/msun.orig/src/s_cpow.c 1970-01-01 01:00:00.000000000 +0100 >+++ lib/msun/src/s_cpow.c 2017-11-02 20:31:22.231052000 +0100 >@@ -0,0 +1,72 @@ >+/* $OpenBSD: s_cpow.c,v 1.7 2016/09/12 19:47:02 guenther Exp $ */ >+/* >+ * Copyright (c) 2008 Stephen L. Moshier <steve@moshier.net> >+ * >+ * Permission to use, copy, modify, and distribute this software for any >+ * purpose with or without fee is hereby granted, provided that the above >+ * copyright notice and this permission notice appear in all copies. >+ * >+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES >+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF >+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR >+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES >+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN >+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF >+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. >+ */ >+ >+/* cpow >+ * >+ * Complex power function >+ * >+ * >+ * >+ * SYNOPSIS: >+ * >+ * double complex cpow(); >+ * double complex a, z, w; >+ * >+ * w = cpow (a, z); >+ * >+ * >+ * >+ * DESCRIPTION: >+ * >+ * Raises complex A to the complex Zth power. >+ * Definition is per AMS55 # 4.2.8, >+ * analytically equivalent to cpow(a,z) = cexp(z clog(a)). >+ * >+ * ACCURACY: >+ * >+ * Relative error: >+ * arithmetic domain # trials peak rms >+ * IEEE -10,+10 30000 9.4e-15 1.5e-15 >+ * >+ */ >+ >+#include <complex.h> >+#include <float.h> >+#include <math.h> >+ >+double complex >+cpow(double complex a, double complex z) >+{ >+ double complex w; >+ double x, y, r, theta, absa, arga; >+ >+ x = creal (z); >+ y = cimag (z); >+ absa = cabs (a); >+ if (absa == 0.0) { >+ return (0.0 + 0.0 * I); >+ } >+ arga = carg (a); >+ r = pow (absa, x); >+ theta = x * arga; >+ if (y != 0.0) { >+ r = r * exp (-y * arga); >+ theta = theta + y * log (absa); >+ } >+ w = r * cos (theta) + (r * sin (theta)) * I; >+ return (w); >+} >diff -ruN lib/msun.orig/src/s_cpowf.c lib/msun/src/s_cpowf.c >--- lib/msun.orig/src/s_cpowf.c 1970-01-01 01:00:00.000000000 +0100 >+++ lib/msun/src/s_cpowf.c 2017-11-02 19:43:53.621364000 +0100 >@@ -0,0 +1,71 @@ >+/* $OpenBSD: s_cpowf.c,v 1.2 2010/07/18 18:42:26 guenther Exp $ */ >+/* >+ * Copyright (c) 2008 Stephen L. Moshier <steve@moshier.net> >+ * >+ * Permission to use, copy, modify, and distribute this software for any >+ * purpose with or without fee is hereby granted, provided that the above >+ * copyright notice and this permission notice appear in all copies. >+ * >+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES >+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF >+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR >+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES >+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN >+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF >+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. >+ */ >+ >+/* cpowf >+ * >+ * Complex power function >+ * >+ * >+ * >+ * SYNOPSIS: >+ * >+ * float complex cpowf(); >+ * float complex a, z, w; >+ * >+ * w = cpowf (a, z); >+ * >+ * >+ * >+ * DESCRIPTION: >+ * >+ * Raises complex A to the complex Zth power. >+ * Definition is per AMS55 # 4.2.8, >+ * analytically equivalent to cpow(a,z) = cexp(z clog(a)). >+ * >+ * ACCURACY: >+ * >+ * Relative error: >+ * arithmetic domain # trials peak rms >+ * IEEE -10,+10 30000 9.4e-15 1.5e-15 >+ * >+ */ >+ >+#include <complex.h> >+#include <math.h> >+ >+float complex >+cpowf(float complex a, float complex z) >+{ >+ float complex w; >+ float x, y, r, theta, absa, arga; >+ >+ x = crealf(z); >+ y = cimagf(z); >+ absa = cabsf (a); >+ if (absa == 0.0f) { >+ return (0.0f + 0.0f * I); >+ } >+ arga = cargf (a); >+ r = powf (absa, x); >+ theta = x * arga; >+ if (y != 0.0f) { >+ r = r * expf (-y * arga); >+ theta = theta + y * logf (absa); >+ } >+ w = r * cosf (theta) + (r * sinf (theta)) * I; >+ return (w); >+} >diff -ruN lib/msun.orig/src/s_cpowl.c lib/msun/src/s_cpowl.c >--- lib/msun.orig/src/s_cpowl.c 1970-01-01 01:00:00.000000000 +0100 >+++ lib/msun/src/s_cpowl.c 2017-11-02 19:43:53.621457000 +0100 >@@ -0,0 +1,72 @@ >+/* $OpenBSD: s_cpowl.c,v 1.2 2011/07/20 19:28:33 martynas Exp $ */ >+ >+/* >+ * Copyright (c) 2008 Stephen L. Moshier <steve@moshier.net> >+ * >+ * Permission to use, copy, modify, and distribute this software for any >+ * purpose with or without fee is hereby granted, provided that the above >+ * copyright notice and this permission notice appear in all copies. >+ * >+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES >+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF >+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR >+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES >+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN >+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF >+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. >+ */ >+ >+/* cpowl >+ * >+ * Complex power function >+ * >+ * >+ * >+ * SYNOPSIS: >+ * >+ * long double complex cpowl(); >+ * long double complex a, z, w; >+ * >+ * w = cpowl (a, z); >+ * >+ * >+ * >+ * DESCRIPTION: >+ * >+ * Raises complex A to the complex Zth power. >+ * Definition is per AMS55 # 4.2.8, >+ * analytically equivalent to cpow(a,z) = cexp(z clog(a)). >+ * >+ * ACCURACY: >+ * >+ * Relative error: >+ * arithmetic domain # trials peak rms >+ * IEEE -10,+10 30000 9.4e-15 1.5e-15 >+ * >+ */ >+ >+#include <complex.h> >+#include <math.h> >+ >+long double complex >+cpowl(long double complex a, long double complex z) >+{ >+ long double complex w; >+ long double x, y, r, theta, absa, arga; >+ >+ x = creall(z); >+ y = cimagl(z); >+ absa = cabsl(a); >+ if (absa == 0.0L) { >+ return (0.0L + 0.0L * I); >+ } >+ arga = cargl(a); >+ r = powl(absa, x); >+ theta = x * arga; >+ if (y != 0.0L) { >+ r = r * expl(-y * arga); >+ theta = theta + y * logl(absa); >+ } >+ w = r * cosl(theta) + (r * sinl(theta)) * I; >+ return (w); >+} >diff -ruN lib/msun.orig/Symbol.map lib/msun/Symbol.map >--- lib/msun.orig/Symbol.map 2017-08-13 13:19:08.000000000 +0200 >+++ lib/msun/Symbol.map 2017-11-03 14:49:20.515266000 +0100 >@@ -279,6 +279,12 @@ > /* Implemented as weak aliases for imprecise versions */ > powl; > tgammal; >+ cpow; >+ cpowf; >+ cpowl; >+ clog; >+ clogf; >+ clogl; > }; > > /* First added in 11.0-CURRENT */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 221341
:
187692
|
187693