summaryrefslogtreecommitdiff
path: root/system/musl/complex-math2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/musl/complex-math2.patch')
-rw-r--r--system/musl/complex-math2.patch79
1 files changed, 0 insertions, 79 deletions
diff --git a/system/musl/complex-math2.patch b/system/musl/complex-math2.patch
deleted file mode 100644
index 49f5c3acd..000000000
--- a/system/musl/complex-math2.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 10e4bd3780050e75b72aac5d85c31816419bb17d Mon Sep 17 00:00:00 2001
-From: Rich Felker <dalias@aerifal.cx>
-Date: Wed, 11 Apr 2018 15:05:22 -0400
-Subject: [PATCH 1/2] fix incorrect results for catan with some inputs
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-the catan implementation from OpenBSD includes a FIXME-annotated
-"overflow" branch that produces a meaningless and incorrect
-large-magnitude result. it was reachable via three paths,
-corresponding to gotos removed by this commit, in order:
-
-1. pure imaginary argument with imaginary component greater than 1 in
- magnitude. this case does not seem at all exceptional and is
- handled (at least with the quality currently expected from our
- complex math functions) by the existing non-exceptional code path.
-
-2. arguments on the unit circle, including the pure-real argument 1.0.
- these are not exceptional except for ±i, which should produce
- results with infinite imaginary component and which lead to
- computation of atan2(±0,0) in the existing non-exceptional code
- path. such calls to atan2() however are well-defined by POSIX.
-
-3. the specific argument +i. this route should be unreachable due to
- the above (2), but subtle rounding effects might have made it
- possible in rare cases. continuing on the non-exceptional code path
- in this case would lead to computing the (real) log of an infinite
- argument, then producing a NAN when multiplying it by I.
-
-for now, remove the exceptional code paths entirely. replace the
-multiplication by I with construction of a complex number using the
-CMPLX macro so that the NAN issue (3) prevented cannot arise.
-
-with these changes, catan should give reasonably correct results for
-real arguments, and should no longer give completely-wrong results for
-pure-imaginary arguments outside the interval (-i,+i).
----
- src/complex/catan.c | 14 +-------------
- 1 file changed, 1 insertion(+), 13 deletions(-)
-
-diff --git a/src/complex/catan.c b/src/complex/catan.c
-index 39ce6cf2..7dc2afeb 100644
---- a/src/complex/catan.c
-+++ b/src/complex/catan.c
-@@ -91,29 +91,17 @@ double complex catan(double complex z)
- x = creal(z);
- y = cimag(z);
-
-- if (x == 0.0 && y > 1.0)
-- goto ovrf;
--
- x2 = x * x;
- a = 1.0 - x2 - (y * y);
-- if (a == 0.0)
-- goto ovrf;
-
- t = 0.5 * atan2(2.0 * x, a);
- w = _redupi(t);
-
- t = y - 1.0;
- a = x2 + (t * t);
-- if (a == 0.0)
-- goto ovrf;
-
- t = y + 1.0;
- a = (x2 + t * t)/a;
-- w = w + (0.25 * log(a)) * I;
-- return w;
--
--ovrf:
-- // FIXME
-- w = MAXNUM + MAXNUM * I;
-+ w = CMPLX(w, 0.25 * log(a));
- return w;
- }
---
-2.15.0
-