summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/gsl-poly-test-fix-pt1.patch
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2015-06-20 01:38:56 -0400
committerMark H Weaver <mhw@netris.org>2015-06-20 01:38:56 -0400
commit180a93c72a69e6e322da1226c4d439a321279490 (patch)
treee17b44767df911fa4058395ec5b9d35466a77a30 /gnu/packages/patches/gsl-poly-test-fix-pt1.patch
parentd80b0d4af54c56a2628ee285631cdcce2b21fd58 (diff)
gnu: gsl: Fix poly test on i686.
* gnu/packages/patches/gsl-poly-test-fix-pt1.patch, gnu/packages/patches/gsl-poly-test-fix-pt2.patch: New files. * gnu-system.am (dist_patch_DATA): Add them. * gnu/packages/maths.scm (gsl)[source]: Add patches.
Diffstat (limited to 'gnu/packages/patches/gsl-poly-test-fix-pt1.patch')
-rw-r--r--gnu/packages/patches/gsl-poly-test-fix-pt1.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/gnu/packages/patches/gsl-poly-test-fix-pt1.patch b/gnu/packages/patches/gsl-poly-test-fix-pt1.patch
new file mode 100644
index 0000000000..3d1ed4243c
--- /dev/null
+++ b/gnu/packages/patches/gsl-poly-test-fix-pt1.patch
@@ -0,0 +1,84 @@
+From 9cc12d0377dd634b1b97954d076b715f982853b7 Mon Sep 17 00:00:00 2001
+From: Patrick Alken <alken@colorado.edu>
+Date: Fri, 4 Apr 2014 13:36:16 -0600
+Subject: [PATCH] bug fix in sorting of complex numbers (bug #39055)
+
+---
+ poly/test.c | 49 ++++++++++++++++++++++++++++++-------------------
+ 1 file changed, 30 insertions(+), 19 deletions(-)
+
+diff --git a/poly/test.c b/poly/test.c
+index 9c147f6..d090802 100644
+--- a/poly/test.c
++++ b/poly/test.c
+@@ -25,11 +25,21 @@
+ #include <gsl/gsl_poly.h>
+ #include <gsl/gsl_heapsort.h>
+
++/* sort by Re(z) then by Im(z) */
+ static int
+ cmp_cplx(const double *a, const double *b)
+ {
+- double t = (a[0] * a[0] + a[1] * a[1]) - (b[0] * b[0] + b[1] * b[1]);
+- return t < 0.0 ? -1 : t > 0.0 ? 1 : 0;
++ double r = a[0] - b[0];
++
++ if (r == 0.0)
++ {
++ double t = a[1] - b[1];
++ return t < 0.0 ? -1 : t > 0.0 ? 1 : 0;
++ }
++ else if (r < 0.0)
++ return -1;
++ else
++ return 1;
+ }
+
+ int
+@@ -534,25 +544,26 @@ main (void)
+ Problem reported by Munagala Ramanath (bug #39055)
+ */
+
+- double a[16] = { 32, -48, -8, 28, -8, 16, -16, 12, -16, 6, 10, -17, 10, 2, -4, 1 };
++ double a[16] = { 32, -48, -8, 28, -8, 16, -16, 12,
++ -16, 6, 10, -17, 10, 2, -4, 1 };
+ double z[16*2];
+
+- double expected[16*20] = {
+- 1.0000000000000000, 0.00000000000000000,
+- 1.0000000000000000, 0.00000000000000000,
+- -1.0000000000000000, 0.00000000000000000,
+- -0.65893856175240950, 0.83459757287426684,
+- -0.65893856175240950, -0.83459757287426684,
+- -0.070891117403341281, -1.1359249087587791,
+- -0.070891117403341281, 1.1359249087587791,
+- 1.1142366961812986, -0.48083981203389980,
+- 1.1142366961812986, 0.48083981203389980,
+- -1.3066982484920768, 0.00000000000000000,
+- 0.57284747839410854, 1.1987808988289705,
+- 0.57284747839410854, -1.1987808988289705,
+- -1.6078107423472359, 0.00000000000000000,
+- 2.0000000000000000, 0.00000000000000000,
+- 2.0000000000000000, 0.00000000000000000 };
++ double expected[16*2] = {
++ -1.6078107423472359, 0.00000000000000000,
++ -1.3066982484920768, 0.00000000000000000,
++ -1.0000000000000000, 0.00000000000000000,
++ -0.65893856175240950, -0.83459757287426684,
++ -0.65893856175240950, 0.83459757287426684,
++ -0.070891117403341281, -1.1359249087587791,
++ -0.070891117403341281, 1.1359249087587791,
++ 0.57284747839410854, -1.1987808988289705,
++ 0.57284747839410854, 1.1987808988289705,
++ 1.0000000000000000, 0.00000000000000000,
++ 1.0000000000000000, 0.00000000000000000,
++ 1.1142366961812986, -0.48083981203389980,
++ 1.1142366961812986, 0.48083981203389980,
++ 2.0000000000000000, 0.00000000000000000,
++ 2.0000000000000000, 0.00000000000000000 };
+
+ int i;
+
+--
+2.4.3
+