]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
Revert 20001.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / special_functions / 02_assoc_legendre / check_value.cc
index d99d31e6c9a0f08fd1d31167b52b2915daeba071..e393b4aa18347df2d5a0c3fb579e5c4b4e1eb46c 100644 (file)
@@ -1,6 +1,6 @@
 // { dg-do run { target c++11 } }
-// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__ -ffp-contract=off" }
-
+// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
+//
 // Copyright (C) 2016-2018 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -30,7 +30,7 @@
     { \
       std::cout << "line " << __LINE__ \
        << "  max_abs_frac = " << max_abs_frac \
-       << '\n'; \
+       << std::endl; \
     }
 #else
 #  include <testsuite_hooks.h>
@@ -148,53 +148,53 @@ const double toler002 = 2.5000000000000020e-13;
 // Test data for l=1, m=1.
 // max(|f - f_GSL|): 2.2204460492503131e-16 at index 12
 // max(|f - f_GSL| / |f_GSL|): 2.4227052612512390e-16
-// mean(f - f_GSL): -1.0573552615477681e-17
+// mean(f - f_GSL): 1.0573552615477681e-17
 // variance(f - f_GSL): 5.8695007828944331e-36
 // stddev(f - f_GSL): 2.4227052612512388e-18
 const testcase_assoc_legendre<double>
 data003[21] =
 {
-  { 0.0000000000000000, 1, 1, 
+  { -0.0000000000000000, 1, 1, 
          -1.0000000000000000, 0.0 },
-  { 0.43588989435406728, 1, 1, 
+  { -0.43588989435406728, 1, 1, 
          -0.90000000000000002, 0.0 },
-  { 0.59999999999999987, 1, 1, 
+  { -0.59999999999999987, 1, 1, 
          -0.80000000000000004, 0.0 },
-  { 0.71414284285428509, 1, 1, 
+  { -0.71414284285428509, 1, 1, 
          -0.69999999999999996, 0.0 },
-  { 0.80000000000000004, 1, 1, 
+  { -0.80000000000000004, 1, 1, 
          -0.59999999999999998, 0.0 },
-  { 0.86602540378443860, 1, 1, 
+  { -0.86602540378443860, 1, 1, 
          -0.50000000000000000, 0.0 },
-  { 0.91651513899116799, 1, 1, 
+  { -0.91651513899116799, 1, 1, 
          -0.39999999999999991, 0.0 },
-  { 0.95393920141694555, 1, 1, 
+  { -0.95393920141694555, 1, 1, 
          -0.29999999999999993, 0.0 },
-  { 0.97979589711327120, 1, 1, 
+  { -0.97979589711327120, 1, 1, 
          -0.19999999999999996, 0.0 },
-  { 0.99498743710661997, 1, 1, 
+  { -0.99498743710661997, 1, 1, 
          -0.099999999999999978, 0.0 },
-  { 1.0000000000000000, 1, 1, 
+  { -1.0000000000000000, 1, 1, 
          0.0000000000000000, 0.0 },
-  { 0.99498743710661997, 1, 1, 
+  { -0.99498743710661997, 1, 1, 
          0.10000000000000009, 0.0 },
-  { 0.97979589711327120, 1, 1, 
+  { -0.97979589711327120, 1, 1, 
          0.20000000000000018, 0.0 },
-  { 0.95393920141694577, 1, 1, 
+  { -0.95393920141694577, 1, 1, 
          0.30000000000000004, 0.0 },
-  { 0.91651513899116788, 1, 1, 
+  { -0.91651513899116788, 1, 1, 
          0.40000000000000013, 0.0 },
-  { 0.86602540378443860, 1, 1, 
+  { -0.86602540378443860, 1, 1, 
          0.50000000000000000, 0.0 },
-  { 0.79999999999999993, 1, 1, 
+  { -0.79999999999999993, 1, 1, 
          0.60000000000000009, 0.0 },
-  { 0.71414284285428475, 1, 1, 
+  { -0.71414284285428475, 1, 1, 
          0.70000000000000018, 0.0 },
-  { 0.59999999999999987, 1, 1, 
+  { -0.59999999999999987, 1, 1, 
          0.80000000000000004, 0.0 },
-  { 0.43588989435406711, 1, 1, 
+  { -0.43588989435406711, 1, 1, 
          0.90000000000000013, 0.0 },
-  { 0.0000000000000000, 1, 1, 
+  { -0.0000000000000000, 1, 1, 
          1.0000000000000000, 0.0 },
 };
 const double toler003 = 2.5000000000000020e-13;
@@ -256,53 +256,53 @@ const double toler004 = 2.5000000000000020e-13;
 // Test data for l=2, m=1.
 // max(|f - f_GSL|): 2.2204460492503131e-16 at index 3
 // max(|f - f_GSL| / |f_GSL|): 3.7770554319736585e-16
-// mean(f - f_GSL): 1.0573552615477681e-17
+// mean(f - f_GSL): -1.0573552615477681e-17
 // variance(f - f_GSL): 5.8695007828944331e-36
 // stddev(f - f_GSL): 2.4227052612512388e-18
 const testcase_assoc_legendre<double>
 data005[21] =
 {
-  { -0.0000000000000000, 2, 1, 
+  { 0.0000000000000000, 2, 1, 
          -1.0000000000000000, 0.0 },
-  { -1.1769027147559816, 2, 1, 
+  { 1.1769027147559816, 2, 1, 
          -0.90000000000000002, 0.0 },
-  { -1.4399999999999999, 2, 1, 
+  { 1.4399999999999999, 2, 1, 
          -0.80000000000000004, 0.0 },
-  { -1.4996999699939983, 2, 1, 
+  { 1.4996999699939983, 2, 1, 
          -0.69999999999999996, 0.0 },
-  { -1.4399999999999999, 2, 1, 
+  { 1.4399999999999999, 2, 1, 
          -0.59999999999999998, 0.0 },
-  { -1.2990381056766580, 2, 1, 
+  { 1.2990381056766580, 2, 1, 
          -0.50000000000000000, 0.0 },
-  { -1.0998181667894014, 2, 1, 
+  { 1.0998181667894014, 2, 1, 
          -0.39999999999999991, 0.0 },
-  { -0.85854528127525076, 2, 1, 
+  { 0.85854528127525076, 2, 1, 
          -0.29999999999999993, 0.0 },
-  { -0.58787753826796263, 2, 1, 
+  { 0.58787753826796263, 2, 1, 
          -0.19999999999999996, 0.0 },
-  { -0.29849623113198592, 2, 1, 
+  { 0.29849623113198592, 2, 1, 
          -0.099999999999999978, 0.0 },
-  { 0.0000000000000000, 2, 1, 
+  { -0.0000000000000000, 2, 1, 
          0.0000000000000000, 0.0 },
-  { 0.29849623113198626, 2, 1, 
+  { -0.29849623113198626, 2, 1, 
          0.10000000000000009, 0.0 },
-  { 0.58787753826796330, 2, 1, 
+  { -0.58787753826796330, 2, 1, 
          0.20000000000000018, 0.0 },
-  { 0.85854528127525132, 2, 1, 
+  { -0.85854528127525132, 2, 1, 
          0.30000000000000004, 0.0 },
-  { 1.0998181667894018, 2, 1, 
+  { -1.0998181667894018, 2, 1, 
          0.40000000000000013, 0.0 },
-  { 1.2990381056766580, 2, 1, 
+  { -1.2990381056766580, 2, 1, 
          0.50000000000000000, 0.0 },
-  { 1.4400000000000002, 2, 1, 
+  { -1.4400000000000002, 2, 1, 
          0.60000000000000009, 0.0 },
-  { 1.4996999699939983, 2, 1, 
+  { -1.4996999699939983, 2, 1, 
          0.70000000000000018, 0.0 },
-  { 1.4399999999999999, 2, 1, 
+  { -1.4399999999999999, 2, 1, 
          0.80000000000000004, 0.0 },
-  { 1.1769027147559812, 2, 1, 
+  { -1.1769027147559812, 2, 1, 
          0.90000000000000013, 0.0 },
-  { 0.0000000000000000, 2, 1, 
+  { -0.0000000000000000, 2, 1, 
          1.0000000000000000, 0.0 },
 };
 const double toler005 = 2.5000000000000020e-13;
@@ -418,53 +418,53 @@ const double toler007 = 2.5000000000000020e-13;
 // Test data for l=5, m=1.
 // max(|f - f_GSL|): 6.6613381477509392e-16 at index 14
 // max(|f - f_GSL| / |f_GSL|): 5.5186908001167120e-16
-// mean(f - f_GSL): 1.0573552615477681e-17
+// mean(f - f_GSL): -1.0573552615477681e-17
 // variance(f - f_GSL): 5.8695007828944331e-36
 // stddev(f - f_GSL): 2.4227052612512388e-18
 const testcase_assoc_legendre<double>
 data008[21] =
 {
-  { -0.0000000000000000, 5, 1, 
+  { 0.0000000000000000, 5, 1, 
          -1.0000000000000000, 0.0 },
-  { 2.8099369608350981, 5, 1, 
+  { -2.8099369608350981, 5, 1, 
          -0.90000000000000002, 0.0 },
-  { 0.72180000000000089, 5, 1, 
+  { -0.72180000000000089, 5, 1, 
          -0.80000000000000004, 0.0 },
-  { -1.0951826834447254, 5, 1, 
+  { 1.0951826834447254, 5, 1, 
          -0.69999999999999996, 0.0 },
-  { -1.9775999999999998, 5, 1, 
+  { 1.9775999999999998, 5, 1, 
          -0.59999999999999998, 0.0 },
-  { -1.9282596881137892, 5, 1, 
+  { 1.9282596881137892, 5, 1, 
          -0.50000000000000000, 0.0 },
-  { -1.2070504380513671, 5, 1, 
+  { 1.2070504380513671, 5, 1, 
          -0.39999999999999991, 0.0 },
-  { -0.16079837663884300, 5, 1, 
+  { 0.16079837663884300, 5, 1, 
          -0.29999999999999993, 0.0 },
-  { 0.87005875663658538, 5, 1, 
+  { -0.87005875663658538, 5, 1, 
          -0.19999999999999996, 0.0 },
-  { 1.6083350053680323, 5, 1, 
+  { -1.6083350053680323, 5, 1, 
          -0.099999999999999978, 0.0 },
-  { 1.8750000000000000, 5, 1, 
+  { -1.8750000000000000, 5, 1, 
          0.0000000000000000, 0.0 },
-  { 1.6083350053680314, 5, 1, 
+  { -1.6083350053680314, 5, 1, 
          0.10000000000000009, 0.0 },
-  { 0.87005875663658327, 5, 1, 
+  { -0.87005875663658327, 5, 1, 
          0.20000000000000018, 0.0 },
-  { -0.16079837663884422, 5, 1, 
+  { 0.16079837663884422, 5, 1, 
          0.30000000000000004, 0.0 },
-  { -1.2070504380513694, 5, 1, 
+  { 1.2070504380513694, 5, 1, 
          0.40000000000000013, 0.0 },
-  { -1.9282596881137892, 5, 1, 
+  { 1.9282596881137892, 5, 1, 
          0.50000000000000000, 0.0 },
-  { -1.9775999999999998, 5, 1, 
+  { 1.9775999999999998, 5, 1, 
          0.60000000000000009, 0.0 },
-  { -1.0951826834447216, 5, 1, 
+  { 1.0951826834447216, 5, 1, 
          0.70000000000000018, 0.0 },
-  { 0.72180000000000089, 5, 1, 
+  { -0.72180000000000089, 5, 1, 
          0.80000000000000004, 0.0 },
-  { 2.8099369608350999, 5, 1, 
+  { -2.8099369608350999, 5, 1, 
          0.90000000000000013, 0.0 },
-  { -0.0000000000000000, 5, 1, 
+  { 0.0000000000000000, 5, 1, 
          1.0000000000000000, 0.0 },
 };
 const double toler008 = 2.5000000000000020e-13;
@@ -526,53 +526,53 @@ const double toler009 = 2.5000000000000020e-13;
 // Test data for l=5, m=5.
 // max(|f - f_GSL|): 1.0231815394945443e-12 at index 12
 // max(|f - f_GSL| / |f_GSL|): 1.1990652164995755e-15
-// mean(f - f_GSL): -3.1128538899966297e-14
+// mean(f - f_GSL): 3.1128538899966297e-14
 // variance(f - f_GSL): 5.0871761537452526e-29
 // stddev(f - f_GSL): 7.1324442891236469e-15
 const testcase_assoc_legendre<double>
 data010[21] =
 {
-  { 0.0000000000000000, 5, 5, 
+  { -0.0000000000000000, 5, 5, 
          -1.0000000000000000, 0.0 },
-  { 14.870165800941818, 5, 5, 
+  { -14.870165800941818, 5, 5, 
          -0.90000000000000002, 0.0 },
-  { 73.483199999999925, 5, 5, 
+  { -73.483199999999925, 5, 5, 
          -0.80000000000000004, 0.0 },
-  { 175.53238298794764, 5, 5, 
+  { -175.53238298794764, 5, 5, 
          -0.69999999999999996, 0.0 },
-  { 309.65760000000006, 5, 5, 
+  { -309.65760000000006, 5, 5, 
          -0.59999999999999998, 0.0 },
-  { 460.34662869916559, 5, 5, 
+  { -460.34662869916559, 5, 5, 
          -0.50000000000000000, 0.0 },
-  { 611.12496255819883, 5, 5, 
+  { -611.12496255819883, 5, 5, 
          -0.39999999999999991, 0.0 },
-  { 746.50941479523703, 5, 5, 
+  { -746.50941479523703, 5, 5, 
          -0.29999999999999993, 0.0 },
-  { 853.31600434671316, 5, 5, 
+  { -853.31600434671316, 5, 5, 
          -0.19999999999999996, 0.0 },
-  { 921.55189181724734, 5, 5, 
+  { -921.55189181724734, 5, 5, 
          -0.099999999999999978, 0.0 },
-  { 945.00000000000000, 5, 5, 
+  { -945.00000000000000, 5, 5, 
          0.0000000000000000, 0.0 },
-  { 921.55189181724734, 5, 5, 
+  { -921.55189181724734, 5, 5, 
          0.10000000000000009, 0.0 },
-  { 853.31600434671316, 5, 5, 
+  { -853.31600434671316, 5, 5, 
          0.20000000000000018, 0.0 },
-  { 746.50941479523760, 5, 5, 
+  { -746.50941479523760, 5, 5, 
          0.30000000000000004, 0.0 },
-  { 611.12496255819838, 5, 5, 
+  { -611.12496255819838, 5, 5, 
          0.40000000000000013, 0.0 },
-  { 460.34662869916559, 5, 5, 
+  { -460.34662869916559, 5, 5, 
          0.50000000000000000, 0.0 },
-  { 309.65759999999989, 5, 5, 
+  { -309.65759999999989, 5, 5, 
          0.60000000000000009, 0.0 },
-  { 175.53238298794724, 5, 5, 
+  { -175.53238298794724, 5, 5, 
          0.70000000000000018, 0.0 },
-  { 73.483199999999925, 5, 5, 
+  { -73.483199999999925, 5, 5, 
          0.80000000000000004, 0.0 },
-  { 14.870165800941789, 5, 5, 
+  { -14.870165800941789, 5, 5, 
          0.90000000000000013, 0.0 },
-  { 0.0000000000000000, 5, 5, 
+  { -0.0000000000000000, 5, 5, 
          1.0000000000000000, 0.0 },
 };
 const double toler010 = 2.5000000000000020e-13;
@@ -634,53 +634,53 @@ const double toler011 = 2.5000000000000020e-13;
 // Test data for l=10, m=1.
 // max(|f - f_GSL|): 1.3322676295501878e-15 at index 14
 // max(|f - f_GSL| / |f_GSL|): 5.3672431731635395e-16
-// mean(f - f_GSL): -6.3441315692866085e-17
+// mean(f - f_GSL): 6.3441315692866085e-17
 // variance(f - f_GSL): 2.1130202818419960e-34
 // stddev(f - f_GSL): 1.4536231567507432e-17
 const testcase_assoc_legendre<double>
 data012[21] =
 {
-  { 0.0000000000000000, 10, 1, 
+  { -0.0000000000000000, 10, 1, 
          -1.0000000000000000, 0.0 },
-  { 3.0438748781479039, 10, 1, 
+  { -3.0438748781479039, 10, 1, 
          -0.90000000000000002, 0.0 },
-  { 0.87614260800000254, 10, 1, 
+  { -0.87614260800000254, 10, 1, 
          -0.80000000000000004, 0.0 },
-  { -2.9685359952934527, 10, 1, 
+  { 2.9685359952934527, 10, 1, 
          -0.69999999999999996, 0.0 },
-  { -1.2511825919999997, 10, 1, 
+  { 1.2511825919999997, 10, 1, 
          -0.59999999999999998, 0.0 },
-  { 2.0066877394361260, 10, 1, 
+  { -2.0066877394361260, 10, 1, 
          -0.50000000000000000, 0.0 },
-  { 2.4822196173476647, 10, 1, 
+  { -2.4822196173476647, 10, 1, 
          -0.39999999999999991, 0.0 },
-  { 0.12309508907433593, 10, 1, 
+  { -0.12309508907433593, 10, 1, 
          -0.29999999999999993, 0.0 },
-  { -2.2468221751958413, 10, 1, 
+  { 2.2468221751958413, 10, 1, 
          -0.19999999999999996, 0.0 },
-  { -2.2472659777983512, 10, 1, 
+  { 2.2472659777983512, 10, 1, 
          -0.099999999999999978, 0.0 },
-  { 0.0000000000000000, 10, 1, 
+  { -0.0000000000000000, 10, 1, 
          0.0000000000000000, 0.0 },
-  { 2.2472659777983535, 10, 1, 
+  { -2.2472659777983535, 10, 1, 
          0.10000000000000009, 0.0 },
-  { 2.2468221751958377, 10, 1, 
+  { -2.2468221751958377, 10, 1, 
          0.20000000000000018, 0.0 },
-  { -0.12309508907433910, 10, 1, 
+  { 0.12309508907433910, 10, 1, 
          0.30000000000000004, 0.0 },
-  { -2.4822196173476669, 10, 1, 
+  { 2.4822196173476669, 10, 1, 
          0.40000000000000013, 0.0 },
-  { -2.0066877394361260, 10, 1, 
+  { 2.0066877394361260, 10, 1, 
          0.50000000000000000, 0.0 },
-  { 1.2511825920000037, 10, 1, 
+  { -1.2511825920000037, 10, 1, 
          0.60000000000000009, 0.0 },
-  { 2.9685359952934505, 10, 1, 
+  { -2.9685359952934505, 10, 1, 
          0.70000000000000018, 0.0 },
-  { -0.87614260800000254, 10, 1, 
+  { 0.87614260800000254, 10, 1, 
          0.80000000000000004, 0.0 },
-  { -3.0438748781478981, 10, 1, 
+  { 3.0438748781478981, 10, 1, 
          0.90000000000000013, 0.0 },
-  { -0.0000000000000000, 10, 1, 
+  { 0.0000000000000000, 10, 1, 
          1.0000000000000000, 0.0 },
 };
 const double toler012 = 2.5000000000000020e-13;
@@ -742,53 +742,53 @@ const double toler013 = 2.5000000000000020e-13;
 // Test data for l=10, m=5.
 // max(|f - f_GSL|): 2.9103830456733704e-11 at index 12
 // max(|f - f_GSL| / |f_GSL|): 1.4825078449301893e-15
-// mean(f - f_GSL): -2.4253192047278085e-12
+// mean(f - f_GSL): 2.4253192047278085e-12
 // variance(f - f_GSL): 3.0881409535313035e-25
 // stddev(f - f_GSL): 5.5571044200476413e-13
 const testcase_assoc_legendre<double>
 data014[21] =
 {
-  { -0.0000000000000000, 10, 5, 
+  { 0.0000000000000000, 10, 5, 
          -1.0000000000000000, 0.0 },
-  { -21343.618518164680, 10, 5, 
+  { 21343.618518164680, 10, 5, 
          -0.90000000000000002, 0.0 },
-  { -40457.016407807983, 10, 5, 
+  { 40457.016407807983, 10, 5, 
          -0.80000000000000004, 0.0 },
-  { -20321.279317331315, 10, 5, 
+  { 20321.279317331315, 10, 5, 
          -0.69999999999999996, 0.0 },
-  { 14410.820616192004, 10, 5, 
+  { -14410.820616192004, 10, 5, 
          -0.59999999999999998, 0.0 },
-  { 30086.169706116176, 10, 5, 
+  { -30086.169706116176, 10, 5, 
          -0.50000000000000000, 0.0 },
-  { 17177.549337582834, 10, 5, 
+  { -17177.549337582834, 10, 5, 
          -0.39999999999999991, 0.0 },
-  { -9272.5119495412546, 10, 5, 
+  { 9272.5119495412546, 10, 5, 
          -0.29999999999999993, 0.0 },
-  { -26591.511184414714, 10, 5, 
+  { 26591.511184414714, 10, 5, 
          -0.19999999999999996, 0.0 },
-  { -21961.951238504211, 10, 5, 
+  { 21961.951238504211, 10, 5, 
          -0.099999999999999978, 0.0 },
-  { 0.0000000000000000, 10, 5, 
+  { -0.0000000000000000, 10, 5, 
          0.0000000000000000, 0.0 },
-  { 21961.951238504229, 10, 5, 
+  { -21961.951238504229, 10, 5, 
          0.10000000000000009, 0.0 },
-  { 26591.511184414703, 10, 5, 
+  { -26591.511184414703, 10, 5, 
          0.20000000000000018, 0.0 },
-  { 9272.5119495412364, 10, 5, 
+  { -9272.5119495412364, 10, 5, 
          0.30000000000000004, 0.0 },
-  { -17177.549337582877, 10, 5, 
+  { 17177.549337582877, 10, 5, 
          0.40000000000000013, 0.0 },
-  { -30086.169706116176, 10, 5, 
+  { 30086.169706116176, 10, 5, 
          0.50000000000000000, 0.0 },
-  { -14410.820616191972, 10, 5, 
+  { 14410.820616191972, 10, 5, 
          0.60000000000000009, 0.0 },
-  { 20321.279317331391, 10, 5, 
+  { -20321.279317331391, 10, 5, 
          0.70000000000000018, 0.0 },
-  { 40457.016407807983, 10, 5, 
+  { -40457.016407807983, 10, 5, 
          0.80000000000000004, 0.0 },
-  { 21343.618518164636, 10, 5, 
+  { -21343.618518164636, 10, 5, 
          0.90000000000000013, 0.0 },
-  { -0.0000000000000000, 10, 5, 
+  { 0.0000000000000000, 10, 5, 
          1.0000000000000000, 0.0 },
 };
 const double toler014 = 2.5000000000000020e-13;
@@ -904,53 +904,53 @@ const double toler016 = 2.5000000000000020e-13;
 // Test data for l=20, m=1.
 // max(|f - f_GSL|): 1.3322676295501878e-15 at index 12
 // max(|f - f_GSL| / |f_GSL|): 1.0752784502271902e-15
-// mean(f - f_GSL): -1.4274296030894871e-16
+// mean(f - f_GSL): 1.4274296030894871e-16
 // variance(f - f_GSL): 1.0697165176825104e-33
 // stddev(f - f_GSL): 3.2706521026891724e-17
 const testcase_assoc_legendre<double>
 data017[21] =
 {
-  { -0.0000000000000000, 20, 1, 
+  { 0.0000000000000000, 20, 1, 
          -1.0000000000000000, 0.0 },
-  { -4.3838334818220499, 20, 1, 
+  { 4.3838334818220499, 20, 1, 
          -0.90000000000000002, 0.0 },
-  { 0.63138296146340844, 20, 1, 
+  { -0.63138296146340844, 20, 1, 
          -0.80000000000000004, 0.0 },
-  { -0.72274871413391395, 20, 1, 
+  { 0.72274871413391395, 20, 1, 
          -0.69999999999999996, 0.0 },
-  { 2.3203528743824910, 20, 1, 
+  { -2.3203528743824910, 20, 1, 
          -0.59999999999999998, 0.0 },
-  { -3.7399919228791405, 20, 1, 
+  { 3.7399919228791405, 20, 1, 
          -0.50000000000000000, 0.0 },
-  { 3.1692202279270085, 20, 1, 
+  { -3.1692202279270085, 20, 1, 
          -0.39999999999999991, 0.0 },
-  { -0.15804468835345031, 20, 1, 
+  { 0.15804468835345031, 20, 1, 
          -0.29999999999999993, 0.0 },
-  { -3.0366182393271171, 20, 1, 
+  { 3.0366182393271171, 20, 1, 
          -0.19999999999999996, 0.0 },
-  { 3.2115523815580209, 20, 1, 
+  { -3.2115523815580209, 20, 1, 
          -0.099999999999999978, 0.0 },
-  { -0.0000000000000000, 20, 1, 
+  { 0.0000000000000000, 20, 1, 
          0.0000000000000000, 0.0 },
-  { -3.2115523815580169, 20, 1, 
+  { 3.2115523815580169, 20, 1, 
          0.10000000000000009, 0.0 },
-  { 3.0366182393271259, 20, 1, 
+  { -3.0366182393271259, 20, 1, 
          0.20000000000000018, 0.0 },
-  { 0.15804468835344135, 20, 1, 
+  { -0.15804468835344135, 20, 1, 
          0.30000000000000004, 0.0 },
-  { -3.1692202279269970, 20, 1, 
+  { 3.1692202279269970, 20, 1, 
          0.40000000000000013, 0.0 },
-  { 3.7399919228791405, 20, 1, 
+  { -3.7399919228791405, 20, 1, 
          0.50000000000000000, 0.0 },
-  { -2.3203528743824995, 20, 1, 
+  { 2.3203528743824995, 20, 1, 
          0.60000000000000009, 0.0 },
-  { 0.72274871413393793, 20, 1, 
+  { -0.72274871413393793, 20, 1, 
          0.70000000000000018, 0.0 },
-  { -0.63138296146340844, 20, 1, 
+  { 0.63138296146340844, 20, 1, 
          0.80000000000000004, 0.0 },
-  { 4.3838334818220686, 20, 1, 
+  { -4.3838334818220686, 20, 1, 
          0.90000000000000013, 0.0 },
-  { -0.0000000000000000, 20, 1, 
+  { 0.0000000000000000, 20, 1, 
          1.0000000000000000, 0.0 },
 };
 const double toler017 = 2.5000000000000020e-13;
@@ -1012,53 +1012,53 @@ const double toler018 = 2.5000000000000020e-13;
 // Test data for l=20, m=5.
 // max(|f - f_GSL|): 1.2805685400962830e-09 at index 14
 // max(|f - f_GSL| / |f_GSL|): 2.0861530799041223e-15
-// mean(f - f_GSL): -1.1641532182693481e-10
+// mean(f - f_GSL): 1.1641532182693481e-10
 // variance(f - f_GSL): 7.1150767569361226e-22
 // stddev(f - f_GSL): 2.6674101216228678e-11
 const testcase_assoc_legendre<double>
 data019[21] =
 {
-  { 0.0000000000000000, 20, 5, 
+  { -0.0000000000000000, 20, 5, 
          -1.0000000000000000, 0.0 },
-  { 315702.32715134218, 20, 5, 
+  { -315702.32715134218, 20, 5, 
          -0.90000000000000002, 0.0 },
-  { -503060.91484852589, 20, 5, 
+  { 503060.91484852589, 20, 5, 
          -0.80000000000000004, 0.0 },
-  { 298127.28360361955, 20, 5, 
+  { -298127.28360361955, 20, 5, 
          -0.69999999999999996, 0.0 },
-  { 114444.61447464029, 20, 5, 
+  { -114444.61447464029, 20, 5, 
          -0.59999999999999998, 0.0 },
-  { -543428.40914592845, 20, 5, 
+  { 543428.40914592845, 20, 5, 
          -0.50000000000000000, 0.0 },
-  { 613842.07728185481, 20, 5, 
+  { -613842.07728185481, 20, 5, 
          -0.39999999999999991, 0.0 },
-  { -143765.42411271061, 20, 5, 
+  { 143765.42411271061, 20, 5, 
          -0.29999999999999993, 0.0 },
-  { -472600.45321372285, 20, 5, 
+  { 472600.45321372285, 20, 5, 
          -0.19999999999999996, 0.0 },
-  { 563861.76771496492, 20, 5, 
+  { -563861.76771496492, 20, 5, 
          -0.099999999999999978, 0.0 },
-  { -0.0000000000000000, 20, 5, 
+  { 0.0000000000000000, 20, 5, 
          0.0000000000000000, 0.0 },
-  { -563861.76771496458, 20, 5, 
+  { 563861.76771496458, 20, 5, 
          0.10000000000000009, 0.0 },
-  { 472600.45321372483, 20, 5, 
+  { -472600.45321372483, 20, 5, 
          0.20000000000000018, 0.0 },
-  { 143765.42411270936, 20, 5, 
+  { -143765.42411270936, 20, 5, 
          0.30000000000000004, 0.0 },
-  { -613842.07728185353, 20, 5, 
+  { 613842.07728185353, 20, 5, 
          0.40000000000000013, 0.0 },
-  { 543428.40914592845, 20, 5, 
+  { -543428.40914592845, 20, 5, 
          0.50000000000000000, 0.0 },
-  { -114444.61447464178, 20, 5, 
+  { 114444.61447464178, 20, 5, 
          0.60000000000000009, 0.0 },
-  { -298127.28360361519, 20, 5, 
+  { 298127.28360361519, 20, 5, 
          0.70000000000000018, 0.0 },
-  { 503060.91484852589, 20, 5, 
+  { -503060.91484852589, 20, 5, 
          0.80000000000000004, 0.0 },
-  { -315702.32715133618, 20, 5, 
+  { 315702.32715133618, 20, 5, 
          0.90000000000000013, 0.0 },
-  { -0.0000000000000000, 20, 5, 
+  { 0.0000000000000000, 20, 5, 
          1.0000000000000000, 0.0 },
 };
 const double toler019 = 2.5000000000000020e-13;
@@ -1228,53 +1228,53 @@ const double toler022 = 2.5000000000000020e-13;
 // Test data for l=50, m=1.
 // max(|f - f_GSL|): 4.4408920985006262e-15 at index 3
 // max(|f - f_GSL| / |f_GSL|): 6.6657627150738456e-16
-// mean(f - f_GSL): -6.3441315692866085e-17
+// mean(f - f_GSL): 6.3441315692866085e-17
 // variance(f - f_GSL): 2.1130202818419960e-34
 // stddev(f - f_GSL): 1.4536231567507432e-17
 const testcase_assoc_legendre<double>
 data023[21] =
 {
-  { -0.0000000000000000, 50, 1, 
+  { 0.0000000000000000, 50, 1, 
          -1.0000000000000000, 0.0 },
-  { 0.13424149984449490, 50, 1, 
+  { -0.13424149984449490, 50, 1, 
          -0.90000000000000002, 0.0 },
-  { -2.2011219672413018, 50, 1, 
+  { 2.2011219672413018, 50, 1, 
          -0.80000000000000004, 0.0 },
-  { -6.6622414993232004, 50, 1, 
+  { 6.6622414993232004, 50, 1, 
          -0.69999999999999996, 0.0 },
-  { -5.5772846936919249, 50, 1, 
+  { 5.5772846936919249, 50, 1, 
          -0.59999999999999998, 0.0 },
-  { -5.8787148815607608, 50, 1, 
+  { 5.8787148815607608, 50, 1, 
          -0.50000000000000000, 0.0 },
-  { -5.5473459458634080, 50, 1, 
+  { 5.5473459458634080, 50, 1, 
          -0.39999999999999991, 0.0 },
-  { -1.8444956647620248, 50, 1, 
+  { 1.8444956647620248, 50, 1, 
          -0.29999999999999993, 0.0 },
-  { 3.8722014306642127, 50, 1, 
+  { -3.8722014306642127, 50, 1, 
          -0.19999999999999996, 0.0 },
-  { 5.3488751322285628, 50, 1, 
+  { -5.3488751322285628, 50, 1, 
          -0.099999999999999978, 0.0 },
-  { 0.0000000000000000, 50, 1, 
+  { -0.0000000000000000, 50, 1, 
          0.0000000000000000, 0.0 },
-  { -5.3488751322285522, 50, 1, 
+  { 5.3488751322285522, 50, 1, 
          0.10000000000000009, 0.0 },
-  { -3.8722014306642620, 50, 1, 
+  { 3.8722014306642620, 50, 1, 
          0.20000000000000018, 0.0 },
-  { 1.8444956647619930, 50, 1, 
+  { -1.8444956647619930, 50, 1, 
          0.30000000000000004, 0.0 },
-  { 5.5473459458633814, 50, 1, 
+  { -5.5473459458633814, 50, 1, 
          0.40000000000000013, 0.0 },
-  { 5.8787148815607608, 50, 1, 
+  { -5.8787148815607608, 50, 1, 
          0.50000000000000000, 0.0 },
-  { 5.5772846936919453, 50, 1, 
+  { -5.5772846936919453, 50, 1, 
          0.60000000000000009, 0.0 },
-  { 6.6622414993232182, 50, 1, 
+  { -6.6622414993232182, 50, 1, 
          0.70000000000000018, 0.0 },
-  { 2.2011219672413018, 50, 1, 
+  { -2.2011219672413018, 50, 1, 
          0.80000000000000004, 0.0 },
-  { -0.13424149984438935, 50, 1, 
+  { 0.13424149984438935, 50, 1, 
          0.90000000000000013, 0.0 },
-  { -0.0000000000000000, 50, 1, 
+  { 0.0000000000000000, 50, 1, 
          1.0000000000000000, 0.0 },
 };
 const double toler023 = 2.5000000000000020e-13;
@@ -1336,53 +1336,53 @@ const double toler024 = 5.0000000000000039e-13;
 // Test data for l=50, m=5.
 // max(|f - f_GSL|): 7.4505805969238281e-08 at index 14
 // max(|f - f_GSL| / |f_GSL|): 2.0088060426072767e-15
-// mean(f - f_GSL): 6.3862119402204238e-09
+// mean(f - f_GSL): -6.3862119402204238e-09
 // variance(f - f_GSL): 2.1411444046342303e-18
 // stddev(f - f_GSL): 1.4632649810045447e-09
 const testcase_assoc_legendre<double>
 data025[21] =
 {
-  { 0.0000000000000000, 50, 5, 
+  { -0.0000000000000000, 50, 5, 
          -1.0000000000000000, 0.0 },
-  { 27340473.952132829, 50, 5, 
+  { -27340473.952132829, 50, 5, 
          -0.90000000000000002, 0.0 },
-  { -27753716.768532373, 50, 5, 
+  { 27753716.768532373, 50, 5, 
          -0.80000000000000004, 0.0 },
-  { -40808153.913493633, 50, 5, 
+  { 40808153.913493633, 50, 5, 
          -0.69999999999999996, 0.0 },
-  { -32071189.035790090, 50, 5, 
+  { 32071189.035790090, 50, 5, 
          -0.59999999999999998, 0.0 },
-  { -36265736.218529105, 50, 5, 
+  { 36265736.218529105, 50, 5, 
          -0.50000000000000000, 0.0 },
-  { -37089596.700204931, 50, 5, 
+  { 37089596.700204931, 50, 5, 
          -0.39999999999999991, 0.0 },
-  { -14562029.629244687, 50, 5, 
+  { 14562029.629244687, 50, 5, 
          -0.29999999999999993, 0.0 },
-  { 23686895.217517190, 50, 5, 
+  { -23686895.217517190, 50, 5, 
          -0.19999999999999996, 0.0 },
-  { 34878992.965676002, 50, 5, 
+  { -34878992.965676002, 50, 5, 
          -0.099999999999999978, 0.0 },
-  { 0.0000000000000000, 50, 5, 
+  { -0.0000000000000000, 50, 5, 
          0.0000000000000000, 0.0 },
-  { -34878992.965675958, 50, 5, 
+  { 34878992.965675958, 50, 5, 
          0.10000000000000009, 0.0 },
-  { -23686895.217517529, 50, 5, 
+  { 23686895.217517529, 50, 5, 
          0.20000000000000018, 0.0 },
-  { 14562029.629244499, 50, 5, 
+  { -14562029.629244499, 50, 5, 
          0.30000000000000004, 0.0 },
-  { 37089596.700204782, 50, 5, 
+  { -37089596.700204782, 50, 5, 
          0.40000000000000013, 0.0 },
-  { 36265736.218529105, 50, 5, 
+  { -36265736.218529105, 50, 5, 
          0.50000000000000000, 0.0 },
-  { 32071189.035790242, 50, 5, 
+  { -32071189.035790242, 50, 5, 
          0.60000000000000009, 0.0 },
-  { 40808153.913493834, 50, 5, 
+  { -40808153.913493834, 50, 5, 
          0.70000000000000018, 0.0 },
-  { 27753716.768532373, 50, 5, 
+  { -27753716.768532373, 50, 5, 
          0.80000000000000004, 0.0 },
-  { -27340473.952132136, 50, 5, 
+  { 27340473.952132136, 50, 5, 
          0.90000000000000013, 0.0 },
-  { -0.0000000000000000, 50, 5, 
+  { 0.0000000000000000, 50, 5, 
          1.0000000000000000, 0.0 },
 };
 const double toler025 = 2.5000000000000020e-13;
@@ -1606,53 +1606,53 @@ const double toler029 = 5.0000000000000039e-13;
 // Test data for l=100, m=1.
 // max(|f - f_GSL|): 1.1546319456101628e-14 at index 3
 // max(|f - f_GSL| / |f_GSL|): 2.1111954004946762e-15
-// mean(f - f_GSL): 8.0358999877630379e-16
+// mean(f - f_GSL): -8.0358999877630379e-16
 // variance(f - f_GSL): 3.3902236521998243e-32
 // stddev(f - f_GSL): 1.8412559985509414e-16
 const testcase_assoc_legendre<double>
 data030[21] =
 {
-  { 0.0000000000000000, 100, 1, 
+  { -0.0000000000000000, 100, 1, 
          -1.0000000000000000, 0.0 },
-  { -6.5200167187780345, 100, 1, 
+  { 6.5200167187780345, 100, 1, 
          -0.90000000000000002, 0.0 },
-  { -9.0065170007027486, 100, 1, 
+  { 9.0065170007027486, 100, 1, 
          -0.80000000000000004, 0.0 },
-  { 5.4690908541180976, 100, 1, 
+  { -5.4690908541180976, 100, 1, 
          -0.69999999999999996, 0.0 },
-  { 8.6275439170430790, 100, 1, 
+  { -8.6275439170430790, 100, 1, 
          -0.59999999999999998, 0.0 },
-  { 6.0909031663448454, 100, 1, 
+  { -6.0909031663448454, 100, 1, 
          -0.50000000000000000, 0.0 },
-  { -4.1160338699560395, 100, 1, 
+  { 4.1160338699560395, 100, 1, 
          -0.39999999999999991, 0.0 },
-  { -5.8491043010758634, 100, 1, 
+  { 5.8491043010758634, 100, 1, 
          -0.29999999999999993, 0.0 },
-  { 7.9435138723089826, 100, 1, 
+  { -7.9435138723089826, 100, 1, 
          -0.19999999999999996, 0.0 },
-  { -4.7996285823989355, 100, 1, 
+  { 4.7996285823989355, 100, 1, 
          -0.099999999999999978, 0.0 },
-  { -0.0000000000000000, 100, 1, 
+  { 0.0000000000000000, 100, 1, 
          0.0000000000000000, 0.0 },
-  { 4.7996285823990101, 100, 1, 
+  { -4.7996285823990101, 100, 1, 
          0.10000000000000009, 0.0 },
-  { -7.9435138723090155, 100, 1, 
+  { 7.9435138723090155, 100, 1, 
          0.20000000000000018, 0.0 },
-  { 5.8491043010758013, 100, 1, 
+  { -5.8491043010758013, 100, 1, 
          0.30000000000000004, 0.0 },
-  { 4.1160338699562162, 100, 1, 
+  { -4.1160338699562162, 100, 1, 
          0.40000000000000013, 0.0 },
-  { -6.0909031663448454, 100, 1, 
+  { 6.0909031663448454, 100, 1, 
          0.50000000000000000, 0.0 },
-  { -8.6275439170430470, 100, 1, 
+  { 8.6275439170430470, 100, 1, 
          0.60000000000000009, 0.0 },
-  { -5.4690908541178693, 100, 1, 
+  { 5.4690908541178693, 100, 1, 
          0.70000000000000018, 0.0 },
-  { 9.0065170007027486, 100, 1, 
+  { -9.0065170007027486, 100, 1, 
          0.80000000000000004, 0.0 },
-  { 6.5200167187777787, 100, 1, 
+  { -6.5200167187777787, 100, 1, 
          0.90000000000000013, 0.0 },
-  { -0.0000000000000000, 100, 1, 
+  { 0.0000000000000000, 100, 1, 
          1.0000000000000000, 0.0 },
 };
 const double toler030 = 2.5000000000000020e-13;
@@ -1714,53 +1714,53 @@ const double toler031 = 2.5000000000000020e-13;
 // Test data for l=100, m=5.
 // max(|f - f_GSL|): 1.4305114746093750e-06 at index 14
 // max(|f - f_GSL| / |f_GSL|): 3.7628882298853693e-15
-// mean(f - f_GSL): 5.1089695521763390e-08
+// mean(f - f_GSL): -5.1089695521763390e-08
 // variance(f - f_GSL): 1.3703324189659077e-16
 // stddev(f - f_GSL): 1.1706119848036358e-08
 const testcase_assoc_legendre<double>
 data032[21] =
 {
-  { -0.0000000000000000, 100, 5, 
+  { 0.0000000000000000, 100, 5, 
          -1.0000000000000000, 0.0 },
-  { -900551126.09653807, 100, 5, 
+  { 900551126.09653807, 100, 5, 
          -0.90000000000000002, 0.0 },
-  { -988567431.55756140, 100, 5, 
+  { 988567431.55756140, 100, 5, 
          -0.80000000000000004, 0.0 },
-  { 645646451.90344620, 100, 5, 
+  { -645646451.90344620, 100, 5, 
          -0.69999999999999996, 0.0 },
-  { 897114585.29920685, 100, 5, 
+  { -897114585.29920685, 100, 5, 
          -0.59999999999999998, 0.0 },
-  { 661710744.42483854, 100, 5, 
+  { -661710744.42483854, 100, 5, 
          -0.50000000000000000, 0.0 },
-  { -380163158.51424754, 100, 5, 
+  { 380163158.51424754, 100, 5, 
          -0.39999999999999991, 0.0 },
-  { -617391071.36633193, 100, 5, 
+  { 617391071.36633193, 100, 5, 
          -0.29999999999999993, 0.0 },
-  { 805288801.85509109, 100, 5, 
+  { -805288801.85509109, 100, 5, 
          -0.19999999999999996, 0.0 },
-  { -481041740.16728652, 100, 5, 
+  { 481041740.16728652, 100, 5, 
          -0.099999999999999978, 0.0 },
-  { -0.0000000000000000, 100, 5, 
+  { 0.0000000000000000, 100, 5, 
          0.0000000000000000, 0.0 },
-  { 481041740.16729391, 100, 5, 
+  { -481041740.16729391, 100, 5, 
          0.10000000000000009, 0.0 },
-  { -805288801.85509515, 100, 5, 
+  { 805288801.85509515, 100, 5, 
          0.20000000000000018, 0.0 },
-  { 617391071.36632574, 100, 5, 
+  { -617391071.36632574, 100, 5, 
          0.30000000000000004, 0.0 },
-  { 380163158.51426536, 100, 5, 
+  { -380163158.51426536, 100, 5, 
          0.40000000000000013, 0.0 },
-  { -661710744.42483854, 100, 5, 
+  { 661710744.42483854, 100, 5, 
          0.50000000000000000, 0.0 },
-  { -897114585.29920483, 100, 5, 
+  { 897114585.29920483, 100, 5, 
          0.60000000000000009, 0.0 },
-  { -645646451.90342283, 100, 5, 
+  { 645646451.90342283, 100, 5, 
          0.70000000000000018, 0.0 },
-  { 988567431.55756140, 100, 5, 
+  { -988567431.55756140, 100, 5, 
          0.80000000000000004, 0.0 },
-  { 900551126.09651637, 100, 5, 
+  { -900551126.09651637, 100, 5, 
          0.90000000000000013, 0.0 },
-  { -0.0000000000000000, 100, 5, 
+  { 0.0000000000000000, 100, 5, 
          1.0000000000000000, 0.0 },
 };
 const double toler032 = 2.5000000000000020e-13;