diff -u gcc-7-7.3.0/debian/changelog gcc-7-7.3.0/debian/changelog --- gcc-7-7.3.0/debian/changelog +++ gcc-7-7.3.0/debian/changelog @@ -1,8 +1,112 @@ -gcc-7 (7.3.0-16ubuntu3~14.04) trusty; urgency=medium +gcc-7 (7.3.0-21ubuntu1~14.04) trusty; urgency=medium * PPA upload. - -- Matthias Klose Tue, 24 Apr 2018 11:01:44 +0200 + -- Matthias Klose Tue, 05 Jun 2018 20:41:39 +0200 + +gcc-7 (7.3.0-21ubuntu1~18.04) bionic-proposed; urgency=medium + + * SRU: LP: #1769657. Update the package to the current version in cosmic. + + -- Matthias Klose Tue, 05 Jun 2018 00:32:56 +0200 + +gcc-7 (7.3.0-21ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 31 May 2018 13:27:08 +0200 + +gcc-7 (7.3.0-21) unstable; urgency=medium + + * Update to SVN 20180531 (r260992) from the gcc-7-branch. + - Fix PR sanitizer/86012, libsanitizer build on sparc64. + + -- Matthias Klose Thu, 31 May 2018 13:22:03 +0200 + +gcc-7 (7.3.0-20) unstable; urgency=medium + + * Update to SVN 20180529 (r260895) from the gcc-7-branch. + - Fix PR sanitizer/85835, PR libstdc++/85812, PR libstdc++/67554, + PR libstdc++/82966, PR target/85903 (x86), PR target/85698 (PPC), + PR ipa/85655, PR fortran/85543, PR fortran/85779, PR fortran/85780, + PR fortran/85895, PR fortran/80657, PR fortran/82275, PR fortran/82923, + PR fortran/66694, PR fortran/82617, PR fortran/83149, PR fortran/83898, + PR fortran/84546, PR fortran/85542, PR fortran/68846, PR fortran/70864. + * gnat-*: Don't search the target dirs when calling dh_shlibdeps. + + -- Matthias Klose Tue, 29 May 2018 15:02:12 +0200 + +gcc-7 (7.3.0-19ubuntu2) cosmic; urgency=medium + + * Update to SVN 20180514 (r260228) from the gcc-7-branch. + - Fix PR fortran/85542, PR fortran/68846, PR fortran/70864. + * gnat-*: Don't search the target dirs when calling dh_shlibdeps. + + -- Matthias Klose Mon, 14 May 2018 11:27:51 -0400 + +gcc-7 (7.3.0-19ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 12 May 2018 11:12:38 -0400 + +gcc-7 (7.3.0-19) unstable; urgency=medium + + * Update to SVN 20180512 (r260198) from the gcc-7-branch. + - Fix PR libstdc++/80506, PR c++/85646, PR fortran/85507, + PR fortran/70870, PR fortran/85521, PR fortran/85687. + * Fix name of the g++ multiarch include directory. Addresses: #898323. + + -- Matthias Klose Sat, 12 May 2018 11:01:49 -0400 + +gcc-7 (7.3.0-18ubuntu2) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 06 May 2018 14:13:31 +0200 + +gcc-7 (7.3.0-18) unstable; urgency=medium + + * Update to SVN 20180506 (r259973) from the gcc-7-branch. + - Fix PR middle-end/84955, PR libstdc++/pr66689, PR libstdc++/68397, + PR libstdc++/84769, PR libstdc++/85632, PR fortran/81773, + PR fortran/83606. + * Update the Linaro support to the 7-2018.04 snapshot. + * Don't configure with --with-as and --with-ld, but search the triplet + prefixed as and ld in the same places as as/ld. Closes: #896057, #897896. + * Enable decimal float support on kfreebsd-amd64. Closes: #897416. + + -- Matthias Klose Sun, 06 May 2018 13:25:30 +0200 + +gcc-7 (7.3.0-17ubuntu1) cosmic; urgency=medium + + * Update to SVN 20180502 (r259836) from the gcc-7-branch. + - Fix PR middle-end/84955, PR libstdc++/pr66689, PR libstdc++/68397, + PR fortran/81773, PR fortran/83606. + * Update the Linaro support to the 7-2018.04 snapshot. + + -- Matthias Klose Wed, 02 May 2018 15:31:26 +0200 + +gcc-7 (7.3.0-17) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20180427 (r259697) from the gcc-7-branch. + - Fix PR libstdc++/85222, PR libstdc++/85442, PR target/85261 (ARM), + PR sanitizer/85389, PR c/84873, PR tree-optimization/85284, + PR middle-end/85244, PR tree-optimization/85168, PR lto/85405, + PR lto/85405, PR sanitizer/85081, PR ipa/84963, PR ipa/84658, + PR target/83660 (PPC), PR middle-end/85496, PR target/83969 (PPC). + * Update the gcc-foffload-default patch. LP: #1721355. + * Use the binutils in the build chroot if present. + * Don't use dwz for GCC backports. + + [ Aurelien Jarno ] + * Enable logwatch on riscv64. + + -- Matthias Klose Sat, 28 Apr 2018 15:20:26 +0200 gcc-7 (7.3.0-16ubuntu3) bionic; urgency=medium diff -u gcc-7-7.3.0/debian/control gcc-7-7.3.0/debian/control --- gcc-7-7.3.0/debian/control +++ gcc-7-7.3.0/debian/control @@ -12,7 +12,7 @@ dwz, libunwind8-dev [ia64], libatomic-ops-dev [ia64], gawk, lzma, xz-utils, patchutils, zlib1g-dev, - binutils (>= 2.22) | binutils-multiarch (>= 2.22), binutils-hppa64 (>= 2.22) [hppa], + binutils (>= 2.24-5~) | binutils-multiarch (>= 2.24-5~), binutils-hppa64 (>= 2.24-5~) [hppa], gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, gdb [!riscv64], nvptx-tools [amd64], texinfo (>= 4.3), locales, sharutils, diff -u gcc-7-7.3.0/debian/patches/bind_now_when_pie.diff gcc-7-7.3.0/debian/patches/bind_now_when_pie.diff --- gcc-7-7.3.0/debian/patches/bind_now_when_pie.diff +++ gcc-7-7.3.0/debian/patches/bind_now_when_pie.diff @@ -9,7 +9,7 @@ =================================================================== --- a/src/gcc/gcc.c +++ b/src/gcc/gcc.c -@@ -936,7 +936,11 @@ proper position among the other output f +@@ -943,7 +943,11 @@ proper position among the other output f #ifndef LINK_PIE_SPEC #ifdef HAVE_LD_PIE #ifndef LD_PIE_SPEC diff -u gcc-7-7.3.0/debian/patches/g++-multiarch-incdir.diff gcc-7-7.3.0/debian/patches/g++-multiarch-incdir.diff --- gcc-7-7.3.0/debian/patches/g++-multiarch-incdir.diff +++ gcc-7-7.3.0/debian/patches/g++-multiarch-incdir.diff @@ -45,7 +45,7 @@ +# Directory in which the compiler finds target-dependent g++ includes. +ifneq ($(call if_multiarch,non-empty),) -+ gcc_gxx_tool_include_dir = $(libsubdir)/$(libsubdir_to_prefix)include/$(MULTIARCH_DIRNAME)/c++/$(BASEVER_c) ++ gcc_gxx_tool_include_dir = $(libsubdir)/$(libsubdir_to_prefix)include/$(MULTIARCH_DIRNAME)/c++/$(version) +else + gcc_gxx_tool_include_dir = $(gcc_gxx_include_dir)/$(target_noncanonical) +endif diff -u gcc-7-7.3.0/debian/patches/gcc-default-format-security.diff gcc-7-7.3.0/debian/patches/gcc-default-format-security.diff --- gcc-7-7.3.0/debian/patches/gcc-default-format-security.diff +++ gcc-7-7.3.0/debian/patches/gcc-default-format-security.diff @@ -4,7 +4,7 @@ =================================================================== --- a/src/gcc/doc/invoke.texi +++ b/src/gcc/doc/invoke.texi -@@ -4119,6 +4119,11 @@ value is used and that might result in t +@@ -4142,6 +4142,11 @@ value is used and that might result in t sufficient length or magnitude. @end table @@ -20,7 +20,7 @@ =================================================================== --- a/src/gcc/gcc.c +++ b/src/gcc/gcc.c -@@ -867,11 +867,14 @@ proper position among the other output f +@@ -876,11 +876,14 @@ proper position among the other output f #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G" #endif diff -u gcc-7-7.3.0/debian/patches/gcc-default-fortify-source.diff gcc-7-7.3.0/debian/patches/gcc-default-fortify-source.diff --- gcc-7-7.3.0/debian/patches/gcc-default-fortify-source.diff +++ gcc-7-7.3.0/debian/patches/gcc-default-fortify-source.diff @@ -10,7 +10,7 @@ =================================================================== --- a/src/gcc/doc/invoke.texi +++ b/src/gcc/doc/invoke.texi -@@ -7105,6 +7105,12 @@ also turns on the following optimization +@@ -7129,6 +7129,12 @@ also turns on the following optimization Please note the warning under @option{-fgcse} about invoking @option{-O2} on programs that use computed gotos. @@ -27,7 +27,7 @@ =================================================================== --- a/src/gcc/c-family/c-cppbuiltin.c +++ b/src/gcc/c-family/c-cppbuiltin.c -@@ -1335,6 +1335,12 @@ c_cpp_builtins (cpp_reader *pfile) +@@ -1337,6 +1337,12 @@ c_cpp_builtins (cpp_reader *pfile) builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0); builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0); diff -u gcc-7-7.3.0/debian/patches/gcc-default-relro.diff gcc-7-7.3.0/debian/patches/gcc-default-relro.diff --- gcc-7-7.3.0/debian/patches/gcc-default-relro.diff +++ gcc-7-7.3.0/debian/patches/gcc-default-relro.diff @@ -9,7 +9,7 @@ =================================================================== --- a/src/gcc/doc/invoke.texi +++ b/src/gcc/doc/invoke.texi -@@ -11813,6 +11813,9 @@ For example, @option{-Wl,-Map,output.map +@@ -11859,6 +11859,9 @@ For example, @option{-Wl,-Map,output.map linker. When using the GNU linker, you can also get the same effect with @option{-Wl,-Map=output.map}. @@ -23,7 +23,7 @@ =================================================================== --- a/src/gcc/gcc.c +++ b/src/gcc/gcc.c -@@ -1037,6 +1037,11 @@ proper position among the other output f +@@ -1046,6 +1046,11 @@ proper position among the other output f /* We pass any -flto flags on to the linker, which is expected to understand them. In practice, this means it had better be collect2. */ /* %{e*} includes -export-dynamic; see comment in common.opt. */ @@ -38,8 +38,8 @@ -@@ -1045,6 +1050,7 @@ proper position among the other output f +@@ -1054,6 +1059,7 @@ proper position among the other output f "%{flto|flto=*:% - - * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins): - Resize type_signature. - ---- a/src/gcc/config/aarch64/aarch64-builtins.c -+++ b/src/gcc/config/aarch64/aarch64-builtins.c -@@ -754,7 +754,7 @@ - for (i = 0; i < ARRAY_SIZE (aarch64_simd_builtin_data); i++, fcode++) - { - bool print_type_signature_p = false; -- char type_signature[SIMD_MAX_BUILTIN_ARGS] = { 0 }; -+ char type_signature[SIMD_MAX_BUILTIN_ARGS + 1] = { 0 }; - aarch64_simd_builtin_datum *d = &aarch64_simd_builtin_data[i]; - char namebuf[60]; - tree ftype = NULL; diff -u gcc-7-7.3.0/debian/patches/gcc-linaro-doc.diff gcc-7-7.3.0/debian/patches/gcc-linaro-doc.diff --- gcc-7-7.3.0/debian/patches/gcc-linaro-doc.diff +++ gcc-7-7.3.0/debian/patches/gcc-linaro-doc.diff @@ -1,4 +1,4 @@ -# DP: Changes for the Linaro 7-2018.01 snapshot (documentation). +# DP: Changes for the Linaro 7-2018.04 snapshot (documentation). --- a/src/gcc/doc/install.texi +++ b/src/gcc/doc/install.texi @@ -181 +180,0 @@ - diff -u gcc-7-7.3.0/debian/patches/gcc-linaro-no-macros.diff gcc-7-7.3.0/debian/patches/gcc-linaro-no-macros.diff --- gcc-7-7.3.0/debian/patches/gcc-linaro-no-macros.diff +++ gcc-7-7.3.0/debian/patches/gcc-linaro-no-macros.diff @@ -92 +92 @@ --7.2-2018.02~dev +-7.3-2018.04~dev reverted: --- gcc-7-7.3.0/debian/patches/gcc-linaro-revert-r249596.diff +++ gcc-7-7.3.0.orig/debian/patches/gcc-linaro-revert-r249596.diff @@ -1,17 +0,0 @@ -Index: b/src/gcc/config/arm/arm-builtins.c -=================================================================== ---- a/src/gcc/config/arm/arm-builtins.c -+++ b/src/gcc/config/arm/arm-builtins.c -@@ -1893,10 +1893,10 @@ arm_init_builtins (void) - = build_function_type_list (unsigned_type_node, NULL); - - arm_builtin_decls[ARM_BUILTIN_GET_FPSCR] -- = add_builtin_function ("__builtin_arm_get_fpscr", ftype_get_fpscr, -+ = add_builtin_function ("__builtin_arm_ldfscr", ftype_get_fpscr, - ARM_BUILTIN_GET_FPSCR, BUILT_IN_MD, NULL, NULL_TREE); - arm_builtin_decls[ARM_BUILTIN_SET_FPSCR] -- = add_builtin_function ("__builtin_arm_set_fpscr", ftype_set_fpscr, -+ = add_builtin_function ("__builtin_arm_stfscr", ftype_set_fpscr, - ARM_BUILTIN_SET_FPSCR, BUILT_IN_MD, NULL, NULL_TREE); - } - reverted: --- gcc-7-7.3.0/debian/patches/gcc-linaro-revert-r253234.diff +++ gcc-7-7.3.0.orig/debian/patches/gcc-linaro-revert-r253234.diff @@ -1,82 +0,0 @@ -# DP: Revert r253234, already in the Linaro branch. - -Index: b/src/gcc/testsuite/gcc.target/arm/lto/pr65837-attr_0.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/arm/lto/pr65837-attr_0.c -+++ b/src/gcc/testsuite/gcc.target/arm/lto/pr65837-attr_0.c -@@ -1,7 +1,6 @@ - /* { dg-lto-do run } */ - /* { dg-require-effective-target arm_neon_hw } */ --/* { dg-require-effective-target arm_neon_ok_no_float_abi } */ --/* { dg-lto-options {{-flto -mfpu=neon}} } */ -+/* { dg-lto-options {{-flto}} } */ - - #include "arm_neon.h" - -Index: b/src/gcc/testsuite/gcc.target/arm/lto/pr65837_0.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/arm/lto/pr65837_0.c -+++ b/src/gcc/testsuite/gcc.target/arm/lto/pr65837_0.c -@@ -1,7 +1,7 @@ - /* { dg-lto-do run } */ - /* { dg-require-effective-target arm_neon_hw } */ --/* { dg-require-effective-target arm_neon_ok_no_float_abi } */ - /* { dg-lto-options {{-flto -mfpu=neon}} } */ -+/* { dg-suppress-ld-options {-mfpu=neon} } */ - - #include "arm_neon.h" - -Index: b/src/gcc/testsuite/lib/target-supports.exp -=================================================================== ---- a/src/gcc/testsuite/lib/target-supports.exp -+++ b/src/gcc/testsuite/lib/target-supports.exp -@@ -3428,9 +3428,8 @@ proc check_effective_target_arm_neon_ok_ - global et_arm_neon_flags - set et_arm_neon_flags "" - if { [check_effective_target_arm32] } { -- foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon" "-mfpu=neon -mfloat-abi=softfp" "-mfpu=neon -mfloat-abi=softfp -march=armv7-a" "-mfloat-abi=hard" "-mfpu=neon -mfloat-abi=hard" "-mfpu=neon -mfloat-abi=hard -march=armv7-a"} { -+ foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon" "-mfpu=neon -mfloat-abi=softfp" "-mfpu=neon -mfloat-abi=softfp -march=armv7-a"} { - if { [check_no_compiler_messages_nocache arm_neon_ok object { -- #include - int dummy; - #ifndef __ARM_NEON__ - #error not NEON -@@ -3455,38 +3454,6 @@ proc check_effective_target_arm_neon_ok - check_effective_target_arm_neon_ok_nocache] - } - --# Return 1 if this is an ARM target supporting -mfpu=neon without any --# -mfloat-abi= option. Useful in tests where add_options is not --# supported (such as lto tests). -- --proc check_effective_target_arm_neon_ok_no_float_abi_nocache { } { -- if { [check_effective_target_arm32] } { -- foreach flags {"-mfpu=neon"} { -- if { [check_no_compiler_messages_nocache arm_neon_ok_no_float_abi object { -- #include -- int dummy; -- #ifndef __ARM_NEON__ -- #error not NEON -- #endif -- /* Avoid the case where a test adds -mfpu=neon, but the toolchain is -- configured for -mcpu=arm926ej-s, for example. */ -- #if __ARM_ARCH < 7 || __ARM_ARCH_PROFILE == 'M' -- #error Architecture does not support NEON. -- #endif -- } "$flags"] } { -- return 1 -- } -- } -- } -- -- return 0 --} -- --proc check_effective_target_arm_neon_ok_no_float_abi { } { -- return [check_cached_effective_target arm_neon_ok_no_float_abi \ -- check_effective_target_arm_neon_ok_no_float_abi_nocache] --} -- - proc check_effective_target_arm_crc_ok_nocache { } { - global et_arm_crc_flags - set et_arm_crc_flags "-march=armv8-a+crc" diff -u gcc-7-7.3.0/debian/patches/gcc-linaro.diff gcc-7-7.3.0/debian/patches/gcc-linaro.diff --- gcc-7-7.3.0/debian/patches/gcc-linaro.diff +++ gcc-7-7.3.0/debian/patches/gcc-linaro.diff @@ -1,8 +1,8 @@ -# DP: Changes for the Linaro 7-2018.01 snapshot. +# DP: Changes for the Linaro 7-2018.04 snapshot. MSG=$(git log origin/linaro/gcc-7-branch --format=format:"%s" -n 1 --grep "Merge branches"); SVN=${MSG##* }; git log origin/gcc-7-branch --format=format:"%H" -n 1 --grep "gcc-7-branch@${SVN%.}" -LANG=C git diff --no-renames 31fba1c2a66a5de659ba32ce3fb058feed0231b8 008c65a505dbfdbf62b7c59d5995c07bf6c462d4 \ +LANG=C git diff --no-renames b2b69ab68bc9da935ca6cce695f7aae5bee1503b 9fd777e570c1f99ada82b1dfc1147e7009a0f7b9 \ | egrep -v '^(diff|index) ' \ | filterdiff --strip=1 --addoldprefix=a/src/ --addnewprefix=b/src/ \ | sed 's,a/src//dev/null,/dev/null,' @@ -10,7 +10,7 @@ --- /dev/null +++ b/src/gcc/LINARO-VERSION @@ -0,0 +1 @@ -+7.2-2018.02~dev ++7.3-2018.04~dev --- a/src/gcc/Makefile.in +++ b/src/gcc/Makefile.in @@ -845,10 +845,12 @@ BASEVER := $(srcdir)/BASE-VER # 4.x.y @@ -430,6 +430,15 @@ static enum aarch64_type_qualifiers aarch64_types_binop_imm_p_qualifiers[SIMD_MAX_BUILTIN_ARGS] +@@ -754,7 +759,7 @@ aarch64_init_simd_builtins (void) + for (i = 0; i < ARRAY_SIZE (aarch64_simd_builtin_data); i++, fcode++) + { + bool print_type_signature_p = false; +- char type_signature[SIMD_MAX_BUILTIN_ARGS] = { 0 }; ++ char type_signature[SIMD_MAX_BUILTIN_ARGS + 1] = { 0 }; + aarch64_simd_builtin_datum *d = &aarch64_simd_builtin_data[i]; + char namebuf[60]; + tree ftype = NULL; --- a/src/gcc/config/aarch64/aarch64-c.c +++ b/src/gcc/config/aarch64/aarch64-c.c @@ -106,6 +106,7 @@ aarch64_update_cpp_builtins (cpp_reader *pfile) @@ -849,7 +858,7 @@ ;; Max/Min operations. (define_insn "3" [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w") -@@ -2806,38 +2924,10 @@ +@@ -2815,38 +2933,10 @@ (match_operand:VDC 2 "register_operand")] "TARGET_SIMD" { @@ -2779,7 +2788,7 @@ (define_insn "*sub__" [(set (match_operand:GPI 0 "register_operand" "=r") (minus:GPI (match_operand:GPI 3 "register_operand" "r") -@@ -3881,6 +3864,22 @@ +@@ -3882,6 +3865,22 @@ [(set_attr "type" "logics_reg,logics_imm")] ) @@ -2802,7 +2811,7 @@ (define_insn "*and3nr_compare0_zextract" [(set (reg:CC_NZ CC_REGNUM) (compare:CC_NZ -@@ -3916,6 +3915,26 @@ +@@ -3917,6 +3916,26 @@ [(set_attr "type" "logics_shift_imm")] ) @@ -2829,7 +2838,7 @@ ;; ------------------------------------------------------------------- ;; Shifts ;; ------------------------------------------------------------------- -@@ -4997,6 +5016,18 @@ +@@ -4998,6 +5017,18 @@ [(set_attr "type" "f_minmax")] ) @@ -2848,7 +2857,7 @@ ;; For copysign (x, y), we want to generate: ;; ;; LDR d2, #(1 << 63) -@@ -5030,14 +5061,16 @@ +@@ -5031,14 +5062,16 @@ (match_operand:SF 2 "register_operand")] "TARGET_FLOAT && TARGET_SIMD" { @@ -3387,7 +3396,7 @@ /* T (T, T, immediate). */ static enum arm_type_qualifiers arm_ternop_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS] -@@ -3058,15 +3072,15 @@ arm_expand_builtin (tree exp, +@@ -3060,15 +3074,15 @@ arm_expand_builtin (tree exp, } for (i = 0, d = bdesc_2arg; i < ARRAY_SIZE (bdesc_2arg); i++, d++) @@ -3683,7 +3692,7 @@ static void cmse_nonsecure_call_clear_caller_saved (void) -@@ -19111,7 +19126,7 @@ arm_compute_static_chain_stack_bytes (void) +@@ -19116,7 +19131,7 @@ arm_compute_static_chain_stack_bytes (void) /* Compute a bit mask of which registers need to be saved on the stack for the current function. @@ -3692,7 +3701,7 @@ static unsigned long arm_compute_save_reg_mask (void) -@@ -20750,12 +20765,25 @@ any_sibcall_could_use_r3 (void) +@@ -20755,12 +20770,25 @@ any_sibcall_could_use_r3 (void) alignment. */ @@ -3720,7 +3729,7 @@ { struct arm_stack_offsets *offsets; unsigned long func_type; -@@ -20766,9 +20794,6 @@ arm_get_frame_offsets (void) +@@ -20771,9 +20799,6 @@ arm_get_frame_offsets (void) offsets = &cfun->machine->stack_offsets; @@ -3730,7 +3739,7 @@ /* Initially this is the size of the local variables. It will translated into an offset once we have determined the size of preceding data. */ frame_size = ROUND_UP_WORD (get_frame_size ()); -@@ -20833,7 +20858,7 @@ arm_get_frame_offsets (void) +@@ -20838,7 +20863,7 @@ arm_get_frame_offsets (void) { offsets->outgoing_args = offsets->soft_frame; offsets->locals_base = offsets->soft_frame; @@ -3739,7 +3748,7 @@ } /* Ensure SFP has the correct alignment. */ -@@ -20909,8 +20934,6 @@ arm_get_frame_offsets (void) +@@ -20914,8 +20939,6 @@ arm_get_frame_offsets (void) offsets->outgoing_args += 4; gcc_assert (!(offsets->outgoing_args & 7)); } @@ -3748,7 +3757,7 @@ } -@@ -21544,7 +21567,7 @@ arm_expand_prologue (void) +@@ -21554,7 +21577,7 @@ arm_expand_prologue (void) { /* If no coprocessor registers are being pushed and we don't have to worry about a frame pointer then push extra registers to @@ -3757,7 +3766,7 @@ alter the frame layout, so is independent of the epilogue. */ int n; int frame; -@@ -21672,8 +21695,8 @@ arm_expand_prologue (void) +@@ -21682,8 +21705,8 @@ arm_expand_prologue (void) will prevent the scheduler from moving stores to the frame before the stack adjustment. */ if (frame_pointer_needed) @@ -3768,7 +3777,7 @@ } -@@ -23758,7 +23781,6 @@ thumb_pop (FILE *f, unsigned long mask) +@@ -23768,7 +23791,6 @@ thumb_pop (FILE *f, unsigned long mask) { int regno; int lo_mask = mask & 0xFF; @@ -3776,7 +3785,7 @@ gcc_assert (mask); -@@ -23781,8 +23803,6 @@ thumb_pop (FILE *f, unsigned long mask) +@@ -23791,8 +23813,6 @@ thumb_pop (FILE *f, unsigned long mask) if ((lo_mask & ~1) != 0) fprintf (f, ", "); @@ -3785,7 +3794,7 @@ } } -@@ -24057,9 +24077,6 @@ thumb_exit (FILE *f, int reg_containing_return_addr) +@@ -24067,9 +24087,6 @@ thumb_exit (FILE *f, int reg_containing_return_addr) move_to = number_of_first_bit_set (regs_to_pop); asm_fprintf (f, "\tmov\t%r, %r\n", move_to, popped_into); @@ -3795,7 +3804,7 @@ --pops_needed; } -@@ -28252,17 +28269,32 @@ arm_expand_compare_and_swap (rtx operands[]) +@@ -28266,17 +28283,32 @@ arm_expand_compare_and_swap (rtx operands[]) gcc_unreachable (); } @@ -3974,7 +3983,7 @@ } ) -@@ -5027,7 +5076,31 @@ +@@ -5024,7 +5073,31 @@ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" "") @@ -4784,7 +4793,7 @@ ]) --- a/src/gcc/config/i386/i386.c +++ b/src/gcc/config/i386/i386.c -@@ -30300,6 +30300,15 @@ ix86_macro_fusion_pair_p (rtx_insn *condgen, rtx_insn *condjmp) +@@ -30236,6 +30236,15 @@ ix86_macro_fusion_pair_p (rtx_insn *condgen, rtx_insn *condjmp) if (!any_condjump_p (condjmp)) return false; @@ -4918,7 +4927,7 @@ --- a/src/gcc/expr.c +++ b/src/gcc/expr.c -@@ -8903,6 +8903,15 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, +@@ -8904,6 +8904,15 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, end_sequence (); unsigned uns_cost = seq_cost (uns_insns, speed_p); unsigned sgn_cost = seq_cost (sgn_insns, speed_p); @@ -4934,7 +4943,7 @@ if (uns_cost < sgn_cost || (uns_cost == sgn_cost && unsignedp)) { emit_insn (uns_insns); -@@ -9822,7 +9831,7 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode, +@@ -9823,7 +9832,7 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode, if (targetm.gen_ccmp_first) { gcc_checking_assert (targetm.gen_ccmp_next != NULL); @@ -5115,7 +5124,7 @@ part->symbols++; --- a/src/gcc/lto/lto-symtab.c +++ b/src/gcc/lto/lto-symtab.c -@@ -980,6 +980,42 @@ lto_symtab_merge_symbols (void) +@@ -998,6 +998,42 @@ lto_symtab_merge_symbols (void) if (tgt) node->resolve_alias (tgt, true); } @@ -8328,7 +8337,7 @@ || [istarget ia64-*-*] || ([istarget mips*-*-*] && [et-is-effective-target mips_msa]) } { -@@ -7899,7 +7981,7 @@ proc check_effective_target_aarch64_tiny { } { +@@ -7900,7 +7982,7 @@ proc check_effective_target_aarch64_tiny { } { # Create functions to check that the AArch64 assembler supports the # various architecture extensions via the .arch_extension pseudo-op. diff -u gcc-7-7.3.0/debian/patches/gdc-7-doc.diff gcc-7-7.3.0/debian/patches/gdc-7-doc.diff --- gcc-7-7.3.0/debian/patches/gdc-7-doc.diff +++ gcc-7-7.3.0/debian/patches/gdc-7-doc.diff @@ -26,7 +26,7 @@ =================================================================== --- a/src/gcc/doc/install.texi +++ b/src/gcc/doc/install.texi -@@ -1617,12 +1617,12 @@ their runtime libraries should be built. +@@ -1622,12 +1622,12 @@ their runtime libraries should be built. grep ^language= */config-lang.in @end smallexample Currently, you can use any of the following: @@ -45,7 +45,7 @@ =================================================================== --- a/src/gcc/doc/invoke.texi +++ b/src/gcc/doc/invoke.texi -@@ -1349,6 +1349,15 @@ called @dfn{specs}. +@@ -1354,6 +1354,15 @@ called @dfn{specs}. Ada source code file containing a library unit body (a subprogram or package body). Such files are also called @dfn{bodies}. @@ -61,7 +61,7 @@ @c GCC also knows about some suffixes for languages not yet included: @c Pascal: @c @var{file}.p -@@ -1384,6 +1393,7 @@ objective-c objective-c-header objecti +@@ -1389,6 +1398,7 @@ objective-c objective-c-header objecti objective-c++ objective-c++-header objective-c++-cpp-output assembler assembler-with-cpp ada diff -u gcc-7-7.3.0/debian/patches/pr84475.diff gcc-7-7.3.0/debian/patches/pr84475.diff --- gcc-7-7.3.0/debian/patches/pr84475.diff +++ gcc-7-7.3.0/debian/patches/pr84475.diff @@ -13,9 +13,9 @@ -@@ -47,6 +47,8 @@ along with GCC; see the file COPYING3. If not see +@@ -47,6 +47,8 @@ along with GCC; see the file COPYING3. #define ICACHE_FLUSH_FUNC "__riscv_flush_icache" +#define CPP_SPEC "%{pthread:-D_REENTRANT}" + #define LINK_SPEC "\ + -hash-style=gnu \ -melf" XLEN_SPEC "lriscv \ - %{shared} \ diff -u gcc-7-7.3.0/debian/patches/rename-info-files.diff gcc-7-7.3.0/debian/patches/rename-info-files.diff --- gcc-7-7.3.0/debian/patches/rename-info-files.diff +++ gcc-7-7.3.0/debian/patches/rename-info-files.diff @@ -89,7 +89,7 @@ =================================================================== --- a/src/gcc/Makefile.in +++ b/src/gcc/Makefile.in -@@ -3066,8 +3066,31 @@ install-no-fixedincludes: +@@ -3060,8 +3060,31 @@ install-no-fixedincludes: doc: $(BUILD_INFO) $(GENERATED_MANPAGES) @@ -123,7 +123,7 @@ info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo -@@ -3114,7 +3137,20 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) +@@ -3108,7 +3131,20 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) if [ -n "$(PKGVERSION)" ]; then \ echo "@set VERSION_PACKAGE $(PKGVERSION)" >> $@T; \ fi @@ -145,7 +145,7 @@ mv -f $@T $@ -@@ -3122,21 +3158,41 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) +@@ -3116,21 +3152,41 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) # patterns. To use them, put each of the specific targets with its # specific dependencies but no build commands. @@ -194,7 +194,7 @@ -I $(gcc_docdir)/include -o $@ $<; \ fi -@@ -3555,11 +3611,11 @@ install-driver: installdirs xgcc$(exeext +@@ -3549,11 +3605,11 @@ install-driver: installdirs xgcc$(exeext # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir # to do the install. install-info:: doc installdirs \ @@ -211,7 +211,7 @@ lang.install-info $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs -@@ -3780,8 +3836,11 @@ uninstall: lang.uninstall +@@ -3774,8 +3830,11 @@ uninstall: lang.uninstall -rm -rf $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext) -rm -rf $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) -rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext) @@ -255,7 +255,7 @@ =================================================================== --- a/src/gcc/doc/invoke.texi +++ b/src/gcc/doc/invoke.texi -@@ -11604,7 +11604,7 @@ One of the standard libraries bypassed b +@@ -11612,7 +11612,7 @@ One of the standard libraries bypassed b @option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines which GCC uses to overcome shortcomings of particular machines, or special needs for some languages. @@ -264,7 +264,7 @@ Collection (GCC) Internals}, for more discussion of @file{libgcc.a}.) In most cases, you need @file{libgcc.a} even when you want to avoid -@@ -11613,7 +11613,7 @@ or @option{-nodefaultlibs} you should us +@@ -11621,7 +11621,7 @@ or @option{-nodefaultlibs} you should us This ensures that you have no unresolved references to internal GCC library subroutines. (An example of such an internal subroutine is @code{__main}, used to ensure C++ @@ -273,7 +273,7 @@ GNU Compiler Collection (GCC) Internals}.) @item -pie -@@ -26506,7 +26506,7 @@ Note that you can also specify places to +@@ -26626,7 +26626,7 @@ Note that you can also specify places to @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These take precedence over places specified using environment variables, which in turn take precedence over those specified by the configuration of GCC@. @@ -282,7 +282,7 @@ GNU Compiler Collection (GCC) Internals}. @table @env -@@ -26666,7 +26666,7 @@ the headers it contains change. +@@ -26786,7 +26786,7 @@ the headers it contains change. A precompiled header file is searched for when @code{#include} is seen in the compilation. As it searches for the included file @@ -295,7 +295,7 @@ =================================================================== --- a/src/gcc/doc/extend.texi +++ b/src/gcc/doc/extend.texi -@@ -21802,7 +21802,7 @@ want to write code that checks whether t +@@ -21890,7 +21890,7 @@ want to write code that checks whether t test for the GNU compiler the same way as for C programs: check for a predefined macro @code{__GNUC__}. You can also use @code{__GNUG__} to test specifically for GNU C++ (@pxref{Common Predefined Macros,, diff -u gcc-7-7.3.0/debian/patches/svn-doc-updates.diff gcc-7-7.3.0/debian/patches/svn-doc-updates.diff --- gcc-7-7.3.0/debian/patches/svn-doc-updates.diff +++ gcc-7-7.3.0/debian/patches/svn-doc-updates.diff @@ -1,9 +1,61 @@ -# DP: updates from the 6 branch upto 20180201 (documentation). +# DP: updates from the 6 branch upto 20180429 (documentation). -svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_7_3_0_release svn://gcc.gnu.org/svn/gcc/branches/gcc-7-branch \ +LANG=C svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_7_3_0_release svn://gcc.gnu.org/svn/gcc/branches/gcc-7-branch \ | sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \ | awk '/^Index:.*\.texi/ {skip=0; print; next} /^Index:/ {skip=1; next} skip==0' +Index: gcc/doc/extend.texi +=================================================================== +--- a/src/gcc/doc/extend.texi (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/doc/extend.texi (.../branches/gcc-7-branch) +@@ -1,4 +1,4 @@ +-@c Copyright (C) 1988-2017 Free Software Foundation, Inc. ++@c Copyright (C) 1988-2018 Free Software Foundation, Inc. + + @c This is part of the GCC manual. + @c For copying conditions, see the file gcc.texi. +@@ -15165,21 +15165,16 @@ + @smallexample + long __builtin_bpermd (long, long); + int __builtin_divwe (int, int); +-int __builtin_divweo (int, int); + unsigned int __builtin_divweu (unsigned int, unsigned int); +-unsigned int __builtin_divweuo (unsigned int, unsigned int); + long __builtin_divde (long, long); +-long __builtin_divdeo (long, long); + unsigned long __builtin_divdeu (unsigned long, unsigned long); +-unsigned long __builtin_divdeuo (unsigned long, unsigned long); + unsigned int cdtbcd (unsigned int); + unsigned int cbcdtd (unsigned int); + unsigned int addg6s (unsigned int, unsigned int); + @end smallexample + +-The @code{__builtin_divde}, @code{__builtin_divdeo}, +-@code{__builtin_divdeu}, @code{__builtin_divdeou} functions require a +-64-bit environment support ISA 2.06 or later. ++The @code{__builtin_divde} and @code{__builtin_divdeu} functions ++require a 64-bit environment supporting ISA 2.06 or later. + + The following built-in functions are available for the PowerPC family + of processors, starting with ISA 3.0 or later (@option{-mcpu=power9}): +@@ -18124,14 +18119,11 @@ + vector int vec_vctzw (vector int); + vector unsigned int vec_vctzw (vector int); + +-long long vec_vextract4b (const vector signed char, const int); +-long long vec_vextract4b (const vector unsigned char, const int); +- +-vector signed char vec_insert4b (vector int, vector signed char, const int); ++long long vec_extract4b (const vector unsigned char, const int); ++vector unsigned char vec_insert4b (vector signed int, vector unsigned char, ++ const int); + vector unsigned char vec_insert4b (vector unsigned int, vector unsigned char, + const int); +-vector signed char vec_insert4b (long long, vector signed char, const int); +-vector unsigned char vec_insert4b (long long, vector unsigned char, const int); + + vector int vec_vprtyb (vector int); + vector unsigned int vec_vprtyb (vector unsigned int); Index: gcc/doc/tm.texi =================================================================== --- a/src/gcc/doc/tm.texi (.../tags/gcc_7_3_0_release) @@ -46,6 +98,15 @@ =================================================================== --- a/src/gcc/doc/invoke.texi (.../tags/gcc_7_3_0_release) +++ b/src/gcc/doc/invoke.texi (.../branches/gcc-7-branch) +@@ -1025,7 +1025,7 @@ + -mfloat-gprs=yes -mfloat-gprs=no -mfloat-gprs=single -mfloat-gprs=double @gol + -mprototype -mno-prototype @gol + -msim -mmvme -mads -myellowknife -memb -msdata @gol +--msdata=@var{opt} -mvxworks -G @var{num} @gol ++-msdata=@var{opt} -mreadonly-in-sdata -mvxworks -G @var{num} @gol + -mrecip -mrecip=@var{opt} -mno-recip -mrecip-precision @gol + -mno-recip-precision @gol + -mveclibabi=@var{type} -mfriz -mno-friz @gol @@ -1211,7 +1211,7 @@ -mavx256-split-unaligned-load -mavx256-split-unaligned-store @gol -malign-data=@var{type} -mstack-protector-guard=@var{guard} @gol @@ -57,0 +119,106 @@ +@@ -8132,7 +8132,7 @@ + + @item -fisolate-erroneous-paths-attribute + @opindex fisolate-erroneous-paths-attribute +-Detect paths that trigger erroneous or undefined behavior due a null value ++Detect paths that trigger erroneous or undefined behavior due to a null value + being used in a way forbidden by a @code{returns_nonnull} or @code{nonnull} + attribute. Isolate those paths from the main control flow and turn the + statement with erroneous or undefined behavior into a trap. This is not +@@ -8690,6 +8690,7 @@ + in that case, it is rounded up. + + If @var{n} is not specified or is zero, use a machine-dependent default. ++The maximum allowed @var{n} option value is 65536. + + Enabled at levels @option{-O2}, @option{-O3}. + +@@ -8715,6 +8716,7 @@ + + If @var{n} is not specified or is zero, use a machine-dependent default + which is very likely to be @samp{1}, meaning no alignment. ++The maximum allowed @var{n} option value is 65536. + + Enabled at levels @option{-O2}, @option{-O3}. + +@@ -8728,6 +8730,7 @@ + + @option{-fno-align-loops} and @option{-falign-loops=1} are + equivalent and mean that loops are not aligned. ++The maximum allowed @var{n} option value is 65536. + + If @var{n} is not specified or is zero, use a machine-dependent default. + +@@ -8745,6 +8748,7 @@ + equivalent and mean that loops are not aligned. + + If @var{n} is not specified or is zero, use a machine-dependent default. ++The maximum allowed @var{n} option value is 65536. + + Enabled at levels @option{-O2}, @option{-O3}. + +@@ -22070,6 +22074,13 @@ + in the @code{.data} section, and all uninitialized data in the + @code{.bss} section. + ++@item -mreadonly-in-sdata ++@itemx -mreadonly-in-sdata ++@opindex mreadonly-in-sdata ++@opindex mno-readonly-in-sdata ++Put read-only objects in the @code{.sdata} section as well. This is the ++default. ++ + @item -mblock-move-inline-limit=@var{num} + @opindex mblock-move-inline-limit + Inline all block moves (such as calls to @code{memcpy} or structure +@@ -25091,8 +25102,8 @@ + @itemx -mpclmul + @opindex mpclmul + @need 200 +-@itemx -mclfushopt +-@opindex mclfushopt ++@itemx -mclflushopt ++@opindex mclflushopt + @need 200 + @itemx -mfsgsbase + @opindex mfsgsbase +Index: gcc/doc/gcov.texi +=================================================================== +--- a/src/gcc/doc/gcov.texi (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/doc/gcov.texi (.../branches/gcc-7-branch) +@@ -322,7 +322,7 @@ + Additional block information may succeed each line, when requested by + command line option. The @var{execution_count} is @samp{-} for lines + containing no code. Unexecuted lines are marked @samp{#####} or +-@samp{====}, depending on whether they are reachable by ++@samp{=====}, depending on whether they are reachable by + non-exceptional paths or only exceptional paths such as C++ exception + handlers, respectively. Given @samp{-a} option, unexecuted blocks are + marked @samp{$$$$$} or @samp{%%%%%}, depending on whether a basic block +@@ -618,6 +618,8 @@ + to invoke the @code{__gcov_dump} function. Thus @code{__gcov_dump} + is executed after all user defined static destructors, + as well as handlers registered with @code{atexit}. ++If an executable loads a dynamic shared object via dlopen functionality, ++@option{-Wl,--dynamic-list-data} is needed to dump all profile data. + + @c man end + +Index: gcc/doc/rtl.texi +=================================================================== +--- a/src/gcc/doc/rtl.texi (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/doc/rtl.texi (.../branches/gcc-7-branch) +@@ -1291,10 +1291,11 @@ + @findex CDImode + @findex CTImode + @findex COImode +-@item CQImode, CHImode, CSImode, CDImode, CTImode, COImode ++@findex CPSImode ++@item CQImode, CHImode, CSImode, CDImode, CTImode, COImode, CPSImode + These modes stand for a complex number represented as a pair of integer + values. The integer values are in @code{QImode}, @code{HImode}, +-@code{SImode}, @code{DImode}, @code{TImode}, and @code{OImode}, ++@code{SImode}, @code{DImode}, @code{TImode}, @code{OImode}, and @code{PSImode}, + respectively. + + @findex BND32mode diff -u gcc-7-7.3.0/debian/patches/svn-updates.diff gcc-7-7.3.0/debian/patches/svn-updates.diff --- gcc-7-7.3.0/debian/patches/svn-updates.diff +++ gcc-7-7.3.0/debian/patches/svn-updates.diff @@ -1,10 +1,10 @@ -# DP: updates from the 7 branch upto 20180419 (r259485). +# DP: updates from the 7 branch upto 20180531 (r260992). last_update() { cat > ${dir}LAST_UPDATED ++ ++ backport from trunk: ++ 2018-04-16 Cesar Philippidis ++ Tom de Vries ++ ++ PR middle-end/84955 ++ * testsuite/libgomp.oacc-c-c++-common/pr84955.c: New test. ++ * testsuite/libgomp.oacc-fortran/pr84955.f90: New test. ++ +2018-03-03 Jakub Jelinek + + Backported from mainline @@ -142,6 +152,44 @@ + abort (); + return 0; +} +Index: libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90 +=================================================================== +--- a/src/libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,13 @@ ++! { dg-do compile } ++ ++subroutine s ++ integer :: i, j ++ !$acc parallel loop tile(2,3) ++ do i = 1, 10 ++ do j = 1, 10 ++ do ++ end do ++ end do ++ end do ++ !$acc end parallel loop ++end subroutine s +Index: libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c +=================================================================== +--- a/src/libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c (.../tags/gcc_7_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c (.../branches/gcc-7-branch) +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++ ++int ++main (void) ++{ ++ int i, j; ++ ++#pragma acc parallel loop tile(2,3) ++ for (i = 1; i < 10; i++) ++ for (j = 1; j < 10; j++) ++ for (;;) ++ ; ++ ++ return i + j; ++} Index: libgomp/omp.h.in =================================================================== --- a/src/libgomp/omp.h.in (.../tags/gcc_7_3_0_release) @@ -155,6 +203,83 @@ __GOMP_NOTHROW; extern void omp_destroy_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; extern void omp_set_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; +Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc (.../branches/gcc-7-branch) +@@ -154,7 +154,6 @@ + # include + #endif + #include +-#include + #include + #include + #include +@@ -247,7 +246,19 @@ + #endif // SANITIZER_LINUX || SANITIZER_FREEBSD + + #if SANITIZER_LINUX && !SANITIZER_ANDROID +- unsigned struct_ustat_sz = sizeof(struct ustat); ++ // Use pre-computed size of struct ustat to avoid which ++ // has been removed from glibc 2.28. ++#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \ ++ || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \ ++ || defined(__x86_64__) ++#define SIZEOF_STRUCT_USTAT 32 ++#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \ ++ || defined(__powerpc__) || defined(__s390__) || defined(__sparc__) ++#define SIZEOF_STRUCT_USTAT 20 ++#else ++#error Unknown size of struct ustat ++#endif ++ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT; + unsigned struct_rlimit64_sz = sizeof(struct rlimit64); + unsigned struct_statvfs64_sz = sizeof(struct statvfs64); + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID +Index: libsanitizer/asan/asan_allocator.h +=================================================================== +--- a/src/libsanitizer/asan/asan_allocator.h (.../tags/gcc_7_3_0_release) ++++ b/src/libsanitizer/asan/asan_allocator.h (.../branches/gcc-7-branch) +@@ -115,7 +115,7 @@ + + #if SANITIZER_CAN_USE_ALLOCATOR64 + # if defined(__powerpc64__) +-const uptr kAllocatorSpace = 0xa0000000000ULL; ++const uptr kAllocatorSpace = ~(uptr)0; + const uptr kAllocatorSize = 0x20000000000ULL; // 2T. + typedef DefaultSizeClassMap SizeClassMap; + # elif defined(__aarch64__) && SANITIZER_ANDROID +Index: libsanitizer/ChangeLog +=================================================================== +--- a/src/libsanitizer/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/libsanitizer/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,26 @@ ++2018-05-31 Matthias Klose ++ ++ PR sanitizer/86012 ++ * sanitizer_common/sanitizer_platform_limits_posix.cc: Define ++ SIZEOF_STRUCT_USTAT for 32bit sparc. ++ ++2018-05-24 H.J. Lu ++ ++ PR sanitizer/85835 ++ * sanitizer_common/sanitizer_platform_limits_posix.cc: Don't ++ include for Linux. ++ (SIZEOF_STRUCT_USTAT): New. ++ (struct_ustat_sz): Use SIZEOF_STRUCT_USTAT for Linux. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-18 Bill Seurer ++ ++ PR sanitizer/85389 ++ * asan/asan_allocator.h (kAllocatorSpace): For __powerpc64__ change ++ from 0xa0000000000ULL to ~(uptr)0. ++ + 2018-01-25 Release Manager + + * GCC 7.3.0 released. Index: libstdc++-v3/configure =================================================================== --- a/src/libstdc++-v3/configure (.../tags/gcc_7_3_0_release) @@ -320,6 +445,25 @@ : ${CONFIG_STATUS=./config.status} ac_write_fail=0 +Index: libstdc++-v3/src/filesystem/ops.cc +=================================================================== +--- a/src/libstdc++-v3/src/filesystem/ops.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/src/filesystem/ops.cc (.../branches/gcc-7-branch) +@@ -1391,10 +1391,11 @@ + ec.assign(errno, std::generic_category()); + else + { ++ uintmax_t fragment_size = f.f_frsize; + info = space_info{ +- f.f_blocks * f.f_frsize, +- f.f_bfree * f.f_frsize, +- f.f_bavail * f.f_frsize ++ f.f_blocks * fragment_size, ++ f.f_bfree * fragment_size, ++ f.f_bavail * fragment_size + }; + ec.clear(); + } Index: libstdc++-v3/src/c++98/ios_failure.cc =================================================================== --- a/src/libstdc++-v3/src/c++98/ios_failure.cc (.../tags/gcc_7_3_0_release) @@ -590,6 +734,217 @@ # Propagate the target-specific source directories through the build chain. ATOMICITY_SRCDIR=config/${atomicity_dir} +Index: libstdc++-v3/doc/xml/faq.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/faq.xml (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/faq.xml (.../branches/gcc-7-branch) +@@ -734,15 +734,16 @@ + except for some corner cases. Support for localization + in locale may be incomplete on some non-GNU + platforms. Also dependent on the underlying platform is support +- for wchar_t and long +- long specializations, and details of thread support. ++ for wchar_t and long long specializations, ++ and details of thread support. + + + Long answer: See the implementation status pages for + C++98, +- TR1, and +- C++11. +- C++14. ++ TR1, ++ C++11, ++ C++14, and ++ C++17. + + + +@@ -875,6 +876,9 @@ + + + ++ ++ This answer is old and probably no longer be relevant. ++ + + Another problem is the rel_ops namespace and the template + comparison operator functions contained therein. If they become +Index: libstdc++-v3/doc/xml/manual/using.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/using.xml (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/using.xml (.../branches/gcc-7-branch) +@@ -1016,7 +1016,7 @@ + + + The _GLIBCXX_USE_CXX11_ABI macro (see +-) controls whether ++ ) controls whether + the declarations in the library headers use the old or new ABI. + So the decision of which ABI to use can be made separately for each + source file being compiled. +@@ -1051,12 +1051,39 @@ + + + Although the standard exception types defined in +- <stdexcept> use strings, they ++ <stdexcept> use strings, most + are not defined twice, so that a std::out_of_range + exception thrown in one file can always be caught by a suitable handler in + another file, even if the two files are compiled with different ABIs. + + ++ One exception type does change when using the new ABI, namely ++ std::ios_base::failure. ++ This is necessary because the 2011 standard changed its base class from ++ std::exception to ++ std::system_error, which causes its layout to change. ++ Exceptions due to iostream errors are thrown by a function inside ++ libstdc++.so, so whether the thrown ++ exception uses the old std::ios_base::failure type ++ or the new one depends on the ABI that was active when ++ libstdc++.so was built, ++ not the ABI active in the user code that is using ++ iostreams. ++ This means that for a given build of GCC the type thrown is fixed. ++ In current releases the library throws a special type that can be caught ++ by handlers for either the old or new type, ++ but for GCC 7.1, 7.2 and 7.3 the library throws the new ++ std::ios_base::failure type, ++ and for GCC 5.x and 6.x the library throws the old type. ++ Catch handlers of type std::ios_base::failure ++ will only catch the exceptions if using a newer release, ++ or if the handler is compiled with the same ABI as the type thrown by ++ the library. ++ Handlers for std::exception will always catch ++ iostreams exceptions, because the old and new type both inherit from ++ std::exception. ++ ++ +
Troubleshooting + + If you get linker errors about undefined references to symbols +Index: libstdc++-v3/doc/xml/manual/debug_mode.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/debug_mode.xml (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/debug_mode.xml (.../branches/gcc-7-branch) +@@ -285,7 +285,19 @@ + + + +- ++ ++ std::array ++ array ++ __gnu_debug::array ++ <debug/array> ++ ++ ++ std::forward_list ++ forward_list ++ __gnu_debug::forward_list ++ <debug/forward_list> ++ ++ + std::unordered_map + unordered_map + __gnu_debug::unordered_map +Index: libstdc++-v3/doc/html/faq.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/faq.html (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/html/faq.html (.../branches/gcc-7-branch) +@@ -534,14 +534,15 @@ + except for some corner cases. Support for localization + in locale may be incomplete on some non-GNU + platforms. Also dependent on the underlying platform is support +- for wchar_t and long +- long specializations, and details of thread support. ++ for wchar_t and long long specializations, ++ and details of thread support. +

+ Long answer: See the implementation status pages for + C++98, +- TR1, and +- C++11. +- C++14. ++ TR1, ++ C++11, ++ C++14, and ++ C++17. +

5.2.

+ Bugs in the ISO C++ language or library specification +

+@@ -633,7 +634,7 @@ + without other drawbacks, send us a patch. +

6.3.

+ Ambiguous overloads after including an old-style header +-

++

Note

This answer is old and probably no longer be relevant.

+ Another problem is the rel_ops namespace and the template + comparison operator functions contained therein. If they become + visible in the same namespace as other comparison functions +Index: libstdc++-v3/doc/html/manual/debug_mode_using.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/debug_mode_using.html (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/debug_mode_using.html (.../branches/gcc-7-branch) +@@ -20,4 +20,4 @@ + containers: +

Table 17.1. Debugging Containers

ContainerHeaderDebug containerDebug header
std::bitsetbitset__gnu_debug::bitset<debug/bitset>
std::dequedeque__gnu_debug::deque<debug/deque>
std::listlist__gnu_debug::list<debug/list>
std::mapmap__gnu_debug::map<debug/map>
std::multimapmap__gnu_debug::multimap<debug/map>
std::multisetset__gnu_debug::multiset<debug/set>
std::setset__gnu_debug::set<debug/set>
std::stringstring__gnu_debug::string<debug/string>
std::wstringstring__gnu_debug::wstring<debug/string>
std::basic_stringstring__gnu_debug::basic_string<debug/string>
std::vectorvector__gnu_debug::vector<debug/vector>

In addition, when compiling in C++11 mode, these additional + containers have additional debug capability. +-

Table 17.2. Debugging Containers C++11

ContainerHeaderDebug containerDebug header
std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

+\ No newline at end of file ++

Table 17.2. Debugging Containers C++11

ContainerHeaderDebug containerDebug header
std::arrayarray__gnu_debug::array<debug/array>
std::forward_listforward_list__gnu_debug::forward_list<debug/forward_list>
std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/using_dual_abi.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/using_dual_abi.html (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/using_dual_abi.html (.../branches/gcc-7-branch) +@@ -14,7 +14,7 @@ + for the new implementations have different names the definitions for both + versions can be present in the same library. +

The _GLIBCXX_USE_CXX11_ABI macro (see +-Macros) controls whether ++ Macros) controls whether + the declarations in the library headers use the old or new ABI. + So the decision of which ABI to use can be made separately for each + source file being compiled. +@@ -43,10 +43,35 @@ + facet that derives from one or other version of + time_get is installed in the locale). +

Although the standard exception types defined in +- <stdexcept> use strings, they ++ <stdexcept> use strings, most + are not defined twice, so that a std::out_of_range + exception thrown in one file can always be caught by a suitable handler in + another file, even if the two files are compiled with different ABIs. ++

One exception type does change when using the new ABI, namely ++ std::ios_base::failure. ++ This is necessary because the 2011 standard changed its base class from ++ std::exception to ++ std::system_error, which causes its layout to change. ++ Exceptions due to iostream errors are thrown by a function inside ++ libstdc++.so, so whether the thrown ++ exception uses the old std::ios_base::failure type ++ or the new one depends on the ABI that was active when ++ libstdc++.so was built, ++ not the ABI active in the user code that is using ++ iostreams. ++ This means that for a given build of GCC the type thrown is fixed. ++ In current releases the library throws a special type that can be caught ++ by handlers for either the old or new type, ++ but for GCC 7.1, 7.2 and 7.3 the library throws the new ++ std::ios_base::failure type, ++ and for GCC 5.x and 6.x the library throws the old type. ++ Catch handlers of type std::ios_base::failure ++ will only catch the exceptions if using a newer release, ++ or if the handler is compiled with the same ABI as the type thrown by ++ the library. ++ Handlers for std::exception will always catch ++ iostreams exceptions, because the old and new type both inherit from ++ std::exception. +

Troubleshooting

If you get linker errors about undefined references to symbols + that involve types in the std::__cxx11 namespace or the tag + [abi:cxx11] then it probably indicates that you are trying to Index: libstdc++-v3/include/Makefile.in =================================================================== --- a/src/libstdc++-v3/include/Makefile.in (.../tags/gcc_7_3_0_release) @@ -774,6 +1129,15 @@ } struct monostate { }; +@@ -1240,7 +1242,7 @@ + + using _Result_type = + decltype(std::forward<_Visitor>(__visitor)( +- get<0>(std::forward<_Variants>(__variants))...)); ++ std::get<0>(std::forward<_Variants>(__variants))...)); + + constexpr auto& __vtable = __detail::__variant::__gen_vtable< + _Result_type, _Visitor&&, _Variants&&...>::_S_vtable; Index: libstdc++-v3/include/bits/parse_numbers.h =================================================================== --- a/src/libstdc++-v3/include/bits/parse_numbers.h (.../tags/gcc_7_3_0_release) @@ -792,6 +1156,78 @@ template struct _Number_help<_Base, _Pow, _Dig> { +Index: libstdc++-v3/include/bits/node_handle.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/node_handle.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/node_handle.h (.../branches/gcc-7-branch) +@@ -105,7 +105,7 @@ + { + using std::swap; + swap(_M_ptr, __nh._M_ptr); +- if (_AllocTraits::propagate_on_container_swap ++ if (_AllocTraits::propagate_on_container_swap::value + || !_M_alloc || !__nh._M_alloc) + _M_alloc.swap(__nh._M_alloc); + else +Index: libstdc++-v3/include/bits/valarray_array.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/valarray_array.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/valarray_array.h (.../branches/gcc-7-branch) +@@ -152,7 +152,10 @@ + { + inline static void + _S_do_it(const _Tp* __b, const _Tp* __e, _Tp* __restrict__ __o) +- { __builtin_memcpy(__o, __b, (__e - __b) * sizeof(_Tp)); } ++ { ++ if (__b) ++ __builtin_memcpy(__o, __b, (__e - __b) * sizeof(_Tp)); ++ } + }; + + template +@@ -258,7 +261,10 @@ + { + inline static void + _S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b) +- { __builtin_memcpy(__b, __a, __n * sizeof (_Tp)); } ++ { ++ if (__n != 0) ++ __builtin_memcpy(__b, __a, __n * sizeof (_Tp)); ++ } + }; + + // Copy a plain array __a[<__n>] into a play array __b[<>] +Index: libstdc++-v3/include/bits/random.tcc +=================================================================== +--- a/src/libstdc++-v3/include/bits/random.tcc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/bits/random.tcc (.../branches/gcc-7-branch) +@@ -2356,7 +2356,7 @@ + __v = __v * __v * __v; + __u = __aurng(); + } +- while (__u > result_type(1.0) - 0.331 * __n * __n * __n * __n ++ while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n + && (std::log(__u) > (0.5 * __n * __n + __a1 + * (1.0 - __v + std::log(__v))))); + +@@ -2405,7 +2405,7 @@ + __v = __v * __v * __v; + __u = __aurng(); + } +- while (__u > result_type(1.0) - 0.331 * __n * __n * __n * __n ++ while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n + && (std::log(__u) > (0.5 * __n * __n + __a1 + * (1.0 - __v + std::log(__v))))); + +@@ -2426,7 +2426,7 @@ + __v = __v * __v * __v; + __u = __aurng(); + } +- while (__u > result_type(1.0) - 0.331 * __n * __n * __n * __n ++ while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n + && (std::log(__u) > (0.5 * __n * __n + __a1 + * (1.0 - __v + std::log(__v))))); + Index: libstdc++-v3/include/bits/random.h =================================================================== --- a/src/libstdc++-v3/include/bits/random.h (.../tags/gcc_7_3_0_release) @@ -847,6 +1283,64 @@ template<> struct __byte_operand { using __type = byte; }; template<> struct __byte_operand { using __type = byte; }; template<> struct __byte_operand { using __type = byte; }; +Index: libstdc++-v3/include/tr1/exp_integral.tcc +=================================================================== +--- a/src/libstdc++-v3/include/tr1/exp_integral.tcc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/tr1/exp_integral.tcc (.../branches/gcc-7-branch) +@@ -86,7 +86,7 @@ + _Tp __term = _Tp(1); + _Tp __esum = _Tp(0); + _Tp __osum = _Tp(0); +- const unsigned int __max_iter = 100; ++ const unsigned int __max_iter = 1000; + for (unsigned int __i = 1; __i < __max_iter; ++__i) + { + __term *= - __x / __i; +@@ -156,7 +156,7 @@ + _Tp + __expint_En_series(unsigned int __n, _Tp __x) + { +- const unsigned int __max_iter = 100; ++ const unsigned int __max_iter = 1000; + const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); + const int __nm1 = __n - 1; + _Tp __ans = (__nm1 != 0 +@@ -202,7 +202,7 @@ + _Tp + __expint_En_cont_frac(unsigned int __n, _Tp __x) + { +- const unsigned int __max_iter = 100; ++ const unsigned int __max_iter = 1000; + const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); + const _Tp __fp_min = std::numeric_limits<_Tp>::min(); + const int __nm1 = __n - 1; +Index: libstdc++-v3/include/tr1/ell_integral.tcc +=================================================================== +--- a/src/libstdc++-v3/include/tr1/ell_integral.tcc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/include/tr1/ell_integral.tcc (.../branches/gcc-7-branch) +@@ -685,8 +685,8 @@ + const _Tp __kk = __k * __k; + + return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1)) +- - __nu +- * __ellint_rj(_Tp(0), _Tp(1) - __kk, _Tp(1), _Tp(1) + __nu) ++ + __nu ++ * __ellint_rj(_Tp(0), _Tp(1) - __kk, _Tp(1), _Tp(1) - __nu) + / _Tp(3); + } + } +@@ -735,9 +735,9 @@ + + const _Tp __Pi = __s + * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1)) +- - __nu * __sss ++ + __nu * __sss + * __ellint_rj(__cc, _Tp(1) - __kk * __ss, _Tp(1), +- _Tp(1) + __nu * __ss) / _Tp(3); ++ _Tp(1) - __nu * __ss) / _Tp(3); + + if (__n == 0) + return __Pi; Index: libstdc++-v3/include/Makefile.am =================================================================== --- a/src/libstdc++-v3/include/Makefile.am (.../tags/gcc_7_3_0_release) @@ -860,11 +1354,145 @@ +# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81797 +.NOTPARALLEL: +endif +Index: libstdc++-v3/libsupc++/cxxabi_init_exception.h +=================================================================== +--- a/src/libstdc++-v3/libsupc++/cxxabi_init_exception.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/libsupc++/cxxabi_init_exception.h (.../branches/gcc-7-branch) +@@ -62,6 +62,9 @@ + void* + __cxa_allocate_exception(size_t) _GLIBCXX_NOTHROW; + ++ void ++ __cxa_free_exception(void*) _GLIBCXX_NOTHROW; ++ + // Initialize exception (this is a GNU extension) + __cxa_refcounted_exception* + __cxa_init_primary_exception(void *object, std::type_info *tinfo, +Index: libstdc++-v3/libsupc++/exception_ptr.h +=================================================================== +--- a/src/libstdc++-v3/libsupc++/exception_ptr.h (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/libsupc++/exception_ptr.h (.../branches/gcc-7-branch) +@@ -178,25 +178,31 @@ + exception_ptr + make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT + { +-#if __cpp_exceptions ++#if __cpp_exceptions && __cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI ++ void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); ++ (void) __cxxabiv1::__cxa_init_primary_exception( ++ __e, const_cast(&typeid(__ex)), ++ __exception_ptr::__dest_thunk<_Ex>); + try + { +-#if __cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI +- void *__e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); +- (void)__cxxabiv1::__cxa_init_primary_exception( +- __e, const_cast(&typeid(__ex)), +- __exception_ptr::__dest_thunk<_Ex>); + ::new (__e) _Ex(__ex); + return exception_ptr(__e); +-#else ++ } ++ catch(...) ++ { ++ __cxxabiv1::__cxa_free_exception(__e); ++ return current_exception(); ++ } ++#elif __cpp_exceptions ++ try ++ { + throw __ex; +-#endif + } + catch(...) + { + return current_exception(); + } +-#else ++#else // no RTTI and no exceptions + return exception_ptr(); + #endif + } Index: libstdc++-v3/ChangeLog =================================================================== --- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_7_3_0_release) +++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-7-branch) -@@ -1,3 +1,157 @@ +@@ -1,3 +1,232 @@ ++2018-05-17 Jonathan Wakely ++ ++ PR libstdc++/85812 ++ * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare. ++ * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]: ++ Refactor to separate non-throwing and throwing implementations. ++ [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory ++ if constructing the object throws. ++ ++2018-05-14 Jonathan Wakely ++ ++ PR libstdc++/67554 ++ * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>) ++ (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy. ++ ++ PR libstdc++/82966 ++ * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value ++ instead of type. ++ * testsuite/23_containers/set/modifiers/node_swap.cc: New. ++ ++2018-05-10 Jonathan Wakely ++ ++ * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer. ++ * doc/xml/manual/debug_mode.xml: Add array and forward_list to list ++ of C++11 containers with Debug Mode support. ++ * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure. ++ * doc/html/*: Regenerate. ++ ++2018-05-07 Edward Smith-Rowland <3dw4rd@verizon.net> ++ Jonathan Wakely ++ ++ Backport from mainline ++ 2018-05-07 Edward Smith-Rowland <3dw4rd@verizon.net> ++ ++ PR libstdc++/80506 ++ * include/bits/random.tcc (gamma_distribution::operator()): Fix magic ++ number used in loop condition. ++ (gamma_distribution::__generate_impl()): Ditto. ++ ++2018-05-03 Jonathan Wakely ++ ++ PR libstdc++/84769 ++ * include/std/variant (visit): Qualify std::get call. ++ ++ PR libstdc++/85632 use uintmax_t for arithmetic ++ * src/filesystem/ops.cc (experimental::filesystem::space): Perform ++ arithmetic in result type. ++ * testsuite/experimental/filesystem/operations/space.cc: New. ++ ++2018-04-30 Edward Smith-Rowland <3dw4rd@verizon.net> ++ ++ PR libstdc++/pr66689 - comp_ellint_3 and ellint_3 return garbage values ++ * include/tr1/ell_integral.tcc: Correct the nu sign convention ++ in ellint_3 and comp_ellint_3. ++ * testsuite/tr1/5_numerical_facilities/special_functions/ ++ 06_comp_ellint_3/check_value.cc: Regen with correct values. ++ * testsuite/tr1/5_numerical_facilities/special_functions/ ++ 14_ellint_3/check_value.cc: Ditto. ++ * testsuite/special_functions/06_comp_ellint_3/check_value.cc: Ditto. ++ * testsuite/special_functions/13_ellint_3/check_value.cc: Ditto. ++ * testsuite/special_functions/06_comp_ellint_3/pr66689.cc: New. ++ * testsuite/special_functions/13_ellint_3/pr66689.cc: New. ++ * testsuite/tr1/5_numerical_facilities/special_functions/ ++ 06_comp_ellint_3/pr66689.cc: New. ++ * testsuite/tr1/5_numerical_facilities/special_functions/ ++ 14_ellint_3/pr66689.cc: New. ++ ++2018-04-30 Edward Smith-Rowland <3dw4rd@verizon.net> ++ ++ PR libstdc++/68397 std::tr1::expint fails ... long double arguments. ++ * include/tr1/exp_integral.tcc: Increase iteration limits. ++ * testsuite/tr1/5_numerical_facilities/special_functions/15_expint/ ++ pr68397.cc: New test. ++ * testsuite/special_functions/14_expint/pr68397.cc: New test. ++ +2018-04-18 Jonathan Wakely + Jakub Jelinek + @@ -1021,43 +1649,26579 @@ + 2018-01-25 Release Manager - * GCC 7.3.0 released. -Index: libstdc++-v3/testsuite/18_support/byte/81076.cc -=================================================================== ---- a/src/libstdc++-v3/testsuite/18_support/byte/81076.cc (.../tags/gcc_7_3_0_release) -+++ b/src/libstdc++-v3/testsuite/18_support/byte/81076.cc (.../branches/gcc-7-branch) -@@ -0,0 +1,26 @@ -+// Copyright (C) 2018 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 3, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING3. If not see -+// . -+ -+// { dg-options "-std=gnu++17" } -+// { dg-do compile { target c++1z } } -+ -+#include -+ -+template void to_integer(...); -+ -+using T = decltype(to_integer(std::byte{})); -+using T = void; -Index: libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc + * GCC 7.3.0 released. +Index: libstdc++-v3/testsuite/18_support/byte/81076.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/18_support/byte/81076.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/18_support/byte/81076.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++17" } ++// { dg-do compile { target c++1z } } ++ ++#include ++ ++template void to_integer(...); ++ ++using T = decltype(to_integer(std::byte{})); ++using T = void; +Index: libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,42 @@ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++17" } ++// { dg-do run { target c++1z } } ++ ++#include ++#include ++#include ++ ++void ++test01() ++{ ++#ifdef _GLIBCXX_HAVE_ALIGNED_ALLOC ++ void* p = std::aligned_alloc(256, 1); ++ if (p) ++ { ++ VERIFY( (reinterpret_cast(p) % 256) == 0 ); ++ std::free(p); ++ } ++#endif ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/30_threads/thread/84532.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/thread/84532.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/thread/84532.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,38 @@ ++// { dg-do compile { target c++11 } } ++// { dg-require-cstdint "" } ++// { dg-require-gthreads "" } ++ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++ ++// PR libstdc++/84532 ++ ++struct F ++{ ++ template ++ void operator()(T, U, int&) ++ { ++ using std::is_same; ++ using std::reference_wrapper; ++ static_assert(is_same>::value, ""); ++ static_assert(is_same>::value, ""); ++ } ++}; ++int i = 0; ++std::thread t(F{}, std::ref(i), std::cref(i), std::ref(i)); +Index: libstdc++-v3/testsuite/30_threads/async/84532.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/30_threads/async/84532.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/30_threads/async/84532.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,38 @@ ++// { dg-do compile { target c++11 } } ++// { dg-require-cstdint "" } ++// { dg-require-gthreads "" } ++ ++// Copyright (C) 2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++ ++// PR libstdc++/84532 ++ ++struct F ++{ ++ template ++ void operator()(T, U, int&) ++ { ++ using std::is_same; ++ using std::reference_wrapper; ++ static_assert(is_same>::value, ""); ++ static_assert(is_same>::value, ""); ++ } ++}; ++int i = 0; ++auto fut = std::async(F{}, std::ref(i), std::cref(i), std::ref(i)); +Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++ ++#include ++#include ++ ++void ++test01() ++{ ++ double Pi1 = std::tr1::comp_ellint_3(0.75, 0.0); ++ VERIFY(std::abs(Pi1 - 1.91099) < 0.00001); ++ ++ double Pi2 = std::tr1::comp_ellint_3(0.75, 0.5); ++ VERIFY(std::abs(Pi2 - 2.80011) < 0.00001); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc (.../branches/gcc-7-branch) +@@ -1,6 +1,7 @@ +-// 2007-02-04 Edward Smith-Rowland <3dw4rd@verizon.net> ++// { dg-do run { target c++11 } } ++// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } + // +-// Copyright (C) 2007-2017 Free Software Foundation, Inc. ++// Copyright (C) 2016-2018 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the +@@ -18,826 +19,490 @@ + // . + + // comp_ellint_3 +- +- + // Compare against values generated by the GNU Scientific Library. + // The GSL can be found on the web: http://www.gnu.org/software/gsl/ +- ++#include + #include + #if defined(__TEST_DEBUG) +-#include +-#define VERIFY(A) \ +-if (!(A)) \ +- { \ +- std::cout << "line " << __LINE__ \ +- << " max_abs_frac = " << max_abs_frac \ +- << std::endl; \ +- } ++# include ++# define VERIFY(A) \ ++ if (!(A)) \ ++ { \ ++ std::cout << "line " << __LINE__ \ ++ << " max_abs_frac = " << max_abs_frac \ ++ << std::endl; \ ++ } + #else +-#include ++# include + #endif +-#include "../testcase.h" ++#include + +- + // Test data for k=-0.90000000000000002. +-testcase_comp_ellint_3 data001[] = { ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.2838262090802751e-16 ++// mean(f - f_Boost): 4.4408920985006264e-17 ++// variance(f - f_Boost): 2.4347558803117648e-34 ++// stddev(f - f_Boost): 1.5603704304785339e-17 ++const testcase_comp_ellint_3 ++data001[10] = ++{ + { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000 }, +- { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001 }, +- { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001 }, +- { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999 }, +- { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002 }, +- { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000 }, +- { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998 }, +- { 1.6600480747670938, -0.90000000000000002, 0.69999999999999996 }, +- { 1.6044591960982204, -0.90000000000000002, 0.80000000000000004 }, +- { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002 }, ++ { 2.4295011187834885, -0.90000000000000002, 0.10000000000000001 }, ++ { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001 }, ++ { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004 }, ++ { 3.1000689868578619, -0.90000000000000002, 0.40000000000000002 }, ++ { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000 }, ++ { 3.9549939883570229, -0.90000000000000002, 0.60000000000000009 }, ++ { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007 }, ++ { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004 }, ++ { 8.9942562031858699, -0.90000000000000002, 0.90000000000000002 }, + }; ++const double toler001 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002. +-template +-void test001() ++// Test data for k=-0.80000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16 ++// mean(f - f_Boost): 9.5479180117763459e-16 ++// variance(f - f_Boost): 5.4782007307014711e-34 ++// stddev(f - f_Boost): 2.3405556457178006e-17 ++const testcase_comp_ellint_3 ++data002[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data001) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data001[i].k), Tp(data001[i].nu)); +- const Tp f0 = data001[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004. +-testcase_comp_ellint_3 data002[] = { +- { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000 }, +- { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001 }, +- { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001 }, +- { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999 }, +- { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002 }, +- { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000 }, +- { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998 }, +- { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996 }, +- { 1.4339837018309474, -0.80000000000000004, 0.80000000000000004 }, +- { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002 }, ++ { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000 }, ++ { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001 }, ++ { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001 }, ++ { 2.4392042002725698, -0.80000000000000004, 0.30000000000000004 }, ++ { 2.6604037035529728, -0.80000000000000004, 0.40000000000000002 }, ++ { 2.9478781158239751, -0.80000000000000004, 0.50000000000000000 }, ++ { 3.3418121892288055, -0.80000000000000004, 0.60000000000000009 }, ++ { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007 }, ++ { 4.9246422058196071, -0.80000000000000004, 0.80000000000000004 }, ++ { 7.2263259298637132, -0.80000000000000004, 0.90000000000000002 }, + }; ++const double toler002 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004. +-template +-void test002() ++// Test data for k=-0.69999999999999996. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 1.9832236886714888e-16 ++// mean(f - f_Boost): -1.5543122344752191e-16 ++// variance(f - f_Boost): 2.9825759533819119e-33 ++// stddev(f - f_Boost): 5.4612965066748680e-17 ++const testcase_comp_ellint_3 ++data003[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data002) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data002[i].k), Tp(data002[i].nu)); +- const Tp f0 = data002[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996. +-testcase_comp_ellint_3 data003[] = { +- { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000 }, +- { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001 }, +- { 1.6721098780092147, -0.69999999999999996, 0.20000000000000001 }, +- { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999 }, +- { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002 }, +- { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000 }, +- { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998 }, +- { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996 }, +- { 1.3427110650397533, -0.69999999999999996, 0.80000000000000004 }, +- { 1.3040500499695911, -0.69999999999999996, 0.90000000000000002 }, ++ { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000 }, ++ { 1.9541347343119564, -0.69999999999999996, 0.10000000000000001 }, ++ { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001 }, ++ { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004 }, ++ { 2.4342502915307880, -0.69999999999999996, 0.40000000000000002 }, ++ { 2.6868019968236996, -0.69999999999999996, 0.50000000000000000 }, ++ { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009 }, ++ { 3.5408408771788564, -0.69999999999999996, 0.70000000000000007 }, ++ { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004 }, ++ { 6.3796094177887754, -0.69999999999999996, 0.90000000000000002 }, + }; ++const double toler003 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996. +-template +-void test003() ++// Test data for k=-0.59999999999999998. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 2 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -1.9984014443252818e-16 ++// variance(f - f_Boost): 4.9303806576313241e-33 ++// stddev(f - f_Boost): 7.0216669371534022e-17 ++const testcase_comp_ellint_3 ++data004[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data003) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data003[i].k), Tp(data003[i].nu)); +- const Tp f0 = data003[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998. +-testcase_comp_ellint_3 data004[] = { + { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000 }, +- { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001 }, +- { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001 }, +- { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999 }, +- { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002 }, +- { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000 }, +- { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998 }, +- { 1.3232737468822811, -0.59999999999999998, 0.69999999999999996 }, +- { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004 }, +- { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002 }, ++ { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001 }, ++ { 1.9695980282802217, -0.59999999999999998, 0.20000000000000001 }, ++ { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004 }, ++ { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002 }, ++ { 2.5239007084492711, -0.59999999999999998, 0.50000000000000000 }, ++ { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009 }, ++ { 3.3029735898397159, -0.59999999999999998, 0.70000000000000007 }, ++ { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004 }, ++ { 5.8709993116265604, -0.59999999999999998, 0.90000000000000002 }, + }; ++const double toler004 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998. +-template +-void test004() ++// Test data for k=-0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16 ++// mean(f - f_Boost): 2.4424906541753446e-16 ++// variance(f - f_Boost): 7.3651365379430888e-33 ++// stddev(f - f_Boost): 8.5820373676319358e-17 ++const testcase_comp_ellint_3 ++data005[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data004) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data004[i].k), Tp(data004[i].nu)); +- const Tp f0 = data004[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000. +-testcase_comp_ellint_3 data005[] = { +- { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000 }, +- { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001 }, +- { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001 }, +- { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999 }, +- { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002 }, +- { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000 }, +- { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998 }, +- { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996 }, +- { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004 }, +- { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002 }, ++ { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000 }, ++ { 1.7803034946545482, -0.50000000000000000, 0.10000000000000001 }, ++ { 1.8922947612264021, -0.50000000000000000, 0.20000000000000001 }, ++ { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004 }, ++ { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002 }, ++ { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000 }, ++ { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009 }, ++ { 3.1433945297859229, -0.50000000000000000, 0.70000000000000007 }, ++ { 3.8750701888108070, -0.50000000000000000, 0.80000000000000004 }, ++ { 5.5355132096026463, -0.50000000000000000, 0.90000000000000002 }, + }; ++const double toler005 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000. +-template +-void test005() ++// Test data for k=-0.39999999999999991. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1718164615986397e-16 ++// mean(f - f_Boost): 6.2172489379008762e-16 ++// variance(f - f_Boost): 1.6458949750907531e-31 ++// stddev(f - f_Boost): 4.0569631192441877e-16 ++const testcase_comp_ellint_3 ++data006[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data005) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data005[i].k), Tp(data005[i].nu)); +- const Tp f0 = data005[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002. +-testcase_comp_ellint_3 data006[] = { +- { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000 }, +- { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001 }, +- { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001 }, +- { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999 }, +- { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002 }, +- { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000 }, +- { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998 }, +- { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996 }, +- { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004 }, +- { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002 }, ++ { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000 }, ++ { 1.7306968836847190, -0.39999999999999991, 0.10000000000000001 }, ++ { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001 }, ++ { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004 }, ++ { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002 }, ++ { 2.3367461373176512, -0.39999999999999991, 0.50000000000000000 }, ++ { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009 }, ++ { 3.0327078743873246, -0.39999999999999991, 0.70000000000000007 }, ++ { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004 }, ++ { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002 }, + }; ++const double toler006 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002. +-template +-void test006() ++// Test data for k=-0.29999999999999993. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.9274792319434433e-16 ++// mean(f - f_Boost): 6.2172489379008762e-16 ++// variance(f - f_Boost): 8.7651211691223537e-33 ++// stddev(f - f_Boost): 9.3622225828712025e-17 ++const testcase_comp_ellint_3 ++data007[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data006) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data006[i].k), Tp(data006[i].nu)); +- const Tp f0 = data006[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004. +-testcase_comp_ellint_3 data007[] = { +- { 1.6080486199305126, -0.30000000000000004, 0.0000000000000000 }, +- { 1.5323534693557526, -0.30000000000000004, 0.10000000000000001 }, +- { 1.4663658145259875, -0.30000000000000004, 0.20000000000000001 }, +- { 1.4081767433479089, -0.30000000000000004, 0.29999999999999999 }, +- { 1.3563643538969761, -0.30000000000000004, 0.40000000000000002 }, +- { 1.3098448759814960, -0.30000000000000004, 0.50000000000000000 }, +- { 1.2677758800420666, -0.30000000000000004, 0.59999999999999998 }, +- { 1.2294913236274980, -0.30000000000000004, 0.69999999999999996 }, +- { 1.1944567571590046, -0.30000000000000004, 0.80000000000000004 }, +- { 1.1622376896064912, -0.30000000000000004, 0.90000000000000002 }, ++ { 1.6080486199305128, -0.29999999999999993, 0.0000000000000000 }, ++ { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001 }, ++ { 1.8002173372290500, -0.29999999999999993, 0.20000000000000001 }, ++ { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004 }, ++ { 2.0822121773175533, -0.29999999999999993, 0.40000000000000002 }, ++ { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000 }, ++ { 2.5560975528589065, -0.29999999999999993, 0.60000000000000009 }, ++ { 2.9562123549913877, -0.29999999999999993, 0.70000000000000007 }, ++ { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004 }, ++ { 5.1479514944016795, -0.29999999999999993, 0.90000000000000002 }, + }; ++const double toler007 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004. +-template +-void test007() ++// Test data for k=-0.19999999999999996. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16 ++// mean(f - f_Boost): 3.1086244689504381e-16 ++// variance(f - f_Boost): 4.1147374377268827e-32 ++// stddev(f - f_Boost): 2.0284815596220939e-16 ++const testcase_comp_ellint_3 ++data008[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data007) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data007[i].k), Tp(data007[i].nu)); +- const Tp f0 = data007[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996. +-testcase_comp_ellint_3 data008[] = { +- { 1.5868678474541664, -0.19999999999999996, 0.0000000000000000 }, +- { 1.5126513474261092, -0.19999999999999996, 0.10000000000000001 }, +- { 1.4479323932249568, -0.19999999999999996, 0.20000000000000001 }, +- { 1.3908453514752481, -0.19999999999999996, 0.29999999999999999 }, +- { 1.3400002519661010, -0.19999999999999996, 0.40000000000000002 }, +- { 1.2943374404397376, -0.19999999999999996, 0.50000000000000000 }, +- { 1.2530330675914561, -0.19999999999999996, 0.59999999999999998 }, +- { 1.2154356555075867, -0.19999999999999996, 0.69999999999999996 }, +- { 1.1810223448909913, -0.19999999999999996, 0.80000000000000004 }, +- { 1.1493679916141863, -0.19999999999999996, 0.90000000000000002 }, ++ { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000 }, ++ { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001 }, ++ { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001 }, ++ { 1.8983924169967101, -0.19999999999999996, 0.30000000000000004 }, ++ { 2.0512956926676806, -0.19999999999999996, 0.40000000000000002 }, ++ { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000 }, ++ { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009 }, ++ { 2.9058704854500967, -0.19999999999999996, 0.70000000000000007 }, ++ { 3.5622166386422633, -0.19999999999999996, 0.80000000000000004 }, ++ { 5.0448269356200370, -0.19999999999999996, 0.90000000000000002 }, + }; ++const double toler008 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996. +-template +-void test008() ++// Test data for k=-0.099999999999999978. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16 ++// mean(f - f_Boost): 0.0000000000000000 ++// variance(f - f_Boost): 6.8368087769470551e-64 ++// stddev(f - f_Boost): 2.6147291976315738e-32 ++const testcase_comp_ellint_3 ++data009[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data008) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data008[i].k), Tp(data008[i].nu)); +- const Tp f0 = data008[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978. +-testcase_comp_ellint_3 data009[] = { +- { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000 }, +- { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001 }, +- { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001 }, +- { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999 }, +- { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002 }, +- { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000 }, +- { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998 }, +- { 1.2073745911083187, -0.099999999999999978, 0.69999999999999996 }, +- { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004 }, +- { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002 }, ++ { 1.5747455615173560, -0.099999999999999978, 0.0000000000000000 }, ++ { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001 }, ++ { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001 }, ++ { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004 }, ++ { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002 }, ++ { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000 }, ++ { 2.4913004919173827, -0.099999999999999978, 0.60000000000000009 }, ++ { 2.8771910188009744, -0.099999999999999978, 0.70000000000000007 }, ++ { 3.5246199613295617, -0.099999999999999978, 0.80000000000000004 }, ++ { 4.9862890417305508, -0.099999999999999978, 0.90000000000000002 }, + }; ++const double toler009 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978. +-template +-void test009() ++// Test data for k=0.0000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.1899085000907084e-16 ++// mean(f - f_Boost): -2.2204460492503131e-16 ++// variance(f - f_Boost): 5.4782007307014711e-32 ++// stddev(f - f_Boost): 2.3405556457178008e-16 ++const testcase_comp_ellint_3 ++data010[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data009) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data009[i].k), Tp(data009[i].nu)); +- const Tp f0 = data009[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000. +-testcase_comp_ellint_3 data010[] = { + { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000 }, +- { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001 }, +- { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001 }, +- { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999 }, +- { 1.3275651989026322, 0.0000000000000000, 0.40000000000000002 }, +- { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000 }, +- { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998 }, +- { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996 }, +- { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004 }, +- { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002 }, ++ { 1.6557647109660170, 0.0000000000000000, 0.10000000000000001 }, ++ { 1.7562036827601817, 0.0000000000000000, 0.20000000000000001 }, ++ { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004 }, ++ { 2.0278893379868062, 0.0000000000000000, 0.40000000000000002 }, ++ { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000 }, ++ { 2.4836470664490258, 0.0000000000000000, 0.60000000000000009 }, ++ { 2.8678686047727386, 0.0000000000000000, 0.70000000000000007 }, ++ { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004 }, ++ { 4.9672941328980516, 0.0000000000000000, 0.90000000000000002 }, + }; ++const double toler010 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000. +-template +-void test010() ++// Test data for k=0.10000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16 ++// mean(f - f_Boost): -2.2204460492503132e-17 ++// variance(f - f_Boost): 6.0868897007794120e-35 ++// stddev(f - f_Boost): 7.8018521523926693e-18 ++const testcase_comp_ellint_3 ++data011[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data010) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data010[i].k), Tp(data010[i].nu)); +- const Tp f0 = data010[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009. +-testcase_comp_ellint_3 data011[] = { +- { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000 }, +- { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001 }, +- { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001 }, +- { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999 }, +- { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002 }, +- { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000 }, +- { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998 }, +- { 1.2073745911083187, 0.10000000000000009, 0.69999999999999996 }, +- { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004 }, +- { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002 }, ++ { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000 }, ++ { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001 }, ++ { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001 }, ++ { 1.8826015946315440, 0.10000000000000009, 0.30000000000000004 }, ++ { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002 }, ++ { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000 }, ++ { 2.4913004919173827, 0.10000000000000009, 0.60000000000000009 }, ++ { 2.8771910188009744, 0.10000000000000009, 0.70000000000000007 }, ++ { 3.5246199613295617, 0.10000000000000009, 0.80000000000000004 }, ++ { 4.9862890417305508, 0.10000000000000009, 0.90000000000000002 }, + }; ++const double toler011 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009. +-template +-void test011() ++// Test data for k=0.20000000000000018. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16 ++// mean(f - f_Boost): 3.1086244689504381e-16 ++// variance(f - f_Boost): 4.1147374377268827e-32 ++// stddev(f - f_Boost): 2.0284815596220939e-16 ++const testcase_comp_ellint_3 ++data012[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data011) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data011[i].k), Tp(data011[i].nu)); +- const Tp f0 = data011[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996. +-testcase_comp_ellint_3 data012[] = { +- { 1.5868678474541664, 0.19999999999999996, 0.0000000000000000 }, +- { 1.5126513474261092, 0.19999999999999996, 0.10000000000000001 }, +- { 1.4479323932249568, 0.19999999999999996, 0.20000000000000001 }, +- { 1.3908453514752481, 0.19999999999999996, 0.29999999999999999 }, +- { 1.3400002519661010, 0.19999999999999996, 0.40000000000000002 }, +- { 1.2943374404397376, 0.19999999999999996, 0.50000000000000000 }, +- { 1.2530330675914561, 0.19999999999999996, 0.59999999999999998 }, +- { 1.2154356555075867, 0.19999999999999996, 0.69999999999999996 }, +- { 1.1810223448909913, 0.19999999999999996, 0.80000000000000004 }, +- { 1.1493679916141863, 0.19999999999999996, 0.90000000000000002 }, ++ { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000 }, ++ { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001 }, ++ { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001 }, ++ { 1.8983924169967101, 0.20000000000000018, 0.30000000000000004 }, ++ { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002 }, ++ { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000 }, ++ { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009 }, ++ { 2.9058704854500967, 0.20000000000000018, 0.70000000000000007 }, ++ { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004 }, ++ { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002 }, + }; ++const double toler012 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996. +-template +-void test012() ++// Test data for k=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.4585997630846713e-16 ++// mean(f - f_Boost): 5.1070259132757197e-16 ++// variance(f - f_Boost): 1.7591111235252501e-32 ++// stddev(f - f_Boost): 1.3263148659067538e-16 ++const testcase_comp_ellint_3 ++data013[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data012) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data012[i].k), Tp(data012[i].nu)); +- const Tp f0 = data012[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004. +-testcase_comp_ellint_3 data013[] = { +- { 1.6080486199305126, 0.30000000000000004, 0.0000000000000000 }, +- { 1.5323534693557526, 0.30000000000000004, 0.10000000000000001 }, +- { 1.4663658145259875, 0.30000000000000004, 0.20000000000000001 }, +- { 1.4081767433479089, 0.30000000000000004, 0.29999999999999999 }, +- { 1.3563643538969761, 0.30000000000000004, 0.40000000000000002 }, +- { 1.3098448759814960, 0.30000000000000004, 0.50000000000000000 }, +- { 1.2677758800420666, 0.30000000000000004, 0.59999999999999998 }, +- { 1.2294913236274980, 0.30000000000000004, 0.69999999999999996 }, +- { 1.1944567571590046, 0.30000000000000004, 0.80000000000000004 }, +- { 1.1622376896064912, 0.30000000000000004, 0.90000000000000002 }, ++ { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000 }, ++ { 1.6960848815118228, 0.30000000000000004, 0.10000000000000001 }, ++ { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001 }, ++ { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004 }, ++ { 2.0822121773175533, 0.30000000000000004, 0.40000000000000002 }, ++ { 2.2833505881933975, 0.30000000000000004, 0.50000000000000000 }, ++ { 2.5560975528589065, 0.30000000000000004, 0.60000000000000009 }, ++ { 2.9562123549913877, 0.30000000000000004, 0.70000000000000007 }, ++ { 3.6283050484567174, 0.30000000000000004, 0.80000000000000004 }, ++ { 5.1479514944016795, 0.30000000000000004, 0.90000000000000002 }, + }; ++const double toler013 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004. +-template +-void test013() ++// Test data for k=0.40000000000000013. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.7696531428672557e-16 ++// mean(f - f_Boost): 1.1990408665951691e-15 ++// variance(f - f_Boost): 2.6514491536595121e-31 ++// stddev(f - f_Boost): 5.1492224205791612e-16 ++const testcase_comp_ellint_3 ++data014[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data013) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data013[i].k), Tp(data013[i].nu)); +- const Tp f0 = data013[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991. +-testcase_comp_ellint_3 data014[] = { +- { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000 }, +- { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001 }, +- { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001 }, +- { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999 }, +- { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002 }, +- { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000 }, +- { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998 }, +- { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996 }, +- { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004 }, +- { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002 }, ++ { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000 }, ++ { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001 }, ++ { 1.8380358826317629, 0.40000000000000013, 0.20000000000000001 }, ++ { 1.9677924132520141, 0.40000000000000013, 0.30000000000000004 }, ++ { 2.1289968719280030, 0.40000000000000013, 0.40000000000000002 }, ++ { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000 }, ++ { 2.6186940209850196, 0.40000000000000013, 0.60000000000000009 }, ++ { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007 }, ++ { 3.7289548002199906, 0.40000000000000013, 0.80000000000000004 }, ++ { 5.3055535102872522, 0.40000000000000013, 0.90000000000000002 }, + }; ++const double toler014 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991. +-template +-void test014() ++// Test data for k=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16 ++// mean(f - f_Boost): 2.4424906541753446e-16 ++// variance(f - f_Boost): 7.3651365379430888e-33 ++// stddev(f - f_Boost): 8.5820373676319358e-17 ++const testcase_comp_ellint_3 ++data015[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data014) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data014[i].k), Tp(data014[i].nu)); +- const Tp f0 = data014[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000. +-testcase_comp_ellint_3 data015[] = { +- { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000 }, +- { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001 }, +- { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001 }, +- { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999 }, +- { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002 }, +- { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000 }, +- { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998 }, +- { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996 }, +- { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004 }, +- { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002 }, ++ { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000 }, ++ { 1.7803034946545482, 0.50000000000000000, 0.10000000000000001 }, ++ { 1.8922947612264021, 0.50000000000000000, 0.20000000000000001 }, ++ { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004 }, ++ { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002 }, ++ { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000 }, ++ { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009 }, ++ { 3.1433945297859229, 0.50000000000000000, 0.70000000000000007 }, ++ { 3.8750701888108070, 0.50000000000000000, 0.80000000000000004 }, ++ { 5.5355132096026463, 0.50000000000000000, 0.90000000000000002 }, + }; ++const double toler015 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000. +-template +-void test015() ++// Test data for k=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 2 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -2.2204460492503131e-16 ++// variance(f - f_Boost): 6.0868897007794117e-33 ++// stddev(f - f_Boost): 7.8018521523926690e-17 ++const testcase_comp_ellint_3 ++data016[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data015) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data015[i].k), Tp(data015[i].nu)); +- const Tp f0 = data015[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009. +-testcase_comp_ellint_3 data016[] = { + { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000 }, +- { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001 }, +- { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001 }, +- { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999 }, +- { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002 }, +- { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000 }, +- { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998 }, +- { 1.3232737468822811, 0.60000000000000009, 0.69999999999999996 }, +- { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004 }, +- { 1.2479362973851875, 0.60000000000000009, 0.90000000000000002 }, ++ { 1.8508766487100687, 0.60000000000000009, 0.10000000000000001 }, ++ { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001 }, ++ { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004 }, ++ { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002 }, ++ { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000 }, ++ { 2.8388723099514976, 0.60000000000000009, 0.60000000000000009 }, ++ { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007 }, ++ { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004 }, ++ { 5.8709993116265613, 0.60000000000000009, 0.90000000000000002 }, + }; ++const double toler016 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009. +-template +-void test016() ++// Test data for k=0.70000000000000018. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.9298727220933567e-16 ++// mean(f - f_Boost): 4.8849813083506892e-16 ++// variance(f - f_Boost): 2.0476296953421943e-31 ++// stddev(f - f_Boost): 4.5250742483877478e-16 ++const testcase_comp_ellint_3 ++data017[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data016) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data016[i].k), Tp(data016[i].nu)); +- const Tp f0 = data016[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996. +-testcase_comp_ellint_3 data017[] = { +- { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000 }, +- { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001 }, +- { 1.6721098780092147, 0.69999999999999996, 0.20000000000000001 }, +- { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999 }, +- { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002 }, +- { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000 }, +- { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998 }, +- { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996 }, +- { 1.3427110650397533, 0.69999999999999996, 0.80000000000000004 }, +- { 1.3040500499695911, 0.69999999999999996, 0.90000000000000002 }, ++ { 1.8456939983747238, 0.70000000000000018, 0.0000000000000000 }, ++ { 1.9541347343119566, 0.70000000000000018, 0.10000000000000001 }, ++ { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001 }, ++ { 2.2392290510988540, 0.70000000000000018, 0.30000000000000004 }, ++ { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002 }, ++ { 2.6868019968237000, 0.70000000000000018, 0.50000000000000000 }, ++ { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009 }, ++ { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007 }, ++ { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004 }, ++ { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002 }, + }; ++const double toler017 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996. +-template +-void test017() ++// Test data for k=0.80000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16 ++// mean(f - f_Boost): 9.5479180117763459e-16 ++// variance(f - f_Boost): 5.4782007307014711e-34 ++// stddev(f - f_Boost): 2.3405556457178006e-17 ++const testcase_comp_ellint_3 ++data018[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data017) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data017[i].k), Tp(data017[i].nu)); +- const Tp f0 = data017[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004. +-testcase_comp_ellint_3 data018[] = { +- { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000 }, +- { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001 }, +- { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001 }, +- { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999 }, +- { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002 }, +- { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000 }, +- { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998 }, +- { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996 }, +- { 1.4339837018309474, 0.80000000000000004, 0.80000000000000004 }, +- { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002 }, ++ { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000 }, ++ { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001 }, ++ { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001 }, ++ { 2.4392042002725698, 0.80000000000000004, 0.30000000000000004 }, ++ { 2.6604037035529728, 0.80000000000000004, 0.40000000000000002 }, ++ { 2.9478781158239751, 0.80000000000000004, 0.50000000000000000 }, ++ { 3.3418121892288055, 0.80000000000000004, 0.60000000000000009 }, ++ { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007 }, ++ { 4.9246422058196071, 0.80000000000000004, 0.80000000000000004 }, ++ { 7.2263259298637132, 0.80000000000000004, 0.90000000000000002 }, + }; ++const double toler018 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004. +-template +-void test018() ++// Test data for k=0.90000000000000013. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 1.5716352001310461e-16 ++// mean(f - f_Boost): 4.4408920985006264e-17 ++// variance(f - f_Boost): 2.4347558803117648e-34 ++// stddev(f - f_Boost): 1.5603704304785339e-17 ++const testcase_comp_ellint_3 ++data019[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data018) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data018[i].k), Tp(data018[i].nu)); +- const Tp f0 = data018[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991. +-testcase_comp_ellint_3 data019[] = { +- { 2.2805491384227699, 0.89999999999999991, 0.0000000000000000 }, +- { 2.1537868513875282, 0.89999999999999991, 0.10000000000000001 }, +- { 2.0443194576468890, 0.89999999999999991, 0.20000000000000001 }, +- { 1.9486280260314424, 0.89999999999999991, 0.29999999999999999 }, +- { 1.8641114227238347, 0.89999999999999991, 0.40000000000000002 }, +- { 1.7888013241937859, 0.89999999999999991, 0.50000000000000000 }, +- { 1.7211781128919521, 0.89999999999999991, 0.59999999999999998 }, +- { 1.6600480747670936, 0.89999999999999991, 0.69999999999999996 }, +- { 1.6044591960982200, 0.89999999999999991, 0.80000000000000004 }, +- { 1.5536420236310944, 0.89999999999999991, 0.90000000000000002 }, ++ { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000 }, ++ { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001 }, ++ { 2.6076835743348421, 0.90000000000000013, 0.20000000000000001 }, ++ { 2.8256506968858521, 0.90000000000000013, 0.30000000000000004 }, ++ { 3.1000689868578628, 0.90000000000000013, 0.40000000000000002 }, ++ { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000 }, ++ { 3.9549939883570242, 0.90000000000000013, 0.60000000000000009 }, ++ { 4.6985482312992453, 0.90000000000000013, 0.70000000000000007 }, ++ { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004 }, ++ { 8.9942562031858735, 0.90000000000000013, 0.90000000000000002 }, + }; ++const double toler019 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991. +-template +-void test019() +-{ +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data019) +- / sizeof(testcase_comp_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::comp_ellint_3(Tp(data019[i].k), Tp(data019[i].nu)); +- const Tp f0 = data019[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} ++template ++ void ++ test(const testcase_comp_ellint_3 (&data)[Num], Ret toler) ++ { ++ bool test __attribute__((unused)) = true; ++ const Ret eps = std::numeric_limits::epsilon(); ++ Ret max_abs_diff = -Ret(1); ++ Ret max_abs_frac = -Ret(1); ++ unsigned int num_datum = Num; ++ for (unsigned int i = 0; i < num_datum; ++i) ++ { ++ const Ret f = std::tr1::comp_ellint_3(data[i].k, data[i].nu); ++ const Ret f0 = data[i].f0; ++ const Ret diff = f - f0; ++ if (std::abs(diff) > max_abs_diff) ++ max_abs_diff = std::abs(diff); ++ if (std::abs(f0) > Ret(10) * eps ++ && std::abs(f) > Ret(10) * eps) ++ { ++ const Ret frac = diff / f0; ++ if (std::abs(frac) > max_abs_frac) ++ max_abs_frac = std::abs(frac); ++ } ++ } ++ VERIFY(max_abs_frac < toler); ++ } + +-int main(int, char**) ++int ++main() + { +- test001(); +- test002(); +- test003(); +- test004(); +- test005(); +- test006(); +- test007(); +- test008(); +- test009(); +- test010(); +- test011(); +- test012(); +- test013(); +- test014(); +- test015(); +- test016(); +- test017(); +- test018(); +- test019(); ++ test(data001, toler001); ++ test(data002, toler002); ++ test(data003, toler003); ++ test(data004, toler004); ++ test(data005, toler005); ++ test(data006, toler006); ++ test(data007, toler007); ++ test(data008, toler008); ++ test(data009, toler009); ++ test(data010, toler010); ++ test(data011, toler011); ++ test(data012, toler012); ++ test(data013, toler013); ++ test(data014, toler014); ++ test(data015, toler015); ++ test(data016, toler016); ++ test(data017, toler017); ++ test(data018, toler018); ++ test(data019, toler019); + return 0; + } +Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,46 @@ ++// Copyright (C) 2017 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// PR libstdc++/68397 - std::tr1::expint fails in __expint_En_cont_frac ++// for some long double arguments due to low __max_iter value ++ ++#include ++#include ++ ++void ++test01() ++{ ++ // Answers from Wolfram Alpha. ++ long double ans_ok = -0.10001943365331651406888645149537315243646135979573L; ++ long double ans_bomb = -0.10777727809650077516264612749163100483995270163783L; ++ ++ long double Ei_ok = std::tr1::expint(-1.500001L); ++ long double diff_ok = std::abs(Ei_ok - ans_ok); ++ VERIFY(diff_ok < 1.0e-15L); ++ ++ long double Ei_bomb = std::tr1::expint(-1.450001L); ++ long double diff_bomb = std::abs(Ei_bomb - ans_bomb); ++ VERIFY(diff_bomb < 1.0e-15L); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} ++ +Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,22 @@ ++ ++#include ++#include ++ ++void ++test01() ++{ ++ const double pi = 3.141592654; ++ ++ double Pi1 = std::tr1::ellint_3(0.75, 0.0, pi / 2.0); ++ VERIFY(std::abs(Pi1 - 1.91099) < 0.00001); ++ ++ double Pi2 = std::tr1::ellint_3(0.75, 0.5, pi / 2.0); ++ VERIFY(std::abs(Pi2 - 2.80011) < 0.00001); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc (.../branches/gcc-7-branch) +@@ -1,6 +1,7 @@ +-// 2007-02-04 Edward Smith-Rowland <3dw4rd@verizon.net> ++// { dg-do run { target c++11 } } ++// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } + // +-// Copyright (C) 2007-2017 Free Software Foundation, Inc. ++// Copyright (C) 2016-2018 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the +@@ -18,10098 +19,6324 @@ + // . + + // ellint_3 +- +- + // Compare against values generated by the GNU Scientific Library. + // The GSL can be found on the web: http://www.gnu.org/software/gsl/ +- ++#include + #include + #if defined(__TEST_DEBUG) +-#include +-#define VERIFY(A) \ +-if (!(A)) \ +- { \ +- std::cout << "line " << __LINE__ \ +- << " max_abs_frac = " << max_abs_frac \ +- << std::endl; \ +- } ++# include ++# define VERIFY(A) \ ++ if (!(A)) \ ++ { \ ++ std::cout << "line " << __LINE__ \ ++ << " max_abs_frac = " << max_abs_frac \ ++ << std::endl; \ ++ } + #else +-#include ++# include + #endif +-#include "../testcase.h" ++#include + +- + // Test data for k=-0.90000000000000002, nu=0.0000000000000000. +-testcase_ellint_3 data001[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17525427376115027, -0.90000000000000002, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35492464591297446, -0.90000000000000002, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.54388221416157134, -0.90000000000000002, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.74797400423532523, -0.90000000000000002, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.97463898451966458, -0.90000000000000002, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.2334463254523440, -0.90000000000000002, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.5355247765594910, -0.90000000000000002, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.8882928567775124, -0.90000000000000002, 0.0000000000000000, +- 1.3962634015954636 }, +- { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000, +- 1.5707963267948966 }, ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 5.7842011620951154e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 ++const testcase_ellint_3 ++data001[10] = ++{ ++ { 0.0000000000000000, -0.90000000000000002, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17525427376115027, -0.90000000000000002, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35492464591297446, -0.90000000000000002, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.54388221416157123, -0.90000000000000002, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.74797400423532512, -0.90000000000000002, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.97463898451966446, -0.90000000000000002, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.2334463254523438, -0.90000000000000002, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.5355247765594913, -0.90000000000000002, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.8882928567775126, -0.90000000000000002, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler001 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.0000000000000000. +-template +-void test001() ++// Test data for k=-0.90000000000000002, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 ++const testcase_ellint_3 ++data002[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data001) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data001[i].k), Tp(data001[i].nu), +- Tp(data001[i].phi)); +- const Tp f0 = data001[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.10000000000000001. +-testcase_ellint_3 data002[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17507714233254659, -0.90000000000000002, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35350932904326521, -0.90000000000000002, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53911129989870998, -0.90000000000000002, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.73666644254508429, -0.90000000000000002, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.95250736612100184, -0.90000000000000002, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1950199550905594, -0.90000000000000002, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.4741687286340848, -0.90000000000000002, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.7968678183506059, -0.90000000000000002, 0.10000000000000001, +- 1.3962634015954636 }, +- { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17543204932716244, -0.90000000000000002, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35636022898551184, -0.90000000000000002, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54880278898382584, -0.90000000000000002, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.75988834774529268, -0.90000000000000002, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.99853303003568117, -0.90000000000000002, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.2759958823999022, -0.90000000000000002, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.6051187364639401, -0.90000000000000002, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.9941406879519472, -0.90000000000000002, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 2.4295011187834881, -0.90000000000000002, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler002 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.10000000000000001. +-template +-void test002() ++// Test data for k=-0.90000000000000002, nu=0.20000000000000001. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 5.2711357908578066e-16 ++// mean(f - f_Boost): 8.0491169285323847e-17 ++// variance(f - f_Boost): 7.9985534974304465e-34 ++// stddev(f - f_Boost): 2.8281714052423424e-17 ++const testcase_ellint_3 ++data003[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data002) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data002[i].k), Tp(data002[i].nu), +- Tp(data002[i].phi)); +- const Tp f0 = data002[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.20000000000000001. +-testcase_ellint_3 data003[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17490065089140930, -0.90000000000000002, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.35211377590661436, -0.90000000000000002, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.53448220334204122, -0.90000000000000002, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.72591368943179613, -0.90000000000000002, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.93192539780038763, -0.90000000000000002, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.1600809679692683, -0.90000000000000002, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.4195407225882508, -0.90000000000000002, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.7168966476424528, -0.90000000000000002, 0.20000000000000001, +- 1.3962634015954636 }, +- { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17561047321968409, -0.90000000000000002, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35781659944356109, -0.90000000000000002, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.55388150905215283, -0.90000000000000002, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.77246874123251441, -0.90000000000000002, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 1.0244466254771925, -0.90000000000000002, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.3234824077640801, -0.90000000000000002, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.6849848968804237, -0.90000000000000002, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 2.1185749045502273, -0.90000000000000002, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler003 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.20000000000000001. +-template +-void test003() ++// Test data for k=-0.90000000000000002, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.9955372494296814e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 ++const testcase_ellint_3 ++data004[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data003) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data003[i].k), Tp(data003[i].nu), +- Tp(data003[i].phi)); +- const Tp f0 = data003[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.29999999999999999. +-testcase_ellint_3 data004[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17472479532647534, -0.90000000000000002, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.35073750187374114, -0.90000000000000002, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52998766129466979, -0.90000000000000002, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.71566993548699587, -0.90000000000000002, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.91271517762560195, -0.90000000000000002, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.1281241199843370, -0.90000000000000002, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.3704929576917448, -0.90000000000000002, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.6461981511487715, -0.90000000000000002, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17578954966746221, -0.90000000000000002, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35929429810867447, -0.90000000000000002, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55912757154240811, -0.90000000000000002, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.78578314722025389, -0.90000000000000002, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 1.0526941001131365, -0.90000000000000002, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.3769682234538601, -0.90000000000000002, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.7779437432911238, -0.90000000000000002, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 2.2676509341813631, -0.90000000000000002, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler004 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.29999999999999999. +-template +-void test004() ++// Test data for k=-0.90000000000000002, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16 ++// mean(f - f_Boost): 2.0261570199409106e-16 ++// variance(f - f_Boost): 5.8024227149195491e-32 ++// stddev(f - f_Boost): 2.4088218520512364e-16 ++const testcase_ellint_3 ++data005[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data004) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data004[i].k), Tp(data004[i].nu), +- Tp(data004[i].phi)); +- const Tp f0 = data004[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.40000000000000002. +-testcase_ellint_3 data005[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17454957156468839, -0.90000000000000002, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34938003933330430, -0.90000000000000002, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.52562093533067455, -0.90000000000000002, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.70589461324915703, -0.90000000000000002, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.89472658511942849, -0.90000000000000002, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0987419542323440, -0.90000000000000002, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.3261349565496301, -0.90000000000000002, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.5831293909853767, -0.90000000000000002, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17596928293938452, -0.90000000000000002, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.36079388642472821, -0.90000000000000002, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.56455096667115612, -0.90000000000000002, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.79990996997869435, -0.90000000000000002, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0836647913872215, -0.90000000000000002, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.4378726836091849, -0.90000000000000002, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.8880446720682853, -0.90000000000000002, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.4505848932025227, -0.90000000000000002, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 3.1000689868578615, -0.90000000000000002, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler005 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.40000000000000002. +-template +-void test005() ++// Test data for k=-0.90000000000000002, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.8944086593755267e-16 ++// mean(f - f_Boost): 6.9388939039072284e-17 ++// variance(f - f_Boost): 1.7333369499485123e-32 ++// stddev(f - f_Boost): 1.3165625507162629e-16 ++const testcase_ellint_3 ++data006[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data005) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data005[i].k), Tp(data005[i].nu), +- Tp(data005[i].phi)); +- const Tp f0 = data005[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.50000000000000000. +-testcase_ellint_3 data006[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17437497557073336, -0.90000000000000002, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34804093691586013, -0.90000000000000002, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.52137576320372914, -0.90000000000000002, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.69655163996912284, -0.90000000000000002, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.87783188683054236, -0.90000000000000002, 0.50000000000000000, +- 0.87266462599716477 }, +- { 1.0716015959755185, -0.90000000000000002, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.2857636916026747, -0.90000000000000002, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.5264263913252365, -0.90000000000000002, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17614967734498183, -0.90000000000000002, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.36231594750319435, -0.90000000000000002, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.57016256984349567, -0.90000000000000002, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.81494025918293422, -0.90000000000000002, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.1178482279283477, -0.90000000000000002, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.5081455873012106, -0.90000000000000002, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 2.0213599730863998, -0.90000000000000002, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.6822467012926827, -0.90000000000000002, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler006 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.50000000000000000. +-template +-void test006() ++// Test data for k=-0.90000000000000002, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.0602096790645418e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 ++const testcase_ellint_3 ++data007[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data006) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data006[i].k), Tp(data006[i].nu), +- Tp(data006[i].phi)); +- const Tp f0 = data006[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.59999999999999998. +-testcase_ellint_3 data007[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17420100334657815, -0.90000000000000002, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34671975876122157, -0.90000000000000002, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.51724631570707968, -0.90000000000000002, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.68760879113743056, -0.90000000000000002, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.86192157779698364, -0.90000000000000002, 0.59999999999999998, +- 0.87266462599716477 }, +- { 1.0464279696166354, -0.90000000000000002, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.2488156247094004, -0.90000000000000002, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.4750988777188474, -0.90000000000000002, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17633073723493825, -0.90000000000000002, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36386108723492810, -0.90000000000000002, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.57597424744716241, -0.90000000000000002, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.83098051948501150, -0.90000000000000002, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.1558706545698916, -0.90000000000000002, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.5905576379415669, -0.90000000000000002, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 2.1875186010215080, -0.90000000000000002, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.9885767771316849, -0.90000000000000002, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.9549939883570224, -0.90000000000000002, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler007 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.59999999999999998. +-template +-void test007() ++// Test data for k=-0.90000000000000002, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1938610791060186e-16 ++// mean(f - f_Boost): 3.0253577421035517e-16 ++// variance(f - f_Boost): 4.2342877557562532e-32 ++// stddev(f - f_Boost): 2.0577385051935665e-16 ++const testcase_ellint_3 ++data008[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data007) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data007[i].k), Tp(data007[i].nu), +- Tp(data007[i].phi)); +- const Tp f0 = data007[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.69999999999999996. +-testcase_ellint_3 data008[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17402765093102210, -0.90000000000000002, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34541608382635131, -0.90000000000000002, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.51322715827061705, -0.90000000000000002, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.67903717872440306, -0.90000000000000002, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.84690113601682671, -0.90000000000000002, 0.69999999999999996, +- 0.87266462599716477 }, +- { 1.0229914311548418, -0.90000000000000002, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.2148329639709381, -0.90000000000000002, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.4283586501307806, -0.90000000000000002, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.6600480747670938, -0.90000000000000002, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17651246700160939, -0.90000000000000002, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36542993547358982, -0.90000000000000002, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.58199897877674867, -0.90000000000000002, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.84815633587352857, -0.90000000000000002, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1985495623872375, -0.90000000000000002, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.6892158134027688, -0.90000000000000002, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.4029722191094236, -0.90000000000000002, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 3.4201084941340052, -0.90000000000000002, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler008 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.69999999999999996. +-template +-void test008() ++// Test data for k=-0.90000000000000002, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.5091520146032660e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 9.8950000698295322e-33 ++// stddev(f - f_Boost): 9.9473614943006532e-17 ++const testcase_ellint_3 ++data009[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data008) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data008[i].k), Tp(data008[i].nu), +- Tp(data008[i].phi)); +- const Tp f0 = data008[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.80000000000000004. +-testcase_ellint_3 data009[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17385491439925149, -0.90000000000000002, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34412950523113928, -0.90000000000000002, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50931321668729612, -0.90000000000000002, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.67081081392296349, -0.90000000000000002, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.83268846097293259, -0.90000000000000002, 0.80000000000000004, +- 0.87266462599716477 }, +- { 1.0010985015814027, -0.90000000000000002, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.1834394045489678, -0.90000000000000002, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.3855695891683188, -0.90000000000000002, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.6044591960982204, -0.90000000000000002, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17669487107954862, -0.90000000000000002, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36702314729628421, -0.90000000000000002, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.58825099711365492, -0.90000000000000002, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.86661711422209031, -0.90000000000000002, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.2469779109884802, -0.90000000000000002, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.8105469760531578, -0.90000000000000002, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.6989505165893752, -0.90000000000000002, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 4.0935213267757424, -0.90000000000000002, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler009 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.80000000000000004. +-template +-void test009() ++// Test data for k=-0.90000000000000002, nu=0.90000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.2628580104449673e-16 ++// mean(f - f_Boost): 8.5764728652293339e-16 ++// variance(f - f_Boost): 8.9671393318321280e-31 ++// stddev(f - f_Boost): 9.4694980499666013e-16 ++const testcase_ellint_3 ++data010[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data009) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data009[i].k), Tp(data009[i].nu), +- Tp(data009[i].phi)); +- const Tp f0 = data009[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.90000000000000002, nu=0.90000000000000002. +-testcase_ellint_3 data010[] = { +- { -0.0000000000000000, -0.90000000000000002, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17368278986240138, -0.90000000000000002, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34285962963961397, -0.90000000000000002, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.50549974644993323, -0.90000000000000002, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.66290623857720898, -0.90000000000000002, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.81921183128847164, -0.90000000000000002, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.98058481956066390, -0.90000000000000002, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.1543223520473567, -0.90000000000000002, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.3462119782292938, -0.90000000000000002, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.90000000000000002, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17687795394604169, -0.90000000000000002, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36864140434751286, -0.90000000000000002, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.59474595366817051, -0.90000000000000002, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.88654237226056665, -0.90000000000000002, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.3026595810616726, -0.90000000000000002, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.9653635459278078, -0.90000000000000002, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 3.1451407527189463, -0.90000000000000002, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 5.3745230680316114, -0.90000000000000002, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 8.9942562031858682, -0.90000000000000002, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler010 = 2.5000000000000020e-13; + +-// Test function for k=-0.90000000000000002, nu=0.90000000000000002. +-template +-void test010() ++// Test data for k=-0.80000000000000004, nu=0.0000000000000000. ++// max(|f - f_Boost|): 1.5543122344752192e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.1368406725192426e-31 ++// stddev(f - f_Boost): 4.6225974002926564e-16 ++const testcase_ellint_3 ++data011[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data010) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data010[i].k), Tp(data010[i].nu), +- Tp(data010[i].phi)); +- const Tp f0 = data010[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.0000000000000000. +-testcase_ellint_3 data011[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17510154241338902, -0.80000000000000004, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35365068839779390, -0.80000000000000004, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53926804409084561, -0.80000000000000004, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.73587926028070383, -0.80000000000000004, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.94770942970071170, -0.80000000000000004, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1789022995388239, -0.80000000000000004, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.4323027881876009, -0.80000000000000004, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.7069629739121674, -0.80000000000000004, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17510154241338899, -0.80000000000000004, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35365068839779396, -0.80000000000000004, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53926804409084550, -0.80000000000000004, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.73587926028070372, -0.80000000000000004, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.94770942970071170, -0.80000000000000004, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1789022995388236, -0.80000000000000004, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.4323027881876012, -0.80000000000000004, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.7069629739121677, -0.80000000000000004, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler011 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.0000000000000000. +-template +-void test011() ++// Test data for k=-0.80000000000000004, nu=0.10000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.9190059990693968e-31 ++// stddev(f - f_Boost): 5.4027826155319237e-16 ++const testcase_ellint_3 ++data012[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data011) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data011[i].k), Tp(data011[i].nu), +- Tp(data011[i].phi)); +- const Tp f0 = data011[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.10000000000000001. +-testcase_ellint_3 data012[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17492468824017166, -0.80000000000000004, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35224443521476911, -0.80000000000000004, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53456851853226961, -0.80000000000000004, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.72488875602364944, -0.80000000000000004, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.92661354274638952, -0.80000000000000004, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1432651144499077, -0.80000000000000004, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.3774479927211429, -0.80000000000000004, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.6287092337196041, -0.80000000000000004, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17527903952342144, -0.80000000000000004, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35507705313548549, -0.80000000000000004, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54411455987643553, -0.80000000000000004, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.74745625666804383, -0.80000000000000004, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.97046953684238557, -0.80000000000000004, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.2183080025184605, -0.80000000000000004, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.4943711151994405, -0.80000000000000004, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.7972401309544201, -0.80000000000000004, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler012 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.10000000000000001. +-template +-void test012() ++// Test data for k=-0.80000000000000004, nu=0.20000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 2.7528339102381189e-31 ++// stddev(f - f_Boost): 5.2467455724840699e-16 ++const testcase_ellint_3 ++data013[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data012) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data012[i].k), Tp(data012[i].nu), +- Tp(data012[i].phi)); +- const Tp f0 = data012[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.20000000000000001. +-testcase_ellint_3 data013[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17474847286224943, -0.80000000000000004, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.35085779529084682, -0.80000000000000004, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.53000829263059157, -0.80000000000000004, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.71443466027453406, -0.80000000000000004, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.90698196872715420, -0.80000000000000004, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.1108198200558581, -0.80000000000000004, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.3284988909963957, -0.80000000000000004, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.5600369318140328, -0.80000000000000004, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17545718375086419, -0.80000000000000004, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35652404627248163, -0.80000000000000004, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54911638512920913, -0.80000000000000004, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.75967684282131176, -0.80000000000000004, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.99513526893543769, -0.80000000000000004, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.2622192109995993, -0.80000000000000004, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.5654106676347741, -0.80000000000000004, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.9029531718534984, -0.80000000000000004, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler013 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.20000000000000001. +-template +-void test013() ++// Test data for k=-0.80000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 2.8249350208968825e-31 ++// stddev(f - f_Boost): 5.3150117788175054e-16 ++const testcase_ellint_3 ++data014[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data013) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data013[i].k), Tp(data013[i].nu), +- Tp(data013[i].phi)); +- const Tp f0 = data013[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.29999999999999999. +-testcase_ellint_3 data014[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17457289217669891, -0.80000000000000004, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34949028801501258, -0.80000000000000004, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52558024362769318, -0.80000000000000004, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.70447281740094914, -0.80000000000000004, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.88864745641528986, -0.80000000000000004, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0811075819341465, -0.80000000000000004, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.2844589654082377, -0.80000000000000004, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.4991461361277849, -0.80000000000000004, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17563597931587369, -0.80000000000000004, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35799220412005128, -0.80000000000000004, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55428253691111318, -0.80000000000000004, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.77260647376977365, -0.80000000000000004, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 1.0220015271210958, -0.80000000000000004, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.3115965312302671, -0.80000000000000004, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.6478518468813512, -0.80000000000000004, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 2.0290458414203481, -0.80000000000000004, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.4392042002725693, -0.80000000000000004, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler014 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.29999999999999999. +-template +-void test014() ++// Test data for k=-0.80000000000000004, nu=0.40000000000000002. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16 ++// mean(f - f_Boost): 3.3861802251067273e-16 ++// variance(f - f_Boost): 4.3719465706454422e-31 ++// stddev(f - f_Boost): 6.6120696991527871e-16 ++const testcase_ellint_3 ++data015[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data014) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data014[i].k), Tp(data014[i].nu), +- Tp(data014[i].phi)); +- const Tp f0 = data014[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.40000000000000002. +-testcase_ellint_3 data015[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17439794211872178, -0.80000000000000004, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34814144964568972, -0.80000000000000004, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.52127776285273075, -0.80000000000000004, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.69496411438966599, -0.80000000000000004, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.87146878427509589, -0.80000000000000004, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0537579024937762, -0.80000000000000004, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.2445534387922637, -0.80000000000000004, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.4446769766361993, -0.80000000000000004, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17581543047866136, -0.80000000000000004, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35948208343061633, -0.80000000000000004, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55962280893702021, -0.80000000000000004, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.78632063889234116, -0.80000000000000004, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0514333069550323, -0.80000000000000004, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.3677213138838757, -0.80000000000000004, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.7451736773665165, -0.80000000000000004, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.1830100424586831, -0.80000000000000004, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.6604037035529724, -0.80000000000000004, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler015 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.40000000000000002. +-template +-void test015() ++// Test data for k=-0.80000000000000004, nu=0.50000000000000000. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16 ++// mean(f - f_Boost): 3.8580250105724191e-16 ++// variance(f - f_Boost): 6.4106456575047741e-31 ++// stddev(f - f_Boost): 8.0066507713929764e-16 ++const testcase_ellint_3 ++data016[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data015) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data015[i].k), Tp(data015[i].nu), +- Tp(data015[i].phi)); +- const Tp f0 = data015[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.50000000000000000. +-testcase_ellint_3 data016[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17422361866118047, -0.80000000000000004, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34681083254170475, -0.80000000000000004, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51709470815494440, -0.80000000000000004, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.68587375344080259, -0.80000000000000004, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.85532571852810624, -0.80000000000000004, 0.50000000000000000, +- 0.87266462599716477 }, +- { 1.0284677391874906, -0.80000000000000004, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.2081693942686225, -0.80000000000000004, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.3955803006426311, -0.80000000000000004, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17599554153999472, -0.80000000000000004, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.36099426243351540, -0.80000000000000004, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.56514786174780673, -0.80000000000000004, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.80090697622371010, -0.80000000000000004, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0838891627679339, -0.80000000000000004, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.4323506654466280, -0.80000000000000004, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.8625761085390575, -0.80000000000000004, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.3768757305654766, -0.80000000000000004, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.9478781158239746, -0.80000000000000004, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler016 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.50000000000000000. +-template +-void test016() ++// Test data for k=-0.80000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15 ++// mean(f - f_Boost): 4.8294701571194306e-16 ++// variance(f - f_Boost): 1.1633910328160319e-30 ++// stddev(f - f_Boost): 1.0786060600682865e-15 ++const testcase_ellint_3 ++data017[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data016) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data016[i].k), Tp(data016[i].nu), +- Tp(data016[i].phi)); +- const Tp f0 = data016[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.59999999999999998. +-testcase_ellint_3 data017[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17404991781414092, -0.80000000000000004, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34549800443625167, -0.80000000000000004, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.51302536167001556, -0.80000000000000004, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.67717065003912258, -0.80000000000000004, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.84011512421134416, -0.80000000000000004, 0.59999999999999998, +- 0.87266462599716477 }, +- { 1.0049863847088742, -0.80000000000000004, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.1748145941898918, -0.80000000000000004, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.3510319699755071, -0.80000000000000004, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17617631684170665, -0.80000000000000004, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36252934193666231, -0.80000000000000004, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.57086932622945163, -0.80000000000000004, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.81646796740150973, -0.80000000000000004, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.1199552158519064, -0.80000000000000004, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.5079766673336394, -0.80000000000000004, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 2.0082747447038165, -0.80000000000000004, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.6315146066775523, -0.80000000000000004, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.3418121892288051, -0.80000000000000004, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler017 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.59999999999999998. +-template +-void test017() ++// Test data for k=-0.80000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16 ++// mean(f - f_Boost): 3.2751579226442120e-16 ++// variance(f - f_Boost): 4.4236851331020672e-31 ++// stddev(f - f_Boost): 6.6510789599147505e-16 ++const testcase_ellint_3 ++data018[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data017) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data017[i].k), Tp(data017[i].nu), +- Tp(data017[i].phi)); +- const Tp f0 = data017[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.69999999999999996. +-testcase_ellint_3 data018[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17387683562442202, -0.80000000000000004, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34420254775101611, -0.80000000000000004, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50906439222143685, -0.80000000000000004, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.66882693152688433, -0.80000000000000004, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.82574792844091316, -0.80000000000000004, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.98310431309490953, -0.80000000000000004, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.1440884535113258, -0.80000000000000004, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.3103743938952537, -0.80000000000000004, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17635776076721221, -0.80000000000000004, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36408794649916976, -0.80000000000000004, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.57679992290624138, -0.80000000000000004, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.83312441418142813, -0.80000000000000004, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1603958891464856, -0.80000000000000004, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.5982855143796213, -0.80000000000000004, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.1962484408371821, -0.80000000000000004, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.9873281786111869, -0.80000000000000004, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler018 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.69999999999999996. +-template +-void test018() ++// Test data for k=-0.80000000000000004, nu=0.80000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16 ++// mean(f - f_Boost): 7.0499162063697436e-16 ++// variance(f - f_Boost): 1.7230805408026989e-30 ++// stddev(f - f_Boost): 1.3126616246400665e-15 ++const testcase_ellint_3 ++data019[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data018) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data018[i].k), Tp(data018[i].nu), +- Tp(data018[i].phi)); +- const Tp f0 = data018[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.80000000000000004. +-testcase_ellint_3 data019[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17370436817515206, -0.80000000000000004, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34292405894783395, -0.80000000000000004, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50520682176250087, -0.80000000000000004, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.66081751679736189, -0.80000000000000004, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.81214672249355102, -0.80000000000000004, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.96264481387685574, -0.80000000000000004, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.1156611352656258, -0.80000000000000004, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.2730756225143889, -0.80000000000000004, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.4339837018309474, -0.80000000000000004, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17653987774203392, -0.80000000000000004, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36567072568046877, -0.80000000000000004, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.58295359996558616, -0.80000000000000004, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.85101998309176108, -0.80000000000000004, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.2062322059736537, -0.80000000000000004, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.7090321420917429, -0.80000000000000004, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.4529058049405066, -0.80000000000000004, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.5368893360106948, -0.80000000000000004, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.9246422058196062, -0.80000000000000004, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler019 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.80000000000000004. +-template +-void test019() ++// Test data for k=-0.80000000000000004, nu=0.90000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16 ++// mean(f - f_Boost): 8.9928064994637676e-16 ++// variance(f - f_Boost): 1.5485199571025344e-30 ++// stddev(f - f_Boost): 1.2443954183066307e-15 ++const testcase_ellint_3 ++data020[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data019) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data019[i].k), Tp(data019[i].nu), +- Tp(data019[i].phi)); +- const Tp f0 = data019[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.80000000000000004, nu=0.90000000000000002. +-testcase_ellint_3 data020[] = { +- { -0.0000000000000000, -0.80000000000000004, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17353251158533153, -0.80000000000000004, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34166214791545768, -0.80000000000000004, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.50144799535130580, -0.80000000000000004, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.65311976193814447, -0.80000000000000004, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.79924384892320866, -0.80000000000000004, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.94345762353365625, -0.80000000000000004, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0892582069219159, -0.80000000000000004, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.2387000876610268, -0.80000000000000004, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.80000000000000004, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17672267223433513, -0.80000000000000004, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36727835537196063, -0.80000000000000004, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58934569363716649, -0.80000000000000004, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.87032723471138851, -0.80000000000000004, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.2588676111323349, -0.80000000000000004, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.8498731900660019, -0.80000000000000004, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.8368381299300420, -0.80000000000000004, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 4.5674844191654058, -0.80000000000000004, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 7.2263259298637115, -0.80000000000000004, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler020 = 2.5000000000000020e-13; + +-// Test function for k=-0.80000000000000004, nu=0.90000000000000002. +-template +-void test020() ++// Test data for k=-0.69999999999999996, nu=0.0000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.5425633303580569e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 7.4564398834547797e-34 ++// stddev(f - f_Boost): 2.7306482533374340e-17 ++const testcase_ellint_3 ++data021[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data020) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data020[i].k), Tp(data020[i].nu), +- Tp(data020[i].phi)); +- const Tp f0 = data020[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.0000000000000000. +-testcase_ellint_3 data021[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17496737466916720, -0.69999999999999996, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35254687535677925, -0.69999999999999996, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53536740275997130, -0.69999999999999996, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.72603797651684465, -0.69999999999999996, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.92698296348313458, -0.69999999999999996, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1400447527693316, -0.69999999999999996, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.3657668117194071, -0.69999999999999996, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.6024686895959159, -0.69999999999999996, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17496737466916723, -0.69999999999999996, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35254687535677931, -0.69999999999999996, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53536740275997130, -0.69999999999999996, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.72603797651684454, -0.69999999999999996, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.92698296348313447, -0.69999999999999996, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1400447527693316, -0.69999999999999996, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.3657668117194071, -0.69999999999999996, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.6024686895959162, -0.69999999999999996, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler021 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.0000000000000000. +-template +-void test021() ++// Test data for k=-0.69999999999999996, nu=0.10000000000000001. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.2736371663370261e-16 ++// mean(f - f_Boost): 8.8817841970012528e-17 ++// variance(f - f_Boost): 9.7390235212470591e-34 ++// stddev(f - f_Boost): 3.1207408609570677e-17 ++const testcase_ellint_3 ++data022[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data021) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data021[i].k), Tp(data021[i].nu), +- Tp(data021[i].phi)); +- const Tp f0 = data021[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.10000000000000001. +-testcase_ellint_3 data022[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17479076384884681, -0.69999999999999996, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35114844900396364, -0.69999999999999996, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53072776947527012, -0.69999999999999996, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.71530198262386246, -0.69999999999999996, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.90666760677828306, -0.69999999999999996, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1063366517438080, -0.69999999999999996, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.3149477243092147, -0.69999999999999996, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.5314886725038925, -0.69999999999999996, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17514462737300920, -0.69999999999999996, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35396527997470451, -0.69999999999999996, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54015179589433981, -0.69999999999999996, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.73734430854477728, -0.69999999999999996, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.94888950796697047, -0.69999999999999996, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1772807959736322, -0.69999999999999996, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.4231796401075831, -0.69999999999999996, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.6841856799887469, -0.69999999999999996, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.9541347343119562, -0.69999999999999996, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler022 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.10000000000000001. +-template +-void test022() ++// Test data for k=-0.69999999999999996, nu=0.20000000000000001. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9907249355047774e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 ++const testcase_ellint_3 ++data023[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data022) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data022[i].k), Tp(data022[i].nu), +- Tp(data022[i].phi)); +- const Tp f0 = data022[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.20000000000000001. +-testcase_ellint_3 data023[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17461479077791472, -0.69999999999999996, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34976950621407538, -0.69999999999999996, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52622533231350188, -0.69999999999999996, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.70508774017895226, -0.69999999999999996, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.88775302531730294, -0.69999999999999996, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0756195476149006, -0.69999999999999996, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.2695349716654372, -0.69999999999999996, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.4690814617070540, -0.69999999999999996, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.6721098780092147, -0.69999999999999996, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17532252613350796, -0.69999999999999996, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35540417596807522, -0.69999999999999996, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54508913033361928, -0.69999999999999996, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.74927635777718415, -0.69999999999999996, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.97261706337936338, -0.69999999999999996, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.2187303976209327, -0.69999999999999996, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.4887796709222487, -0.69999999999999996, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.7796581281839212, -0.69999999999999996, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler023 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.20000000000000001. +-template +-void test023() ++// Test data for k=-0.69999999999999996, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.6912897610535316e-16 ++// mean(f - f_Boost): 1.6653345369377347e-17 ++// variance(f - f_Boost): 2.6207864467918357e-32 ++// stddev(f - f_Boost): 1.6188843216214787e-16 ++const testcase_ellint_3 ++data024[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data023) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data023[i].k), Tp(data023[i].nu), +- Tp(data023[i].phi)); +- const Tp f0 = data023[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.29999999999999999. +-testcase_ellint_3 data024[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17443945136076172, -0.69999999999999996, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34840956983535287, -0.69999999999999996, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52185308551329179, -0.69999999999999996, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.69535240431168266, -0.69999999999999996, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.87007983473964923, -0.69999999999999996, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0474657975577066, -0.69999999999999996, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.2286225419931889, -0.69999999999999996, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.4136490671013271, -0.69999999999999996, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17550107516328570, -0.69999999999999996, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35686409576571959, -0.69999999999999996, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55018827316513352, -0.69999999999999996, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.76189759494390275, -0.69999999999999996, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.99844623430885615, -0.69999999999999996, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2652862989039833, -0.69999999999999996, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.5647666808691361, -0.69999999999999996, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.8932499694938163, -0.69999999999999996, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler024 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.29999999999999999. +-template +-void test024() ++// Test data for k=-0.69999999999999996, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.5578567644745380e-16 ++// mean(f - f_Boost): 1.4710455076283324e-16 ++// variance(f - f_Boost): 2.6715739327327140e-33 ++// stddev(f - f_Boost): 5.1687270509601433e-17 ++const testcase_ellint_3 ++data025[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data024) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data024[i].k), Tp(data024[i].nu), +- Tp(data024[i].phi)); +- const Tp f0 = data024[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.40000000000000002. +-testcase_ellint_3 data025[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17426474153983226, -0.69999999999999996, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34706817945773732, -0.69999999999999996, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51760452851738159, -0.69999999999999996, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.68605801534722766, -0.69999999999999996, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.85351339387296532, -0.69999999999999996, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0215297967969537, -0.69999999999999996, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1915051074460528, -0.69999999999999996, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.3639821911744707, -0.69999999999999996, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17568027871494424, -0.69999999999999996, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35834559208180261, -0.69999999999999996, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55545885451190613, -0.69999999999999996, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.77528120402568101, -0.69999999999999996, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0267241287600319, -0.69999999999999996, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.3181380338980246, -0.69999999999999996, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.6542840785132085, -0.69999999999999996, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.0315595131131818, -0.69999999999999996, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.4342502915307875, -0.69999999999999996, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler025 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.40000000000000002. +-template +-void test025() ++// Test data for k=-0.69999999999999996, nu=0.50000000000000000. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.0416041815443256e-16 ++// mean(f - f_Boost): 1.9151347174783951e-16 ++// variance(f - f_Boost): 7.8758646268991113e-33 ++// stddev(f - f_Boost): 8.8746068233466605e-17 ++const testcase_ellint_3 ++data026[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data025) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data025[i].k), Tp(data025[i].nu), +- Tp(data025[i].phi)); +- const Tp f0 = data025[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.50000000000000000. +-testcase_ellint_3 data026[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17409065729516093, -0.69999999999999996, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34574489064986091, -0.69999999999999996, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51347361925579793, -0.69999999999999996, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.67717079489579290, -0.69999999999999996, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.83793902055292280, -0.69999999999999996, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.99752863545289705, -0.69999999999999996, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.1576240080401499, -0.69999999999999996, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.3191464023923762, -0.69999999999999996, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17586014108156545, -0.69999999999999996, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35984923894341653, -0.69999999999999996, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.56091135606739995, -0.69999999999999996, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.78951212635197054, -0.69999999999999996, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0578865732938729, -0.69999999999999996, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3789149005151722, -0.69999999999999996, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.7620212286086225, -0.69999999999999996, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.2051554347435585, -0.69999999999999996, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.6868019968236991, -0.69999999999999996, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler026 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.50000000000000000. +-template +-void test026() ++// Test data for k=-0.69999999999999996, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.6515644573247170e-16 ++// mean(f - f_Boost): 9.9920072216264091e-17 ++// variance(f - f_Boost): 1.2325951644078310e-33 ++// stddev(f - f_Boost): 3.5108334685767011e-17 ++const testcase_ellint_3 ++data027[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data026) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data026[i].k), Tp(data026[i].nu), +- Tp(data026[i].phi)); +- const Tp f0 = data026[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.59999999999999998. +-testcase_ellint_3 data027[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17391719464391611, -0.69999999999999996, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34443927423869031, -0.69999999999999996, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50945473266486074, -0.69999999999999996, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.66866056326513823, -0.69999999999999996, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.82325830002337352, -0.69999999999999996, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.97522808245669357, -0.69999999999999996, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.1265300613705282, -0.69999999999999996, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.2784066076152003, -0.69999999999999996, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17604066659721918, -0.69999999999999996, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36137563278353424, -0.69999999999999996, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.56655721272747606, -0.69999999999999996, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.80468966552978305, -0.69999999999999996, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0924902943683852, -0.69999999999999996, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.4499247992499797, -0.69999999999999996, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.8953714382113815, -0.69999999999999996, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.4323229949248670, -0.69999999999999996, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler027 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.59999999999999998. +-template +-void test027() ++// Test data for k=-0.69999999999999996, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.8475278552871384e-16 ++// mean(f - f_Boost): 9.9920072216264091e-17 ++// variance(f - f_Boost): 1.2325951644078310e-33 ++// stddev(f - f_Boost): 3.5108334685767011e-17 ++const testcase_ellint_3 ++data028[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data027) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data027[i].k), Tp(data027[i].nu), +- Tp(data027[i].phi)); +- const Tp f0 = data027[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.69999999999999996. +-testcase_ellint_3 data028[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17374434963995028, -0.69999999999999996, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34315091562900674, -0.69999999999999996, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50554262375653358, -0.69999999999999996, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.66050025406305812, -0.69999999999999996, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.80938620118847404, -0.69999999999999996, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.95443223855852144, -0.69999999999999996, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0978573207128302, -0.69999999999999996, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.2411754575007123, -0.69999999999999996, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17622185963747933, -0.69999999999999996, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36292539360435261, -0.69999999999999996, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.57240892970150015, -0.69999999999999996, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.82093084713182629, -0.69999999999999996, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1312609022179871, -0.69999999999999996, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.5345768067715795, -0.69999999999999996, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.0668847445934420, -0.69999999999999996, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.7483444537551240, -0.69999999999999996, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.5408408771788560, -0.69999999999999996, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler028 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.69999999999999996. +-template +-void test028() ++// Test data for k=-0.69999999999999996, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.8664526853112274e-16 ++// mean(f - f_Boost): 1.6930901125533636e-16 ++// variance(f - f_Boost): 3.5389557150937801e-33 ++// stddev(f - f_Boost): 5.9489122661994095e-17 ++const testcase_ellint_3 ++data029[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data028) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data028[i].k), Tp(data028[i].nu), +- Tp(data028[i].phi)); +- const Tp f0 = data028[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.80000000000000004. +-testcase_ellint_3 data029[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17357211837335737, -0.69999999999999996, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34187941416012108, -0.69999999999999996, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50173239465478270, -0.69999999999999996, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.65266550725988315, -0.69999999999999996, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.79624879865249298, -0.69999999999999996, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.93497577043296920, -0.69999999999999996, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0713041566930748, -0.69999999999999996, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.2069772023255652, -0.69999999999999996, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.3427110650397533, -0.69999999999999996, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17640372461994805, -0.69999999999999996, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36449916621651091, -0.69999999999999996, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57848021800372573, -0.69999999999999996, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.83837480968392586, -0.69999999999999996, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1751669030061143, -0.69999999999999996, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.6381851899173601, -0.69999999999999996, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.3002065924302197, -0.69999999999999996, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.2337600665337862, -0.69999999999999996, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler029 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.80000000000000004. +-template +-void test029() ++// Test data for k=-0.69999999999999996, nu=0.90000000000000002. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16 ++// mean(f - f_Boost): 6.7723604502134545e-16 ++// variance(f - f_Boost): 4.8757508225668289e-31 ++// stddev(f - f_Boost): 6.9826576763914390e-16 ++const testcase_ellint_3 ++data030[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data029) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data029[i].k), Tp(data029[i].nu), +- Tp(data029[i].phi)); +- const Tp f0 = data029[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.69999999999999996, nu=0.90000000000000002. +-testcase_ellint_3 data030[] = { +- { -0.0000000000000000, -0.69999999999999996, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17340049697003634, -0.69999999999999996, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34062438249741556, -0.69999999999999996, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49801946510076878, -0.69999999999999996, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.64513432604750487, -0.69999999999999996, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.78378145487573758, -0.69999999999999996, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.91671799500854634, -0.69999999999999996, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0466193579463123, -0.69999999999999996, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1754218079199146, -0.69999999999999996, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.3040500499695911, -0.69999999999999996, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.69999999999999996, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17658626600478800, -0.69999999999999996, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36609762156017206, -0.69999999999999996, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58478615187842409, -0.69999999999999996, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.85718862878291846, -0.69999999999999996, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.2255385617397643, -0.69999999999999996, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.7696521899992939, -0.69999999999999996, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.6476314987883502, -0.69999999999999996, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 4.1373434902898083, -0.69999999999999996, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 6.3796094177887746, -0.69999999999999996, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler030 = 2.5000000000000020e-13; + +-// Test function for k=-0.69999999999999996, nu=0.90000000000000002. +-template +-void test030() ++// Test data for k=-0.59999999999999998, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16 ++// mean(f - f_Boost): 5.2735593669694933e-17 ++// variance(f - f_Boost): 3.4333862218458872e-34 ++// stddev(f - f_Boost): 1.8529398861932589e-17 ++const testcase_ellint_3 ++data031[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data030) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data030[i].k), Tp(data030[i].nu), +- Tp(data030[i].phi)); +- const Tp f0 = data030[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.0000000000000000. +-testcase_ellint_3 data031[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17485154362988362, -0.59999999999999998, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35160509865544326, -0.59999999999999998, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53210652578446160, -0.59999999999999998, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.71805304664485670, -0.59999999999999998, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.91082759030195970, -0.59999999999999998, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1112333229323361, -0.59999999999999998, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.3191461190365270, -0.59999999999999998, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.5332022105084773, -0.59999999999999998, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17485154362988359, -0.59999999999999998, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35160509865544320, -0.59999999999999998, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53210652578446138, -0.59999999999999998, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.71805304664485659, -0.59999999999999998, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.91082759030195981, -0.59999999999999998, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1112333229323361, -0.59999999999999998, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.3191461190365270, -0.59999999999999998, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.5332022105084779, -0.59999999999999998, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.7507538029157523, -0.59999999999999998, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler031 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.0000000000000000. +-template +-void test031() ++// Test data for k=-0.59999999999999998, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 2.2835347143080263e-33 ++// stddev(f - f_Boost): 4.7786344433405099e-17 ++const testcase_ellint_3 ++data032[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data031) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data031[i].k), Tp(data031[i].nu), +- Tp(data031[i].phi)); +- const Tp f0 = data031[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.10000000000000001. +-testcase_ellint_3 data032[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17467514275022014, -0.59999999999999998, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35021333086258255, -0.59999999999999998, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52751664092962713, -0.59999999999999998, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.70752126971957885, -0.59999999999999998, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.89111058756112871, -0.59999999999999998, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0789241202877768, -0.59999999999999998, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2710800210399946, -0.59999999999999998, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.4669060574440276, -0.59999999999999998, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17502858548476194, -0.59999999999999998, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35301673150537388, -0.59999999999999998, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53683932476326812, -0.59999999999999998, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.72914228589586771, -0.59999999999999998, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.93208036718354692, -0.59999999999999998, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1468984688863377, -0.59999999999999998, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3733904977062528, -0.59999999999999998, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.6094225663372157, -0.59999999999999998, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler032 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.10000000000000001. +-template +-void test032() ++// Test data for k=-0.59999999999999998, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0940560416437693e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 ++const testcase_ellint_3 ++data033[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data032) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data032[i].k), Tp(data032[i].nu), +- Tp(data032[i].phi)); +- const Tp f0 = data032[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.20000000000000001. +-testcase_ellint_3 data033[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17449937871800653, -0.59999999999999998, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34884093647346553, -0.59999999999999998, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52306221119844110, -0.59999999999999998, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.69749955678982223, -0.59999999999999998, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.87274610682416853, -0.59999999999999998, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0494620540750792, -0.59999999999999998, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.2280847305507339, -0.59999999999999998, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.4085436279696886, -0.59999999999999998, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17520627248155893, -0.59999999999999998, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35444873935437748, -0.59999999999999998, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54172310557682524, -0.59999999999999998, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.74084300280734672, -0.59999999999999998, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.95509001527006121, -0.59999999999999998, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1865688084431796, -0.59999999999999998, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.4352978868932598, -0.59999999999999998, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6983400371331816, -0.59999999999999998, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.9695980282802215, -0.59999999999999998, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler033 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.20000000000000001. +-template +-void test033() ++// Test data for k=-0.59999999999999998, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16 ++// mean(f - f_Boost): 7.4940054162198071e-17 ++// variance(f - f_Boost): 1.6823592487044846e-32 ++// stddev(f - f_Boost): 1.2970579203352812e-16 ++const testcase_ellint_3 ++data034[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data033) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data033[i].k), Tp(data033[i].nu), +- Tp(data033[i].phi)); +- const Tp f0 = data033[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.29999999999999999. +-testcase_ellint_3 data034[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17432424744393935, -0.59999999999999998, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34748744127146447, -0.59999999999999998, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51873632743924847, -0.59999999999999998, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.68794610396313127, -0.59999999999999998, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.85558070175468726, -0.59999999999999998, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0224416343605653, -0.59999999999999998, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1893144457936788, -0.59999999999999998, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.3566435377982575, -0.59999999999999998, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17538460882640122, -0.59999999999999998, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35590165133735557, -0.59999999999999998, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54676661152254535, -0.59999999999999998, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.75321709418305305, -0.59999999999999998, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.98012637808992920, -0.59999999999999998, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2310891277158875, -0.59999999999999998, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.5069157924585623, -0.59999999999999998, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.8039583598337940, -0.59999999999999998, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler034 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.29999999999999999. +-template +-void test034() ++// Test data for k=-0.59999999999999998, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.7909659715991921e-16 ++// mean(f - f_Boost): -2.7755575615628915e-18 ++// variance(f - f_Boost): 2.4044165394594425e-32 ++// stddev(f - f_Boost): 1.5506181152880429e-16 ++const testcase_ellint_3 ++data035[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data034) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data034[i].k), Tp(data034[i].nu), +- Tp(data034[i].phi)); +- const Tp f0 = data034[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.40000000000000002. +-testcase_ellint_3 data035[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17414974487670720, -0.59999999999999998, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34615238767335027, -0.59999999999999998, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51453257838108579, -0.59999999999999998, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.67882386787534410, -0.59999999999999998, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.83948470233173578, -0.59999999999999998, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.99753496200073977, -0.59999999999999998, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1541101404388487, -0.59999999999999998, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.3100911323398814, -0.59999999999999998, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17556359876533037, -0.59999999999999998, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35737601674244679, -0.59999999999999998, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55197933771320218, -0.59999999999999998, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.76633591620002894, -0.59999999999999998, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0075231136019616, -0.59999999999999998, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2815842073813450, -0.59999999999999998, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5911666941449827, -0.59999999999999998, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.9323227566025762, -0.59999999999999998, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler035 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.40000000000000002. +-template +-void test035() ++// Test data for k=-0.59999999999999998, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6240126899196213e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.0357223256482469e-33 ++// stddev(f - f_Boost): 3.2182640128619758e-17 ++const testcase_ellint_3 ++data036[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data035) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data035[i].k), Tp(data035[i].nu), +- Tp(data035[i].phi)); +- const Tp f0 = data035[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.50000000000000000. +-testcase_ellint_3 data036[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17397586700252810, -0.59999999999999998, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34483533397138516, -0.59999999999999998, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51044500461706499, -0.59999999999999998, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.67009988034712675, -0.59999999999999998, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.82434762375735193, -0.59999999999999998, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.97447346702798998, -0.59999999999999998, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.1219494000522143, -0.59999999999999998, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2680242605954486, -0.59999999999999998, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17574324658480217, -0.59999999999999998, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35887240603169313, -0.59999999999999998, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55737161826345261, -0.59999999999999998, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.78028227313077458, -0.59999999999999998, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0376989776486290, -0.59999999999999998, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3395933991042925, -0.59999999999999998, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6924049626591782, -0.59999999999999998, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.0931011856518920, -0.59999999999999998, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.5239007084492706, -0.59999999999999998, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler036 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.50000000000000000. +-template +-void test036() ++// Test data for k=-0.59999999999999998, nu=0.60000000000000009. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16 ++// mean(f - f_Boost): 1.1934897514720432e-16 ++// variance(f - f_Boost): 1.7585404776158019e-33 ++// stddev(f - f_Boost): 4.1934955319110598e-17 ++const testcase_ellint_3 ++data037[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data036) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data036[i].k), Tp(data036[i].nu), +- Tp(data036[i].phi)); +- const Tp f0 = data036[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.59999999999999998. +-testcase_ellint_3 data037[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17380260984469356, -0.59999999999999998, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34353585361777839, -0.59999999999999998, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50646805774321402, -0.59999999999999998, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.66174468108625517, -0.59999999999999998, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.81007462280278408, -0.59999999999999998, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.95303466945718729, -0.59999999999999998, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0924118588677503, -0.59999999999999998, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.2297640574847937, -0.59999999999999998, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17592355661219386, -0.59999999999999998, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36039141192661606, -0.59999999999999998, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.56295472636903854, -0.59999999999999998, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.79515295130165986, -0.59999999999999998, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0711886441942242, -0.59999999999999998, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.4072952835139891, -0.59999999999999998, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.8174863977376825, -0.59999999999999998, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.3029921578542232, -0.59999999999999998, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler037 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.59999999999999998. +-template +-void test037() ++// Test data for k=-0.59999999999999998, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.2451074234797436e-16 ++// mean(f - f_Boost): 5.2735593669694933e-17 ++// variance(f - f_Boost): 3.4333862218458872e-34 ++// stddev(f - f_Boost): 1.8529398861932589e-17 ++const testcase_ellint_3 ++data038[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data037) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data037[i].k), Tp(data037[i].nu), +- Tp(data037[i].phi)); +- const Tp f0 = data037[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.69999999999999996. +-testcase_ellint_3 data038[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17362996946312009, -0.59999999999999998, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34225353454870588, -0.59999999999999998, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50259656397799546, -0.59999999999999998, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.65373184496628944, -0.59999999999999998, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.79658372884056439, -0.59999999999999998, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.93303240100245421, -0.59999999999999998, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0651547944716557, -0.59999999999999998, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1947676204853441, -0.59999999999999998, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.3232737468822811, -0.59999999999999998, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17610453321631936, -0.59999999999999998, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36193365056369764, -0.59999999999999998, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56874098962268527, -0.59999999999999998, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.81106198671477181, -0.59999999999999998, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1086886419010082, -0.59999999999999998, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4879048567239257, -0.59999999999999998, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.9780310073615923, -0.59999999999999998, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.5941545586772712, -0.59999999999999998, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.3029735898397155, -0.59999999999999998, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler038 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.69999999999999996. +-template +-void test038() ++// Test data for k=-0.59999999999999998, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.3826960061025914e-16 ++// mean(f - f_Boost): 2.7478019859472625e-16 ++// variance(f - f_Boost): 4.6451528105588637e-32 ++// stddev(f - f_Boost): 2.1552616570984749e-16 ++const testcase_ellint_3 ++data039[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data038) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data038[i].k), Tp(data038[i].nu), +- Tp(data038[i].phi)); +- const Tp f0 = data038[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.80000000000000004. +-testcase_ellint_3 data039[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17345794195390687, -0.59999999999999998, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34098797854531027, -0.59999999999999998, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49882569168826230, -0.59999999999999998, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.64603758566475511, -0.59999999999999998, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.78380365594769730, -0.59999999999999998, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.91430946255611190, -0.59999999999999998, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0398955217270607, -0.59999999999999998, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1625948314277676, -0.59999999999999998, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17628618080795252, -0.59999999999999998, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36349976272521012, -0.59999999999999998, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57474392342151914, -0.59999999999999998, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.82814493499158159, -0.59999999999999998, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1511281795998280, -0.59999999999999998, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5864286332503075, -0.59999999999999998, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.1958944866494527, -0.59999999999999998, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.0398358172574604, -0.59999999999999998, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler039 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.80000000000000004. +-template +-void test039() ++// Test data for k=-0.59999999999999998, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.7440178400898422e-16 ++// mean(f - f_Boost): 5.0792703376600914e-16 ++// variance(f - f_Boost): 1.9863137923719990e-31 ++// stddev(f - f_Boost): 4.4568080420543122e-16 ++const testcase_ellint_3 ++data040[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data039) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data039[i].k), Tp(data039[i].nu), +- Tp(data039[i].phi)); +- const Tp f0 = data039[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.59999999999999998, nu=0.90000000000000002. +-testcase_ellint_3 data040[] = { +- { -0.0000000000000000, -0.59999999999999998, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17328652344890033, -0.59999999999999998, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33973880062929018, -0.59999999999999998, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49515092233122765, -0.59999999999999998, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.63864042139737043, -0.59999999999999998, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.77167205646538850, -0.59999999999999998, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.89673202848034383, -0.59999999999999998, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0163984492661304, -0.59999999999999998, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1328845785162431, -0.59999999999999998, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.59999999999999998, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17646850384035848, -0.59999999999999998, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36509041515134105, -0.59999999999999998, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58097838596260631, -0.59999999999999998, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.84656453396163722, -0.59999999999999998, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1997828426963724, -0.59999999999999998, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.7112436789225605, -0.59999999999999998, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.5193168553672312, -0.59999999999999998, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.8656670488606686, -0.59999999999999998, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.8709993116265595, -0.59999999999999998, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler040 = 2.5000000000000020e-13; + +-// Test function for k=-0.59999999999999998, nu=0.90000000000000002. +-template +-void test040() ++// Test data for k=-0.50000000000000000, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.5893058141206173e-32 ++// stddev(f - f_Boost): 1.6091320064309879e-16 ++const testcase_ellint_3 ++data041[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data040) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data040[i].k), Tp(data040[i].nu), +- Tp(data040[i].phi)); +- const Tp f0 = data040[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.0000000000000000. +-testcase_ellint_3 data041[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17475385514035785, -0.50000000000000000, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35081868470101585, -0.50000000000000000, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52942862705190585, -0.50000000000000000, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.71164727562630326, -0.50000000000000000, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.89824523594227768, -0.50000000000000000, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0895506700518851, -0.50000000000000000, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2853005857432933, -0.50000000000000000, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4845545520549484, -0.50000000000000000, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17475385514035785, -0.50000000000000000, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35081868470101579, -0.50000000000000000, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52942862705190574, -0.50000000000000000, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.71164727562630326, -0.50000000000000000, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.89824523594227768, -0.50000000000000000, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0895506700518853, -0.50000000000000000, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2853005857432933, -0.50000000000000000, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4845545520549488, -0.50000000000000000, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler041 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.0000000000000000. +-template +-void test041() ++// Test data for k=-0.50000000000000000, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 ++const testcase_ellint_3 ++data042[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data041) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data041[i].k), Tp(data041[i].nu), +- Tp(data041[i].phi)); +- const Tp f0 = data041[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.10000000000000001. +-testcase_ellint_3 data042[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17457763120814676, -0.50000000000000000, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34943246340849154, -0.50000000000000000, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52487937869610801, -0.50000000000000000, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.70127785096388395, -0.50000000000000000, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.87898815988624479, -0.50000000000000000, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0582764576094172, -0.50000000000000000, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2391936844060207, -0.50000000000000000, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.4214793542995841, -0.50000000000000000, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17493071928248824, -0.50000000000000000, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35222467688034798, -0.50000000000000000, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53411928652008112, -0.50000000000000000, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.72256398117177589, -0.50000000000000000, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.91899583232771009, -0.50000000000000000, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1240549163055360, -0.50000000000000000, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3372938086286021, -0.50000000000000000, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.5570024469132429, -0.50000000000000000, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.7803034946545480, -0.50000000000000000, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler042 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.10000000000000001. +-template +-void test042() ++// Test data for k=-0.50000000000000000, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 5.0311947683004831e-32 ++// stddev(f - f_Boost): 2.2430324938128922e-16 ++const testcase_ellint_3 ++data043[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data042) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data042[i].k), Tp(data042[i].nu), +- Tp(data042[i].phi)); +- const Tp f0 = data042[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.20000000000000001. +-testcase_ellint_3 data043[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17440204336345433, -0.50000000000000000, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34806552388338824, -0.50000000000000000, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52046416757129821, -0.50000000000000000, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.69140924550993876, -0.50000000000000000, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.86104678636125520, -0.50000000000000000, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0297439459053981, -0.50000000000000000, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1979214112912036, -0.50000000000000000, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3659033858648930, -0.50000000000000000, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17510822779582402, -0.50000000000000000, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35365094725531487, -0.50000000000000000, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53895933237328697, -0.50000000000000000, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.73408090840070794, -0.50000000000000000, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.94145442818535396, -0.50000000000000000, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1624120186296487, -0.50000000000000000, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3965823372867114, -0.50000000000000000, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6414308440430099, -0.50000000000000000, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8922947612264018, -0.50000000000000000, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler043 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.20000000000000001. +-template +-void test043() ++// Test data for k=-0.50000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 8.5027191584278157e-32 ++// stddev(f - f_Boost): 2.9159422419567599e-16 ++const testcase_ellint_3 ++data044[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data043) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data043[i].k), Tp(data043[i].nu), +- Tp(data043[i].phi)); +- const Tp f0 = data043[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.29999999999999999. +-testcase_ellint_3 data044[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17422708752228896, -0.50000000000000000, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34671739434855858, -0.50000000000000000, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51617616305641889, -0.50000000000000000, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.68200047612545178, -0.50000000000000000, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.84427217869498372, -0.50000000000000000, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0035637821389782, -0.50000000000000000, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1606800483933113, -0.50000000000000000, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.3164407134643459, -0.50000000000000000, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17528638488102041, -0.50000000000000000, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35509802222332720, -0.50000000000000000, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54395740731866193, -0.50000000000000000, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.74625871438752667, -0.50000000000000000, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.96588271186092023, -0.50000000000000000, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2054319584357329, -0.50000000000000000, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4651077994832871, -0.50000000000000000, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.7416018368052644, -0.50000000000000000, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler044 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.29999999999999999. +-template +-void test044() ++// Test data for k=-0.50000000000000000, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 9.0809736800018602e-32 ++// stddev(f - f_Boost): 3.0134653938616686e-16 ++const testcase_ellint_3 ++data045[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data044) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data044[i].k), Tp(data044[i].nu), +- Tp(data044[i].phi)); +- const Tp f0 = data044[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.40000000000000002. +-testcase_ellint_3 data045[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17405275963859917, -0.50000000000000000, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34538761957029329, -0.50000000000000000, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51200902646603919, -0.50000000000000000, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.67301522212868792, -0.50000000000000000, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.82853844466313320, -0.50000000000000000, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.97942097862681488, -0.50000000000000000, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1268429801220616, -0.50000000000000000, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2720406704533922, -0.50000000000000000, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17546519477859268, -0.50000000000000000, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35656644822531680, -0.50000000000000000, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54912289677411319, -0.50000000000000000, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.75916731611690047, -0.50000000000000000, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.99260415631328214, -0.50000000000000000, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2541925856918670, -0.50000000000000000, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5456393705347609, -0.50000000000000000, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.8631904972952076, -0.50000000000000000, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler045 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.40000000000000002. +-template +-void test045() ++// Test data for k=-0.50000000000000000, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 ++const testcase_ellint_3 ++data046[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data045) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data045[i].k), Tp(data045[i].nu), +- Tp(data045[i].phi)); +- const Tp f0 = data045[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.50000000000000000. +-testcase_ellint_3 data046[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17387905570381157, -0.50000000000000000, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34407576010465207, -0.50000000000000000, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50795686560160835, -0.50000000000000000, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.66442115453330175, -0.50000000000000000, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.81373829119355345, -0.50000000000000000, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.95705743313235825, -0.50000000000000000, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0959131991362556, -0.50000000000000000, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2318900529754597, -0.50000000000000000, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17564466176941509, -0.50000000000000000, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35805679276065394, -0.50000000000000000, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55446601496200032, -0.50000000000000000, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.77288783578259013, -0.50000000000000000, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0220246013918972, -0.50000000000000000, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3101681612463965, -0.50000000000000000, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6422994881851025, -0.50000000000000000, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.0152636030998816, -0.50000000000000000, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler046 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.50000000000000000. +-template +-void test046() ++// Test data for k=-0.50000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16 ++// mean(f - f_Boost): 1.3322676295501878e-16 ++// variance(f - f_Boost): 1.7749370367472766e-31 ++// stddev(f - f_Boost): 4.2130001622920411e-16 ++const testcase_ellint_3 ++data047[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data046) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data046[i].k), Tp(data046[i].nu), +- Tp(data046[i].phi)); +- const Tp f0 = data046[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.59999999999999998. +-testcase_ellint_3 data047[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17370597174637581, -0.50000000000000000, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34278139158591414, -0.50000000000000000, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50401419439302719, -0.50000000000000000, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.65618938076167221, -0.50000000000000000, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.79977959248855424, -0.50000000000000000, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.93625925190753545, -0.50000000000000000, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0674905658379710, -0.50000000000000000, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1953481298023048, -0.50000000000000000, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17582479017522740, -0.50000000000000000, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35956964546660036, -0.50000000000000000, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55999790372984193, -0.50000000000000000, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.78751507911209895, -0.50000000000000000, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0546620505035220, -0.50000000000000000, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3754438357425935, -0.50000000000000000, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.7615727400820127, -0.50000000000000000, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.2134638067565242, -0.50000000000000000, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler047 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.59999999999999998. +-template +-void test047() ++// Test data for k=-0.50000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 1.9996383743576116e-32 ++// stddev(f - f_Boost): 1.4140857026211713e-16 ++const testcase_ellint_3 ++data048[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data047) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data047[i].k), Tp(data047[i].nu), +- Tp(data047[i].phi)); +- const Tp f0 = data047[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.69999999999999996. +-testcase_ellint_3 data048[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17353350383131641, -0.50000000000000000, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34150410405436771, -0.50000000000000000, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50017589696443487, -0.50000000000000000, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64829398188419962, -0.50000000000000000, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.78658270782402073, -0.50000000000000000, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.91684738336675053, -0.50000000000000000, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0412486789555937, -0.50000000000000000, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1619021847612001, -0.50000000000000000, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17600558435914915, -0.50000000000000000, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36110561926726259, -0.50000000000000000, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56573074641137111, -0.50000000000000000, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.80316073084237205, -0.50000000000000000, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0911910688131461, -0.50000000000000000, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4530946406380640, -0.50000000000000000, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.9144386536785372, -0.50000000000000000, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.4878788958234970, -0.50000000000000000, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.1433945297859225, -0.50000000000000000, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler048 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.69999999999999996. +-template +-void test048() ++// Test data for k=-0.50000000000000000, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 ++const testcase_ellint_3 ++data049[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data048) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data048[i].k), Tp(data048[i].nu), +- Tp(data048[i].phi)); +- const Tp f0 = data048[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.80000000000000004. +-testcase_ellint_3 data049[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17336164805979126, -0.50000000000000000, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34024350132086773, -0.50000000000000000, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49643719555734084, -0.50000000000000000, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.64071162456976150, -0.50000000000000000, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.77407836177211908, -0.50000000000000000, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.89867058251905652, -0.50000000000000000, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0169181822134912, -0.50000000000000000, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1311363312779448, -0.50000000000000000, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17618704872620228, -0.50000000000000000, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36266535159745827, -0.50000000000000000, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57167789954529158, -0.50000000000000000, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.81995752984315018, -0.50000000000000000, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1325112162158122, -0.50000000000000000, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5479055930718042, -0.50000000000000000, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.1215243941010486, -0.50000000000000000, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.9069405767650132, -0.50000000000000000, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.8750701888108066, -0.50000000000000000, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler049 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.80000000000000004. +-template +-void test049() ++// Test data for k=-0.50000000000000000, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16 ++// mean(f - f_Boost): 3.5249581031848718e-16 ++// variance(f - f_Boost): 2.5029385557256515e-31 ++// stddev(f - f_Boost): 5.0029376927217987e-16 ++const testcase_ellint_3 ++data050[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data049) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data049[i].k), Tp(data049[i].nu), +- Tp(data049[i].phi)); +- const Tp f0 = data049[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.50000000000000000, nu=0.90000000000000002. +-testcase_ellint_3 data050[] = { +- { -0.0000000000000000, -0.50000000000000000, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17319040056865681, -0.50000000000000000, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33899920036578557, -0.50000000000000000, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49279362182695186, -0.50000000000000000, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.63342123379746151, -0.50000000000000000, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.76220595179550321, -0.50000000000000000, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.88160004743532294, -0.50000000000000000, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.99427448642310134, -0.50000000000000000, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1027091512470093, -0.50000000000000000, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.50000000000000000, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17636918772384180, -0.50000000000000000, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36424950570740700, -0.50000000000000000, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57785404590231426, -0.50000000000000000, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.83806480521716531, -0.50000000000000000, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1798568683069752, -0.50000000000000000, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6678766243739607, -0.50000000000000000, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.4282976450693483, -0.50000000000000000, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.6810787666126656, -0.50000000000000000, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.5355132096026454, -0.50000000000000000, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler050 = 2.5000000000000020e-13; + +-// Test function for k=-0.50000000000000000, nu=0.90000000000000002. +-template +-void test050() ++// Test data for k=-0.39999999999999991, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.1423314994346225e-16 ++// mean(f - f_Boost): 1.9428902930940238e-17 ++// variance(f - f_Boost): 2.2263750157116445e-32 ++// stddev(f - f_Boost): 1.4921042241450980e-16 ++const testcase_ellint_3 ++data051[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data050) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data050[i].k), Tp(data050[i].nu), +- Tp(data050[i].phi)); +- const Tp f0 = data050[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.0000000000000000. +-testcase_ellint_3 data051[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17467414669441531, -0.40000000000000002, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35018222772483443, -0.40000000000000002, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52729015917508748, -0.40000000000000002, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70662374407341255, -0.40000000000000002, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.88859210497602170, -0.40000000000000002, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0733136290471379, -0.40000000000000002, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2605612170157061, -0.40000000000000002, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4497513956433437, -0.40000000000000002, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17467414669441528, -0.39999999999999991, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35018222772483443, -0.39999999999999991, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52729015917508748, -0.39999999999999991, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70662374407341244, -0.39999999999999991, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.88859210497602159, -0.39999999999999991, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0733136290471381, -0.39999999999999991, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2605612170157066, -0.39999999999999991, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4497513956433439, -0.39999999999999991, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler051 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.0000000000000000. +-template +-void test051() ++// Test data for k=-0.39999999999999991, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.8489340395463703e-16 ++// mean(f - f_Boost): 6.3837823915946496e-17 ++// variance(f - f_Boost): 4.4785242050000272e-32 ++// stddev(f - f_Boost): 2.1162523963365114e-16 ++const testcase_ellint_3 ++data052[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data051) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data051[i].k), Tp(data051[i].nu), +- Tp(data051[i].phi)); +- const Tp f0 = data051[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.10000000000000001. +-testcase_ellint_3 data052[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17449806706684673, -0.40000000000000002, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34880048623856075, -0.40000000000000002, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52277322065757403, -0.40000000000000002, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69638072056918376, -0.40000000000000002, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.86968426619831540, -0.40000000000000002, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0428044206578095, -0.40000000000000002, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2158651158274378, -0.40000000000000002, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3889447129893322, -0.40000000000000002, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17485086590796767, -0.39999999999999991, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35158366412506992, -0.39999999999999991, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53194731675711726, -0.39999999999999991, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71740615528010931, -0.39999999999999991, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.90896157773487030, -0.39999999999999991, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1069605483834348, -0.39999999999999991, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3109353428823001, -0.39999999999999991, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.5195460789903448, -0.39999999999999991, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.7306968836847187, -0.39999999999999991, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler052 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.10000000000000001. +-template +-void test052() ++// Test data for k=-0.39999999999999991, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.0467985583872730e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 1.5826864298542218e-32 ++// stddev(f - f_Boost): 1.2580486595733180e-16 ++const testcase_ellint_3 ++data053[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data052) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data052[i].k), Tp(data052[i].nu), +- Tp(data052[i].phi)); +- const Tp f0 = data052[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.20000000000000001. +-testcase_ellint_3 data053[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17432262290723399, -0.40000000000000002, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34743795258968596, -0.40000000000000002, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51838919472805123, -0.40000000000000002, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68663134739057918, -0.40000000000000002, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.85206432981833979, -0.40000000000000002, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0149595349004430, -0.40000000000000002, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1758349405464676, -0.40000000000000002, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3353337673882635, -0.40000000000000002, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17502822886437389, -0.39999999999999991, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35300530062530805, -0.39999999999999991, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53675259548210896, -0.39999999999999991, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72878006428676934, -0.39999999999999991, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.93100219010583563, -0.39999999999999991, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1443487271187609, -0.39999999999999991, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3683427764108813, -0.39999999999999991, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6008221459300933, -0.39999999999999991, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler053 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.20000000000000001. +-template +-void test053() ++// Test data for k=-0.39999999999999991, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.9973414591826100e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 1.5826864298542218e-32 ++// stddev(f - f_Boost): 1.2580486595733180e-16 ++const testcase_ellint_3 ++data054[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data053) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data053[i].k), Tp(data053[i].nu), +- Tp(data053[i].phi)); +- const Tp f0 = data053[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.29999999999999999. +-testcase_ellint_3 data054[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17414781013591543, -0.40000000000000002, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34609415696777285, -0.40000000000000002, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51413131295862546, -0.40000000000000002, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67733527622935630, -0.40000000000000002, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.83558675182733266, -0.40000000000000002, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.98940140808865906, -0.40000000000000002, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1396968797728058, -0.40000000000000002, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2875920037865087, -0.40000000000000002, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17520623975982899, -0.39999999999999991, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35444766141612105, -0.39999999999999991, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54171455841536009, -0.39999999999999991, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.74080517001084012, -0.39999999999999991, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.95496950509296563, -0.39999999999999991, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1862627879844718, -0.39999999999999991, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4346501803799458, -0.39999999999999991, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6971744798077697, -0.39999999999999991, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler054 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.29999999999999999. +-template +-void test054() ++// Test data for k=-0.39999999999999991, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2577246923979600e-16 ++// mean(f - f_Boost): 1.8596235662471373e-16 ++// variance(f - f_Boost): 1.6222417021441306e-31 ++// stddev(f - f_Boost): 4.0277061736727151e-16 ++const testcase_ellint_3 ++data055[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data054) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data054[i].k), Tp(data054[i].nu), +- Tp(data054[i].phi)); +- const Tp f0 = data054[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.40000000000000002. +-testcase_ellint_3 data055[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17397362471112710, -0.40000000000000002, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34476864603333196, -0.40000000000000002, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50999329415379357, -0.40000000000000002, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66845674551396017, -0.40000000000000002, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.82012848346231748, -0.40000000000000002, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.96582449258349057, -0.40000000000000002, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1068473749476286, -0.40000000000000002, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2447132729159986, -0.40000000000000002, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17538490283034375, -0.39999999999999991, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35591129064319948, -0.39999999999999991, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54684250413264535, -0.39999999999999991, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.75355027742668290, -0.39999999999999991, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.98117935026780634, -0.39999999999999991, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2337464222030734, -0.39999999999999991, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5125183419289221, -0.39999999999999991, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.8140224451130311, -0.39999999999999991, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler055 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.40000000000000002. +-template +-void test055() ++// Test data for k=-0.39999999999999991, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.8009196014748294e-16 ++// mean(f - f_Boost): 1.6375789613221060e-16 ++// variance(f - f_Boost): 6.4788283329186610e-32 ++// stddev(f - f_Boost): 2.5453542647181080e-16 ++const testcase_ellint_3 ++data056[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data055) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data055[i].k), Tp(data055[i].nu), +- Tp(data055[i].phi)); +- const Tp f0 = data055[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.50000000000000000. +-testcase_ellint_3 data056[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17380006262854139, -0.40000000000000002, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34346098216756610, -0.40000000000000002, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50596929935059420, -0.40000000000000002, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65996392089131262, -0.40000000000000002, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.80558463511364786, -0.40000000000000002, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.94397834522857704, -0.40000000000000002, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0768075114108115, -0.40000000000000002, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2059184624251329, -0.40000000000000002, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17556422235224273, -0.39999999999999991, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35739675341763921, -0.39999999999999991, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55214655195037188, -0.39999999999999991, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.76709520942047438, -0.39999999999999991, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0100278761577499, -0.39999999999999991, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2882265661384342, -0.39999999999999991, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6059059780051874, -0.39999999999999991, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.9600182740224081, -0.39999999999999991, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.3367461373176508, -0.39999999999999991, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler056 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.50000000000000000. +-template +-void test056() ++// Test data for k=-0.39999999999999991, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.8411408870840790e-16 ++// mean(f - f_Boost): 9.7144514654701197e-17 ++// variance(f - f_Boost): 1.4860570558543486e-32 ++// stddev(f - f_Boost): 1.2190393988113545e-16 ++const testcase_ellint_3 ++data057[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data056) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data056[i].k), Tp(data056[i].nu), +- Tp(data056[i].phi)); +- const Tp f0 = data056[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.59999999999999998. +-testcase_ellint_3 data057[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17362711992081248, -0.40000000000000002, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34217074276403953, -0.40000000000000002, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50205389185761617, -0.40000000000000002, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.65182834920372745, -0.40000000000000002, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.79186512820565136, -0.40000000000000002, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.92365535916287134, -0.40000000000000002, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0491915663957907, -0.40000000000000002, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1705934291745104, -0.40000000000000002, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17574420264267029, -0.39999999999999991, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35890463689046265, -0.39999999999999991, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55763773975194486, -0.39999999999999991, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.78153324227761267, -0.39999999999999991, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0420205885765887, -0.39999999999999991, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3517205230381770, -0.39999999999999991, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.7210360970313896, -0.39999999999999991, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.1500780510169242, -0.39999999999999991, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler057 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.59999999999999998. +-template +-void test057() ++// Test data for k=-0.39999999999999991, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.1553900340611668e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.3242789405258207e-32 ++// stddev(f - f_Boost): 1.1507731924779187e-16 ++const testcase_ellint_3 ++data058[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data057) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data057[i].k), Tp(data057[i].nu), +- Tp(data057[i].phi)); +- const Tp f0 = data057[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.69999999999999996. +-testcase_ellint_3 data058[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17345479265712871, -0.40000000000000002, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34089751955950354, -0.40000000000000002, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49824200167361343, -0.40000000000000002, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64402450341199413, -0.40000000000000002, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.77889207804122873, -0.40000000000000002, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.90468169720957992, -0.40000000000000002, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0236847823692916, -0.40000000000000002, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1382465247425164, -0.40000000000000002, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17592484806010436, -0.39999999999999991, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36043555139631439, -0.39999999999999991, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56332813669944881, -0.39999999999999991, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.79697424562157548, -0.39999999999999991, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0778155987523672, -0.39999999999999991, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4272018169896268, -0.39999999999999991, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8684377907453380, -0.39999999999999991, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.4128677409207469, -0.39999999999999991, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.0327078743873241, -0.39999999999999991, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler058 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.69999999999999996. +-template +-void test058() ++// Test data for k=-0.39999999999999991, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5727642219519274e-16 ++// mean(f - f_Boost): 2.1926904736346843e-16 ++// variance(f - f_Boost): 1.5293405480859847e-31 ++// stddev(f - f_Boost): 3.9106783913868252e-16 ++const testcase_ellint_3 ++data059[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data058) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data058[i].k), Tp(data058[i].nu), +- Tp(data058[i].phi)); +- const Tp f0 = data058[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.80000000000000004. +-testcase_ellint_3 data059[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17328307694277156, -0.40000000000000002, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33964091800132007, -0.40000000000000002, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49452889372467451, -0.40000000000000002, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63652940095937327, -0.40000000000000002, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.76659772511159097, -0.40000000000000002, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.88691047977338111, -0.40000000000000002, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0000273200611638, -0.40000000000000002, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1084787902188007, -0.40000000000000002, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17610616300487833, -0.39999999999999991, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36199013167171978, -0.39999999999999991, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56923097361842423, -0.39999999999999991, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.81354878456624347, -0.39999999999999991, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1182902719261825, -0.39999999999999991, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5192950589409022, -0.39999999999999991, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0678761710223981, -0.39999999999999991, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.8135222249879783, -0.39999999999999991, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler059 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.80000000000000004. +-template +-void test059() ++// Test data for k=-0.39999999999999991, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.0221626338023938e-16 ++// mean(f - f_Boost): 4.1910919179599658e-16 ++// variance(f - f_Boost): 6.2246150910247033e-31 ++// stddev(f - f_Boost): 7.8896229891070860e-16 ++const testcase_ellint_3 ++data060[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data059) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data059[i].k), Tp(data059[i].nu), +- Tp(data059[i].phi)); +- const Tp f0 = data059[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.40000000000000002, nu=0.90000000000000002. +-testcase_ellint_3 data060[] = { +- { -0.0000000000000000, -0.40000000000000002, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17311196891868130, -0.40000000000000002, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33840055664911906, -0.40000000000000002, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49091013944075340, -0.40000000000000002, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62932228186809591, -0.40000000000000002, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.75492278323019801, -0.40000000000000002, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.87021659043854294, -0.40000000000000002, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.97800245228239246, -0.40000000000000002, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0809625773173694, -0.40000000000000002, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.39999999999999991, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17628815191971123, -0.39999999999999991, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36356903815378772, -0.39999999999999991, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57536079447000310, -0.39999999999999991, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.83141355850172571, -0.39999999999999991, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1646481598721361, -0.39999999999999991, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6357275034001995, -0.39999999999999991, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.3628787566572398, -0.39999999999999991, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.5521010369134958, -0.39999999999999991, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler060 = 2.5000000000000020e-13; + +-// Test function for k=-0.40000000000000002, nu=0.90000000000000002. +-template +-void test060() ++// Test data for k=-0.29999999999999993, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16 ++// mean(f - f_Boost): 4.9960036108132046e-17 ++// variance(f - f_Boost): 4.6872855002064458e-32 ++// stddev(f - f_Boost): 2.1650139722889657e-16 ++const testcase_ellint_3 ++data061[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data060) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data060[i].k), Tp(data060[i].nu), +- Tp(data060[i].phi)); +- const Tp f0 = data060[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.0000000000000000. +-testcase_ellint_3 data061[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17461228653000102, -0.30000000000000004, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34969146102798415, -0.30000000000000004, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52565822873726320, -0.30000000000000004, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70284226512408532, -0.30000000000000004, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.88144139195111182, -0.30000000000000004, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0614897067260523, -0.30000000000000004, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2428416824174218, -0.30000000000000004, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4251795877015925, -0.30000000000000004, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6080486199305126, -0.30000000000000004, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17461228653000099, -0.29999999999999993, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34969146102798421, -0.29999999999999993, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52565822873726309, -0.29999999999999993, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70284226512408543, -0.29999999999999993, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.88144139195111171, -0.29999999999999993, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0614897067260520, -0.29999999999999993, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2428416824174220, -0.29999999999999993, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4251795877015929, -0.29999999999999993, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6080486199305126, -0.29999999999999993, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler061 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.0000000000000000. +-template +-void test061() ++// Test data for k=-0.29999999999999993, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 4.0359883022230488e-32 ++// stddev(f - f_Boost): 2.0089769292411121e-16 ++const testcase_ellint_3 ++data062[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data061) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data061[i].k), Tp(data061[i].nu), +- Tp(data061[i].phi)); +- const Tp f0 = data061[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.10000000000000001. +-testcase_ellint_3 data062[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17443631884814378, -0.30000000000000004, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34831316835124926, -0.30000000000000004, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52116586276523857, -0.30000000000000004, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69269385837910036, -0.30000000000000004, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.86279023163070856, -0.30000000000000004, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0315321461438265, -0.30000000000000004, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1991449111869024, -0.30000000000000004, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3659561780923211, -0.30000000000000004, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5323534693557526, -0.30000000000000004, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17478889331392972, -0.29999999999999993, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35108939018329183, -0.29999999999999993, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53028990896115835, -0.29999999999999993, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71352417052371409, -0.29999999999999993, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.90153086032405894, -0.29999999999999993, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0945187977283313, -0.29999999999999993, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2920699268385680, -0.29999999999999993, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4931243665896394, -0.29999999999999993, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler062 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.10000000000000001. +-template +-void test062() ++// Test data for k=-0.29999999999999993, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16 ++// mean(f - f_Boost): 1.1102230246251565e-16 ++// variance(f - f_Boost): 3.8043060629871325e-32 ++// stddev(f - f_Boost): 1.9504630380981672e-16 ++const testcase_ellint_3 ++data063[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data062) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data062[i].k), Tp(data062[i].nu), +- Tp(data062[i].phi)); +- const Tp f0 = data062[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.20000000000000001. +-testcase_ellint_3 data063[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17426098615372090, -0.30000000000000004, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34695402664689923, -0.30000000000000004, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51680555567038933, -0.30000000000000004, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68303375225260210, -0.30000000000000004, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.84540662891295026, -0.30000000000000004, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0041834051646927, -0.30000000000000004, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1599952702345711, -0.30000000000000004, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3137179520499163, -0.30000000000000004, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4663658145259875, -0.30000000000000004, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17496614335337535, -0.29999999999999993, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35250745937139372, -0.29999999999999993, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53506875002836884, -0.29999999999999993, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72479106622248191, -0.29999999999999993, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.92326451535891607, -0.29999999999999993, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1312092060698349, -0.29999999999999993, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3481473154592321, -0.29999999999999993, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5722049569662748, -0.29999999999999993, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8002173372290498, -0.29999999999999993, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler063 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.20000000000000001. +-template +-void test063() ++// Test data for k=-0.29999999999999993, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 ++const testcase_ellint_3 ++data064[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data063) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data063[i].k), Tp(data063[i].nu), +- Tp(data063[i].phi)); +- const Tp f0 = data063[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.29999999999999999. +-testcase_ellint_3 data064[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17408628437042845, -0.30000000000000004, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34561356761638401, -0.30000000000000004, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51257058617875850, -0.30000000000000004, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67382207124602866, -0.30000000000000004, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82914751587825131, -0.30000000000000004, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.97907434814374950, -0.30000000000000004, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1246399297351584, -0.30000000000000004, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2671793970398146, -0.30000000000000004, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4081767433479089, -0.30000000000000004, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17514404084107435, -0.29999999999999993, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35394619108645647, -0.29999999999999993, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54000325463372689, -0.29999999999999993, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73670193794067651, -0.29999999999999993, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.94689345491722177, -0.29999999999999993, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1723274608389140, -0.29999999999999993, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4128880552936287, -0.29999999999999993, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6659010047449661, -0.29999999999999993, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler064 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.29999999999999999. +-template +-void test064() ++// Test data for k=-0.29999999999999993, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.8245832308692586e-31 ++// stddev(f - f_Boost): 4.2715140534349863e-16 ++const testcase_ellint_3 ++data065[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data064) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data064[i].k), Tp(data064[i].nu), +- Tp(data064[i].phi)); +- const Tp f0 = data064[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.40000000000000002. +-testcase_ellint_3 data065[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17391220945982730, -0.30000000000000004, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34429133937639689, -0.30000000000000004, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50845471668581632, -0.30000000000000004, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66502347027873854, -0.30000000000000004, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.81389191978012254, -0.30000000000000004, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.95590618002140593, -0.30000000000000004, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0924915195213121, -0.30000000000000004, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2253651604038058, -0.30000000000000004, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3563643538969761, -0.30000000000000004, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17532259000954434, -0.29999999999999993, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35540612770983693, -0.29999999999999993, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54510265552938919, -0.29999999999999993, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74932476310965057, -0.29999999999999993, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.97272793583093109, -0.29999999999999993, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2188928987074241, -0.29999999999999993, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4888771674085941, -0.29999999999999993, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7794558498219191, -0.29999999999999993, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0822121773175528, -0.29999999999999993, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler065 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.40000000000000002. +-template +-void test065() ++// Test data for k=-0.29999999999999993, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16 ++// mean(f - f_Boost): 4.7184478546569152e-17 ++// variance(f - f_Boost): 1.9448563670505968e-32 ++// stddev(f - f_Boost): 1.3945810722401896e-16 ++const testcase_ellint_3 ++data066[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data065) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data065[i].k), Tp(data065[i].nu), +- Tp(data065[i].phi)); +- const Tp f0 = data065[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.50000000000000000. +-testcase_ellint_3 data066[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17373875742088235, -0.30000000000000004, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34298690571124157, -0.30000000000000004, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50445214859646936, -0.30000000000000004, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65660648352418516, -0.30000000000000004, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79953670639287289, -0.30000000000000004, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.93443393926588558, -0.30000000000000004, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0630838369016911, -0.30000000000000004, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1875197325653026, -0.30000000000000004, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3098448759814960, -0.30000000000000004, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17550179513158179, -0.29999999999999993, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35688783251681200, -0.29999999999999993, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55037700010142798, -0.29999999999999993, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.76273839789895992, -0.29999999999999993, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0011570518830419, -0.29999999999999993, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2722987414055109, -0.29999999999999993, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5799590511080066, -0.29999999999999993, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.9212367220124293, -0.29999999999999993, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler066 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.50000000000000000. +-template +-void test066() ++// Test data for k=-0.29999999999999993, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16 ++// mean(f - f_Boost): 1.9428902930940239e-16 ++// variance(f - f_Boost): 1.5987596229703424e-31 ++// stddev(f - f_Boost): 3.9984492281012430e-16 ++const testcase_ellint_3 ++data067[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data066) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data066[i].k), Tp(data066[i].nu), +- Tp(data066[i].phi)); +- const Tp f0 = data066[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.59999999999999998. +-testcase_ellint_3 data067[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17356592428950826, -0.30000000000000004, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34169984536697379, -0.30000000000000004, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50055748266498457, -0.30000000000000004, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64854298527106768, -0.30000000000000004, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.78599329284207431, -0.30000000000000004, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.91445452089128221, -0.30000000000000004, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0360412952290587, -0.30000000000000004, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1530473919778639, -0.30000000000000004, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2677758800420666, -0.30000000000000004, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17568166052076745, -0.29999999999999993, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35839189074731181, -0.29999999999999993, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55583724744367558, -0.29999999999999993, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77703498090888223, -0.29999999999999993, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0326772113675962, -0.29999999999999993, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3345139983717369, -0.29999999999999993, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6921742922838403, -0.29999999999999993, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.1056608968472186, -0.29999999999999993, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.5560975528589061, -0.29999999999999993, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler067 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.59999999999999998. +-template +-void test067() ++// Test data for k=-0.29999999999999993, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16 ++// mean(f - f_Boost): 1.6653345369377348e-16 ++// variance(f - f_Boost): 3.1994213989721786e-31 ++// stddev(f - f_Boost): 5.6563428104846852e-16 ++const testcase_ellint_3 ++data068[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data067) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data067[i].k), Tp(data067[i].nu), +- Tp(data067[i].phi)); +- const Tp f0 = data067[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.69999999999999996. +-testcase_ellint_3 data068[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17339370613812227, -0.30000000000000004, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34042975138455933, -0.30000000000000004, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49676568368075985, -0.30000000000000004, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64080774055753720, -0.30000000000000004, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.77318507779667278, -0.30000000000000004, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.89579782346548631, -0.30000000000000004, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0110573286052202, -0.30000000000000004, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1214710972949633, -0.30000000000000004, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2294913236274980, -0.30000000000000004, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17586219053197988, -0.29999999999999993, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35991891074557669, -0.29999999999999993, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56149538019961731, -0.29999999999999993, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.79232303189667685, -0.29999999999999993, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0679345542878826, -0.29999999999999993, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4084400085913955, -0.29999999999999993, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8357382859296454, -0.29999999999999993, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3604197996171519, -0.29999999999999993, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.9562123549913872, -0.29999999999999993, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler068 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.69999999999999996. +-template +-void test068() ++// Test data for k=-0.29999999999999993, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16 ++// mean(f - f_Boost): 3.4416913763379854e-16 ++// variance(f - f_Boost): 4.3461914185990199e-31 ++// stddev(f - f_Boost): 6.5925650687718054e-16 ++const testcase_ellint_3 ++data069[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data068) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data068[i].k), Tp(data068[i].nu), +- Tp(data068[i].phi)); +- const Tp f0 = data068[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.80000000000000004. +-testcase_ellint_3 data069[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17322209907520361, -0.30000000000000004, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33917623046949996, -0.30000000000000004, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49307204894329176, -0.30000000000000004, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63337802830291723, -0.30000000000000004, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.76104540997689407, -0.30000000000000004, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.87832009635450736, -0.30000000000000004, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.98787879723171790, -0.30000000000000004, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0924036340069336, -0.30000000000000004, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1944567571590046, -0.30000000000000004, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17604338956191670, -0.29999999999999993, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36146952517410791, -0.29999999999999993, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56736453393774644, -0.29999999999999993, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80873149979001091, -0.29999999999999993, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1077903069860620, -0.29999999999999993, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4985874311132998, -0.29999999999999993, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0298167266724954, -0.29999999999999993, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.7483929054985432, -0.29999999999999993, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler069 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.80000000000000004. +-template +-void test069() ++// Test data for k=-0.29999999999999993, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16 ++// mean(f - f_Boost): 4.1633363423443370e-16 ++// variance(f - f_Boost): 2.2835347143080263e-31 ++// stddev(f - f_Boost): 4.7786344433405093e-16 ++const testcase_ellint_3 ++data070[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data069) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data069[i].k), Tp(data069[i].nu), +- Tp(data069[i].phi)); +- const Tp f0 = data069[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.30000000000000004, nu=0.90000000000000002. +-testcase_ellint_3 data070[] = { +- { -0.0000000000000000, -0.30000000000000004, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17305109924485948, -0.30000000000000004, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33793890239556984, -0.30000000000000004, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48947218005089738, -0.30000000000000004, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62623332340775151, -0.30000000000000004, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74951596581511148, -0.30000000000000004, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.86189886597756005, -0.30000000000000004, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.96629451153092005, -0.30000000000000004, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0655269133492680, -0.30000000000000004, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1622376896064912, -0.30000000000000004, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.29999999999999993, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17622526204962433, -0.29999999999999993, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36304439230777141, -0.29999999999999993, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57345914744719195, -0.29999999999999993, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82641512928845162, -0.29999999999999993, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1534256210757743, -0.29999999999999993, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6124900353411677, -0.29999999999999993, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.3165905514845089, -0.29999999999999993, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.4625619526539824, -0.29999999999999993, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.1479514944016787, -0.29999999999999993, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler070 = 2.5000000000000020e-13; + +-// Test function for k=-0.30000000000000004, nu=0.90000000000000002. +-template +-void test070() ++// Test data for k=-0.19999999999999996, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16 ++// mean(f - f_Boost): -5.2735593669694933e-17 ++// variance(f - f_Boost): 3.0473442641042680e-32 ++// stddev(f - f_Boost): 1.7456644190978597e-16 ++const testcase_ellint_3 ++data071[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data070) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data070[i].k), Tp(data070[i].nu), +- Tp(data070[i].phi)); +- const Tp f0 = data070[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.0000000000000000. +-testcase_ellint_3 data071[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17456817290292811, -0.19999999999999996, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34934315932086801, -0.19999999999999996, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52450880529443988, -0.19999999999999996, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70020491009844910, -0.19999999999999996, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.87651006649967955, -0.19999999999999996, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0534305870298994, -0.19999999999999996, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2308975521670784, -0.19999999999999996, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4087733584990738, -0.19999999999999996, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.5868678474541664, -0.19999999999999996, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17456817290292806, -0.19999999999999996, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34934315932086796, -0.19999999999999996, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52450880529443988, -0.19999999999999996, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70020491009844887, -0.19999999999999996, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.87651006649967977, -0.19999999999999996, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0534305870298994, -0.19999999999999996, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2308975521670789, -0.19999999999999996, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4087733584990738, -0.19999999999999996, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler071 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.0000000000000000. +-template +-void test071() ++// Test data for k=-0.19999999999999996, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16 ++// mean(f - f_Boost): -3.8857805861880476e-17 ++// variance(f - f_Boost): 2.8794792590749608e-32 ++// stddev(f - f_Boost): 1.6969028431454054e-16 ++const testcase_ellint_3 ++data072[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data071) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data071[i].k), Tp(data071[i].nu), +- Tp(data071[i].phi)); +- const Tp f0 = data071[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.10000000000000001. +-testcase_ellint_3 data072[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17439228502691750, -0.19999999999999996, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34796731137565740, -0.19999999999999996, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52003370294544848, -0.19999999999999996, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69012222258631495, -0.19999999999999996, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.85803491465566772, -0.19999999999999996, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0238463961099364, -0.19999999999999996, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1878691059202153, -0.19999999999999996, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3505985031831940, -0.19999999999999996, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5126513474261092, -0.19999999999999996, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17474469953608965, -0.19999999999999996, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35073860234984255, -0.19999999999999996, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.52912258712951521, -0.19999999999999996, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71081701558898069, -0.19999999999999996, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.89640758521169384, -0.19999999999999996, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0860417038089853, -0.19999999999999996, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2793599255528623, -0.19999999999999996, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4754938544089076, -0.19999999999999996, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler072 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.10000000000000001. +-template +-void test072() ++// Test data for k=-0.19999999999999996, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 3.1158217732380362e-32 ++// stddev(f - f_Boost): 1.7651690494788412e-16 ++const testcase_ellint_3 ++data073[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data072) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data072[i].k), Tp(data072[i].nu), +- Tp(data072[i].phi)); +- const Tp f0 = data072[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.20000000000000001. +-testcase_ellint_3 data073[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17421703179583750, -0.19999999999999996, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34661057411998791, -0.19999999999999996, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51569006052647393, -0.19999999999999996, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68052412821107278, -0.19999999999999996, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.84081341263313825, -0.19999999999999996, 0.20000000000000001, +- 0.87266462599716477 }, +- { 0.99683359988842890, -0.19999999999999996, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1493086715118852, -0.19999999999999996, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.2992699693957541, -0.19999999999999996, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4479323932249568, -0.19999999999999996, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17492186907740698, -0.19999999999999996, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35215414286134267, -0.19999999999999996, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53388285615182440, -0.19999999999999996, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72200960282688265, -0.19999999999999996, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.91793087614428526, -0.19999999999999996, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1222602841587976, -0.19999999999999996, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3345489407496247, -0.19999999999999996, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5531225705475502, -0.19999999999999996, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler073 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.20000000000000001. +-template +-void test073() ++// Test data for k=-0.19999999999999996, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16 ++// mean(f - f_Boost): -1.1102230246251566e-17 ++// variance(f - f_Boost): 9.9840208317034302e-32 ++// stddev(f - f_Boost): 3.1597501217190311e-16 ++const testcase_ellint_3 ++data074[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data073) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data073[i].k), Tp(data073[i].nu), +- Tp(data073[i].phi)); +- const Tp f0 = data073[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.29999999999999999. +-testcase_ellint_3 data074[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17404240913577707, -0.19999999999999996, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34527248032587193, -0.19999999999999996, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51147118981668416, -0.19999999999999996, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67137107867777635, -0.19999999999999996, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82470418188668893, -0.19999999999999996, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.97202873223594299, -0.19999999999999996, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1144773569375266, -0.19999999999999996, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2535292433701000, -0.19999999999999996, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.3908453514752481, -0.19999999999999996, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17509968571715159, -0.19999999999999996, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35359030214835629, -0.19999999999999996, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.53879807274537084, -0.19999999999999996, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73384116418059731, -0.19999999999999996, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.94132799329524031, -0.19999999999999996, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1628407021801439, -0.19999999999999996, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.3982440216739438, -0.19999999999999996, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6450634983653640, -0.19999999999999996, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.8983924169967099, -0.19999999999999996, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler074 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.29999999999999999. +-template +-void test074() ++// Test data for k=-0.19999999999999996, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3298410018355870e-16 ++// mean(f - f_Boost): 1.3877787807814457e-17 ++// variance(f - f_Boost): 9.4370567274974557e-32 ++// stddev(f - f_Boost): 3.0719792850046133e-16 ++const testcase_ellint_3 ++data075[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data074) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data074[i].k), Tp(data074[i].nu), +- Tp(data074[i].phi)); +- const Tp f0 = data074[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.40000000000000002. +-testcase_ellint_3 data075[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17386841301066677, -0.19999999999999996, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34395257914113253, -0.19999999999999996, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50737088376869466, -0.19999999999999996, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66262801717277664, -0.19999999999999996, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.80958766645079094, -0.19999999999999996, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.94913754236162040, -0.19999999999999996, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0827985514223000, -0.19999999999999996, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2124212429050478, -0.19999999999999996, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3400002519661010, -0.19999999999999996, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17527815368535152, -0.19999999999999996, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35504762134297801, -0.19999999999999996, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54387742353211344, -0.19999999999999996, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74637910471804259, -0.19999999999999996, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.96690539714174639, -0.19999999999999996, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2087859420184757, -0.19999999999999996, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4729799844168852, -0.19999999999999996, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7564445064596661, -0.19999999999999996, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0512956926676802, -0.19999999999999996, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler075 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.40000000000000002. +-template +-void test075() ++// Test data for k=-0.19999999999999996, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16 ++// mean(f - f_Boost): 8.0491169285323847e-17 ++// variance(f - f_Boost): 8.0538110429953348e-32 ++// stddev(f - f_Boost): 2.8379237204328335e-16 ++const testcase_ellint_3 ++data076[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data075) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data075[i].k), Tp(data075[i].nu), +- Tp(data075[i].phi)); +- const Tp f0 = data075[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.50000000000000000. +-testcase_ellint_3 data076[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17369503942181802, -0.19999999999999996, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34265043534362660, -0.19999999999999996, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50338337208655415, -0.19999999999999996, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65426373297163642, -0.19999999999999996, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79536193036145808, -0.19999999999999996, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.92791875910061605, -0.19999999999999996, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0538145052725829, -0.19999999999999996, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1752060022875899, -0.19999999999999996, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.2943374404397376, -0.19999999999999996, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17545727725228877, -0.19999999999999996, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35652666242062175, -0.19999999999999996, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.54913090549102406, -0.19999999999999996, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.75970161209211551, -0.19999999999999996, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 0.99504737401590326, -0.19999999999999996, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2614666007124373, -0.19999999999999996, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5625255355205496, -0.19999999999999996, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.8954460255613343, -0.19999999999999996, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler076 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.50000000000000000. +-template +-void test076() ++// Test data for k=-0.19999999999999996, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 1.0045745697575397e-31 ++// stddev(f - f_Boost): 3.1695024369095219e-16 ++const testcase_ellint_3 ++data077[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data076) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data076[i].k), Tp(data076[i].nu), +- Tp(data076[i].phi)); +- const Tp f0 = data076[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.59999999999999998. +-testcase_ellint_3 data077[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17352228440746928, -0.19999999999999996, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34136562863713626, -0.19999999999999996, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.49950328177638481, -0.19999999999999996, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64625032705690832, -0.19999999999999996, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.78193941198403094, -0.19999999999999996, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.90817230934317128, -0.19999999999999996, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0271563751276462, -0.19999999999999996, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1412999379040518, -0.19999999999999996, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2530330675914561, -0.19999999999999996, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17563706072900442, -0.19999999999999996, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35802800926807238, -0.19999999999999996, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55456942250515051, -0.19999999999999996, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77390003828438203, -0.19999999999999996, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0262441366366397, -0.19999999999999996, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3228192988439669, -0.19999999999999996, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6728005754680795, -0.19999999999999996, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.0761587107468511, -0.19999999999999996, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler077 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.59999999999999998. +-template +-void test077() ++// Test data for k=-0.19999999999999996, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.1818454249546518e-16 ++// mean(f - f_Boost): 3.6082248300317589e-17 ++// variance(f - f_Boost): 8.9638010532618564e-32 ++// stddev(f - f_Boost): 2.9939607634806868e-16 ++const testcase_ellint_3 ++data078[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data077) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data077[i].k), Tp(data077[i].nu), +- Tp(data077[i].phi)); +- const Tp f0 = data077[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.69999999999999996. +-testcase_ellint_3 data078[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17335014404233898, -0.19999999999999996, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34009775298617811, -0.19999999999999996, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49572560201923810, -0.19999999999999996, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.63856276669886525, -0.19999999999999996, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.76924438644867565, -0.19999999999999996, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.88973060843856466, -0.19999999999999996, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0025230471636377, -0.19999999999999996, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1102356376093103, -0.19999999999999996, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2154356555075867, -0.19999999999999996, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17581750846781172, -0.19999999999999996, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35955226882028513, -0.19999999999999996, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56020489659466499, -0.19999999999999996, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.78908196988531487, -0.19999999999999996, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0611336754143517, -0.19999999999999996, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.3956969951058884, -0.19999999999999996, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8138131612209609, -0.19999999999999996, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3256365528879561, -0.19999999999999996, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.9058704854500963, -0.19999999999999996, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler078 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.69999999999999996. +-template +-void test078() ++// Test data for k=-0.19999999999999996, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9866614515542431e-16 ++// mean(f - f_Boost): 1.8318679906315082e-16 ++// variance(f - f_Boost): 3.1335688610218711e-31 ++// stddev(f - f_Boost): 5.5978289193417400e-16 ++const testcase_ellint_3 ++data079[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data078) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data078[i].k), Tp(data078[i].nu), +- Tp(data078[i].phi)); +- const Tp f0 = data078[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.80000000000000004. +-testcase_ellint_3 data079[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17317861443718541, -0.19999999999999996, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33884641598718701, -0.19999999999999996, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49204565281259494, -0.19999999999999996, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63117851188220353, -0.19999999999999996, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.75721095949544170, -0.19999999999999996, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.87245201443919118, -0.19999999999999996, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.97966584238831089, -0.19999999999999996, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0816336325174360, -0.19999999999999996, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1810223448909913, -0.19999999999999996, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17599862486281712, -0.19999999999999996, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36110007227128776, -0.19999999999999996, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56605039658567224, -0.19999999999999996, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80537523874517691, -0.19999999999999996, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1005662342414086, -0.19999999999999996, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4845340298105778, -0.19999999999999996, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0043332244969392, -0.19999999999999996, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.7052856676744761, -0.19999999999999996, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.5622166386422629, -0.19999999999999996, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler079 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.80000000000000004. +-template +-void test079() ++// Test data for k=-0.19999999999999996, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2817178727913890e-16 ++// mean(f - f_Boost): 3.4694469519536142e-16 ++// variance(f - f_Boost): 6.6311432369155086e-31 ++// stddev(f - f_Boost): 8.1431831840598485e-16 ++const testcase_ellint_3 ++data080[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data079) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data079[i].k), Tp(data079[i].nu), +- Tp(data079[i].phi)); +- const Tp f0 = data079[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.19999999999999996, nu=0.90000000000000002. +-testcase_ellint_3 data080[] = { +- { -0.0000000000000000, -0.19999999999999996, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17300769173837280, -0.19999999999999996, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33761123827372508, -0.19999999999999996, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48845905690769426, -0.19999999999999996, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62407720017324986, -0.19999999999999996, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74578146525124289, -0.19999999999999996, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.85621583540073076, -0.19999999999999996, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.95837725988001199, -0.19999999999999996, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0551821412633928, -0.19999999999999996, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1493679916141863, -0.19999999999999996, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.19999999999999996, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17618041435044951, -0.19999999999999996, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36267207636502929, -0.19999999999999996, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57212028758237743, -0.19999999999999996, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82293323876704483, -0.19999999999999996, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1457077279880385, -0.19999999999999996, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.5967346899325681, -0.19999999999999996, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.2856537353421724, -0.19999999999999996, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.4034714304613902, -0.19999999999999996, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.0448269356200361, -0.19999999999999996, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler080 = 2.5000000000000020e-13; + +-// Test function for k=-0.19999999999999996, nu=0.90000000000000002. +-template +-void test080() ++// Test data for k=-0.099999999999999978, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 8.2258607846939269e-33 ++// stddev(f - f_Boost): 9.0696531271564778e-17 ++const testcase_ellint_3 ++data081[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data080) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data080[i].k), Tp(data080[i].nu), +- Tp(data080[i].phi)); +- const Tp f0 = data080[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.0000000000000000. +-testcase_ellint_3 data081[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17454173353063665, -0.099999999999999978, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34913506721468085, -0.099999999999999978, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52382550016538953, -0.099999999999999978, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.69864700854177031, -0.099999999999999978, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.87361792586964870, -0.099999999999999978, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0487386319621685, -0.099999999999999978, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2239913752078757, -0.099999999999999978, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.3993423113684049, -0.099999999999999978, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17454173353063662, -0.099999999999999978, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34913506721468096, -0.099999999999999978, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52382550016538953, -0.099999999999999978, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.69864700854177020, -0.099999999999999978, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.87361792586964859, -0.099999999999999978, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0487386319621685, -0.099999999999999978, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2239913752078759, -0.099999999999999978, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.3993423113684051, -0.099999999999999978, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.5747455615173558, -0.099999999999999978, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler081 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.0000000000000000. +-template +-void test081() ++// Test data for k=-0.099999999999999978, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 ++const testcase_ellint_3 ++data082[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data081) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data081[i].k), Tp(data081[i].nu), +- Tp(data081[i].phi)); +- const Tp f0 = data081[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.10000000000000001. +-testcase_ellint_3 data082[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17436589347616618, -0.099999999999999978, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34776067871237354, -0.099999999999999978, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.51936064354727807, -0.099999999999999978, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.68860303749364360, -0.099999999999999978, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.85524561882332051, -0.099999999999999978, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0193708301908337, -0.099999999999999978, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1813474067123044, -0.099999999999999978, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3417670770424983, -0.099999999999999978, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17471821213559732, -0.099999999999999978, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35052902610011138, -0.099999999999999978, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.52842865990255727, -0.099999999999999978, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.70921799731166713, -0.099999999999999978, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.89340330535868662, -0.099999999999999978, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0811075784236857, -0.099999999999999978, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2720133232666426, -0.099999999999999978, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4653630031861395, -0.099999999999999978, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler082 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.10000000000000001. +-template +-void test082() ++// Test data for k=-0.099999999999999978, nu=0.20000000000000001. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16 ++// mean(f - f_Boost): 5.5511151231257830e-18 ++// variance(f - f_Boost): 3.8043060629871325e-36 ++// stddev(f - f_Boost): 1.9504630380981673e-18 ++const testcase_ellint_3 ++data083[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data082) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data082[i].k), Tp(data082[i].nu), +- Tp(data082[i].phi)); +- const Tp f0 = data082[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.20000000000000001. +-testcase_ellint_3 data083[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17419068786141345, -0.099999999999999978, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34640537686230127, -0.099999999999999978, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51502689171753957, -0.099999999999999978, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.67904147863672726, -0.099999999999999978, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.83811885126105179, -0.099999999999999978, 0.20000000000000001, +- 0.87266462599716477 }, +- { 0.99255278555742810, -0.099999999999999978, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1431260546194930, -0.099999999999999978, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.2909589656532101, -0.099999999999999978, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17489533344059083, -0.099999999999999978, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35194305707815038, -0.099999999999999978, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53317790741512527, -0.099999999999999978, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72036681615081222, -0.099999999999999978, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.91480372268244303, -0.099999999999999978, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1170528708071514, -0.099999999999999978, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3266916802718358, -0.099999999999999978, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5421622241831547, -0.099999999999999978, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler083 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.20000000000000001. +-template +-void test083() ++// Test data for k=-0.099999999999999978, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16 ++// mean(f - f_Boost): -1.6653345369377347e-17 ++// variance(f - f_Boost): 3.4238754566884194e-35 ++// stddev(f - f_Boost): 5.8513891142945016e-18 ++const testcase_ellint_3 ++data084[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data083) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data083[i].k), Tp(data083[i].nu), +- Tp(data083[i].phi)); +- const Tp f0 = data083[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.29999999999999999. +-testcase_ellint_3 data084[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17401611261390110, -0.099999999999999978, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34506869507511767, -0.099999999999999978, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51081757604259870, -0.099999999999999978, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.66992297597712303, -0.099999999999999978, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82209722856174228, -0.099999999999999978, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.96792430487669612, -0.099999999999999978, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1085964108954092, -0.099999999999999978, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2456748370836999, -0.099999999999999978, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17507310163441189, -0.099999999999999978, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35337768072524217, -0.099999999999999978, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.53808167801629170, -0.099999999999999978, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73215166755955019, -0.099999999999999978, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.93806546000201219, -0.099999999999999978, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1573218723395986, -0.099999999999999978, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.3897859679542097, -0.099999999999999978, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6331009404328622, -0.099999999999999978, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler084 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.29999999999999999. +-template +-void test084() ++// Test data for k=-0.099999999999999978, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 9.5107651574678308e-35 ++// stddev(f - f_Boost): 9.7523151904908362e-18 ++const testcase_ellint_3 ++data085[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data084) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data084[i].k), Tp(data084[i].nu), +- Tp(data084[i].phi)); +- const Tp f0 = data084[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.40000000000000002. +-testcase_ellint_3 data085[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17384216369897937, -0.099999999999999978, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34375018311376782, -0.099999999999999978, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50672650758380455, -0.099999999999999978, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66121264213337616, -0.099999999999999978, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.80706202005774441, -0.099999999999999978, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.94519376138245892, -0.099999999999999978, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0771880300759584, -0.099999999999999978, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2049711557188272, -0.099999999999999978, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17525152094559704, -0.099999999999999978, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35483343742825979, -0.099999999999999978, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54314913099505446, -0.099999999999999978, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74463962034766862, -0.099999999999999978, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.96349276837570441, -0.099999999999999978, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2029081382746343, -0.099999999999999978, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4638022887050806, -0.099999999999999978, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7432413830105224, -0.099999999999999978, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler085 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.40000000000000002. +-template +-void test085() ++// Test data for k=-0.099999999999999978, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 ++const testcase_ellint_3 ++data086[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data085) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data085[i].k), Tp(data085[i].nu), +- Tp(data085[i].phi)); +- const Tp f0 = data085[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.50000000000000000. +-testcase_ellint_3 data086[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17366883711936554, -0.099999999999999978, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34244940634881876, -0.099999999999999978, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50274793281634378, -0.099999999999999978, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65287941633275093, -0.099999999999999978, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79291198790315398, -0.099999999999999978, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.92412201537880345, -0.099999999999999978, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0484480076799370, -0.099999999999999978, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1681168130475206, -0.099999999999999978, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17543059564292182, -0.099999999999999978, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35631088838721664, -0.099999999999999978, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.54839023346436444, -0.099999999999999978, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.75790846946088830, -0.099999999999999978, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 0.99146713686720678, -0.099999999999999978, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2551692247937198, -0.099999999999999978, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5524660788146873, -0.099999999999999978, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.8806578570830670, -0.099999999999999978, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler086 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.50000000000000000. +-template +-void test086() ++// Test data for k=-0.099999999999999978, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 1.6073193116120635e-34 ++// stddev(f - f_Boost): 1.2678009747638087e-17 ++const testcase_ellint_3 ++data087[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data086) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data086[i].k), Tp(data086[i].nu), +- Tp(data086[i].phi)); +- const Tp f0 = data086[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.59999999999999998. +-testcase_ellint_3 data087[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17349612891469018, -0.099999999999999978, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34116594505539438, -0.099999999999999978, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.49887649430466685, -0.099999999999999978, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64489553282165157, -0.099999999999999978, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.77956016553782437, -0.099999999999999978, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.90451074530096309, -0.099999999999999978, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0220113666961632, -0.099999999999999978, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1345351441065563, -0.099999999999999978, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17561033003590576, -0.099999999999999978, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35781061668171932, -0.099999999999999978, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55381585659629196, -0.099999999999999978, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77204910484575640, -0.099999999999999978, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0224751740393108, -0.099999999999999978, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3160230906351114, -0.099999999999999978, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6616282844233206, -0.099999999999999978, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.0592555664850392, -0.099999999999999978, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.4913004919173822, -0.099999999999999978, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler087 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.59999999999999998. +-template +-void test087() ++// Test data for k=-0.099999999999999978, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 ++const testcase_ellint_3 ++data088[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data087) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data087[i].k), Tp(data087[i].nu), +- Tp(data087[i].phi)); +- const Tp f0 = data087[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.69999999999999996. +-testcase_ellint_3 data088[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17332403516105052, -0.099999999999999978, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.33989939374896877, -0.099999999999999978, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49510719568614081, -0.099999999999999978, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.63723607776354974, -0.099999999999999978, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.76693133887935327, -0.099999999999999978, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.88619382078823827, -0.099999999999999978, 0.69999999999999996, +- 1.0471975511965976 }, +- { 0.99758012018676490, -0.099999999999999978, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1037642270814410, -0.099999999999999978, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2073745911083187, -0.099999999999999978, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17579072847532518, -0.099999999999999978, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35933322840606297, -0.099999999999999978, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.55943788649460324, -0.099999999999999978, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.78716856504031707, -0.099999999999999978, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0571501305617423, -0.099999999999999978, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.3882948301743525, -0.099999999999999978, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8011785680114223, -0.099999999999999978, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3057268183616464, -0.099999999999999978, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.8771910188009739, -0.099999999999999978, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler088 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.69999999999999996. +-template +-void test088() ++// Test data for k=-0.099999999999999978, nu=0.80000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 6.1843750436434569e-32 ++// stddev(f - f_Boost): 2.4868403735751633e-16 ++const testcase_ellint_3 ++data089[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data088) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data088[i].k), Tp(data088[i].nu), +- Tp(data088[i].phi)); +- const Tp f0 = data088[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.80000000000000004. +-testcase_ellint_3 data089[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17315255197057020, -0.099999999999999978, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33864936055747985, -0.099999999999999978, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49143537041117619, -0.099999999999999978, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.62987861760047492, -0.099999999999999978, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.75496005490917517, -0.099999999999999978, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.86903081862701903, -0.099999999999999978, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.97490814820725591, -0.099999999999999978, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0754290107171083, -0.099999999999999978, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17597179535373417, -0.099999999999999978, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36087935387831499, -0.099999999999999978, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56526935244526444, -0.099999999999999978, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80339402590612397, -0.099999999999999978, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.0963358646374459, -0.099999999999999978, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4763748483246868, -0.099999999999999978, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 1.9896610222794102, -0.099999999999999978, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.6806423920122024, -0.099999999999999978, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.5246199613295612, -0.099999999999999978, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler089 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.80000000000000004. +-template +-void test089() ++// Test data for k=-0.099999999999999978, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16 ++// mean(f - f_Boost): 2.3314683517128288e-16 ++// variance(f - f_Boost): 2.9401198977189756e-31 ++// stddev(f - f_Boost): 5.4222872459129045e-16 ++const testcase_ellint_3 ++data090[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data089) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data089[i].k), Tp(data089[i].nu), +- Tp(data089[i].phi)); +- const Tp f0 = data089[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=-0.099999999999999978, nu=0.90000000000000002. +-testcase_ellint_3 data090[] = { +- { -0.0000000000000000, -0.099999999999999978, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17298167549096569, -0.099999999999999978, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33741546662741584, -0.099999999999999978, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48785665376856879, -0.099999999999999978, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62280288554518959, -0.099999999999999978, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74358903115455199, -0.099999999999999978, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.85290207679298358, -0.099999999999999978, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.95379006645397379, -0.099999999999999978, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0492213119872327, -0.099999999999999978, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, -0.099999999999999978, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17615353510599349, -0.099999999999999978, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36244964892922371, -0.099999999999999978, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57132457590110530, -0.099999999999999978, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82087808820385000, -0.099999999999999978, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1411894342144451, -0.099999999999999978, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.5875929286844597, -0.099999999999999978, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.2678622986596659, -0.099999999999999978, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.3697528941897903, -0.099999999999999978, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 4.9862890417305499, -0.099999999999999978, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler090 = 2.5000000000000020e-13; + +-// Test function for k=-0.099999999999999978, nu=0.90000000000000002. +-template +-void test090() ++// Test data for k=0.0000000000000000, nu=0.0000000000000000. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.1203697876423447e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 ++const testcase_ellint_3 ++data091[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data090) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data090[i].k), Tp(data090[i].nu), +- Tp(data090[i].phi)); +- const Tp f0 = data090[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.0000000000000000. +-testcase_ellint_3 data091[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17453292519943295, 0.0000000000000000, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34906585039886584, 0.0000000000000000, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52359877559829882, 0.0000000000000000, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.69813170079773179, 0.0000000000000000, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.87266462599716477, 0.0000000000000000, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0471975511965976, 0.0000000000000000, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2217304763960304, 0.0000000000000000, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.3962634015954631, 0.0000000000000000, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17453292519943295, 0.0000000000000000, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34906585039886590, 0.0000000000000000, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52359877559829882, 0.0000000000000000, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.69813170079773179, 0.0000000000000000, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.87266462599716477, 0.0000000000000000, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0471975511965976, 0.0000000000000000, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2217304763960306, 0.0000000000000000, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.3962634015954636, 0.0000000000000000, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler091 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.0000000000000000. +-template +-void test091() ++// Test data for k=0.0000000000000000, nu=0.10000000000000001. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.1019052604815601e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 9.5107651574678312e-37 ++// stddev(f - f_Boost): 9.7523151904908366e-19 ++const testcase_ellint_3 ++data092[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data091) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data091[i].k), Tp(data091[i].nu), +- Tp(data091[i].phi)); +- const Tp f0 = data091[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.10000000000000001. +-testcase_ellint_3 data092[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17435710107516608, 0.0000000000000000, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34769194715329604, 0.0000000000000000, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.51913731575866118, 0.0000000000000000, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.68810051897078461, 0.0000000000000000, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.85432615661706823, 0.0000000000000000, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0179006647340796, 0.0000000000000000, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1792120640746322, 0.0000000000000000, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3388834245070498, 0.0000000000000000, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17470938780535167, 0.0000000000000000, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35045931581655582, 0.0000000000000000, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.52819841383849875, 0.0000000000000000, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.70868910807992958, 0.0000000000000000, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.89241311307249638, 0.0000000000000000, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0794871444666669, 0.0000000000000000, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2696086247356864, 0.0000000000000000, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4620562617494721, 0.0000000000000000, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6557647109660167, 0.0000000000000000, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler092 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.10000000000000001. +-template +-void test092() ++// Test data for k=0.0000000000000000, nu=0.20000000000000001. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0831888697465320e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 ++const testcase_ellint_3 ++data093[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data092) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data092[i].k), Tp(data092[i].nu), +- Tp(data092[i].phi)); +- const Tp f0 = data092[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.20000000000000001. +-testcase_ellint_3 data093[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17418191132226077, 0.0000000000000000, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34633712256943405, 0.0000000000000000, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51480684302043711, 0.0000000000000000, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.67855102942481949, 0.0000000000000000, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.83723056090326253, 0.0000000000000000, 0.20000000000000001, +- 0.87266462599716477 }, +- { 0.99114645269578183, 0.0000000000000000, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1411014627915537, 0.0000000000000000, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.2882448138013969, 0.0000000000000000, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17488649304197776, 0.0000000000000000, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35187284488675424, 0.0000000000000000, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53294400750146131, 0.0000000000000000, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.71982347021822823, 0.0000000000000000, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.91377311030258745, 0.0000000000000000, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1153429007215137, 0.0000000000000000, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3241202847784086, 0.0000000000000000, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5385854914338242, 0.0000000000000000, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.7562036827601815, 0.0000000000000000, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler093 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.20000000000000001. +-template +-void test093() ++// Test data for k=0.0000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0642101770923591e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 ++const testcase_ellint_3 ++data094[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data093) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data093[i].k), Tp(data093[i].nu), +- Tp(data093[i].phi)); +- const Tp f0 = data093[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.29999999999999999. +-testcase_ellint_3 data094[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17400735186871727, 0.0000000000000000, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34500091027020219, 0.0000000000000000, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51060069523901541, 0.0000000000000000, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.66944393961375459, 0.0000000000000000, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82123776744538157, 0.0000000000000000, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.96657579245516523, 0.0000000000000000, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1066703663542414, 0.0000000000000000, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2431094251944901, 0.0000000000000000, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17506424509761404, 0.0000000000000000, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35330695794774630, 0.0000000000000000, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.53784398359522367, 0.0000000000000000, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73159289408687844, 0.0000000000000000, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.93699031797084975, 0.0000000000000000, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1555098909390267, 0.0000000000000000, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.3870184960144325, 0.0000000000000000, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6291980835772994, 0.0000000000000000, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler094 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.29999999999999999. +-template +-void test094() ++// Test data for k=0.0000000000000000, nu=0.40000000000000002. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0449580089795878e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 ++const testcase_ellint_3 ++data095[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data094) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data094[i].k), Tp(data094[i].nu), +- Tp(data094[i].phi)); +- const Tp f0 = data094[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.40000000000000002. +-testcase_ellint_3 data095[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17383341868035865, 0.0000000000000000, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34368286022299821, 0.0000000000000000, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50651268947499406, 0.0000000000000000, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66074441806097550, 0.0000000000000000, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.80622931670113485, 0.0000000000000000, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.94389791565435233, 0.0000000000000000, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0753503387899728, 0.0000000000000000, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2025374759127518, 0.0000000000000000, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3275651989026322, 0.0000000000000000, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17524264820030025, 0.0000000000000000, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35476219513871499, 0.0000000000000000, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54290749235440094, 0.0000000000000000, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74406433757109913, 0.0000000000000000, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.96236826162553313, 0.0000000000000000, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2009785880262487, 0.0000000000000000, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4608000106167567, 0.0000000000000000, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7389349574753439, 0.0000000000000000, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0278893379868057, 0.0000000000000000, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler095 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.40000000000000002. +-template +-void test095() ++// Test data for k=0.0000000000000000, nu=0.50000000000000000. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0254203825026289e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 ++const testcase_ellint_3 ++data096[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data095) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data095[i].k), Tp(data095[i].nu), +- Tp(data095[i].phi)); +- const Tp f0 = data095[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.50000000000000000. +-testcase_ellint_3 data096[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17366010776037047, 0.0000000000000000, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34238253799539309, 0.0000000000000000, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50253707775976408, 0.0000000000000000, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65242145347295766, 0.0000000000000000, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79210420018698058, 0.0000000000000000, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.92287437995632193, 0.0000000000000000, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0466900550798661, 0.0000000000000000, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1658007366618623, 0.0000000000000000, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17542170661831016, 0.0000000000000000, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35623911740195419, 0.0000000000000000, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.54814449099863127, 0.0000000000000000, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.75731546607718081, 0.0000000000000000, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 0.99028751188233310, 0.0000000000000000, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2531022857760581, 0.0000000000000000, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5491761777615785, 0.0000000000000000, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.8758359693666533, 0.0000000000000000, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler096 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.50000000000000000. +-template +-void test096() ++// Test data for k=0.0000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.1742785192400269e-16 ++// mean(f - f_Boost): 1.3877787807814457e-17 ++// variance(f - f_Boost): 2.3776912893669577e-35 ++// stddev(f - f_Boost): 4.8761575952454181e-18 ++const testcase_ellint_3 ++data097[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data096) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data096[i].k), Tp(data096[i].nu), +- Tp(data096[i].phi)); +- const Tp f0 = data096[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.59999999999999998. +-testcase_ellint_3 data097[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17348741514884702, 0.0000000000000000, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34109952405241289, 0.0000000000000000, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.49866850781226296, 0.0000000000000000, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64444732407062510, 0.0000000000000000, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.77877564686544720, 0.0000000000000000, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.90330743691883497, 0.0000000000000000, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0203257987604104, 0.0000000000000000, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1323247918768631, 0.0000000000000000, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17560142466065651, 0.0000000000000000, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35773830754879005, 0.0000000000000000, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55356583986445973, 0.0000000000000000, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77143701715151514, 0.0000000000000000, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0212334940541210, 0.0000000000000000, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3137928444460387, 0.0000000000000000, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6579755004159076, 0.0000000000000000, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.0537461418295506, 0.0000000000000000, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.4836470664490253, 0.0000000000000000, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler097 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.59999999999999998. +-template +-void test097() ++// Test data for k=0.0000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 4 ++// max(|f - f_Boost| / |f_Boost|): 3.0903019454022601e-16 ++// mean(f - f_Boost): -6.9388939039072284e-17 ++// variance(f - f_Boost): 5.9442282234173945e-34 ++// stddev(f - f_Boost): 2.4380787976227090e-17 ++const testcase_ellint_3 ++data098[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data097) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data097[i].k), Tp(data097[i].nu), +- Tp(data097[i].phi)); +- const Tp f0 = data097[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.69999999999999996. +-testcase_ellint_3 data098[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17331533692234477, 0.0000000000000000, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.33983341309265941, 0.0000000000000000, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49490198805931990, 0.0000000000000000, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.63679715525145308, 0.0000000000000000, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.76616861049481944, 0.0000000000000000, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.88503143209004220, 0.0000000000000000, 0.69999999999999996, +- 1.0471975511965976 }, +- { 0.99596060249112173, 0.0000000000000000, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1016495050260424, 0.0000000000000000, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17578180667760368, 0.0000000000000000, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35926037139410999, 0.0000000000000000, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.55918341315855080, 0.0000000000000000, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.78653584856932546, 0.0000000000000000, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0558379029273324, 0.0000000000000000, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.3858662544850615, 0.0000000000000000, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.7970491170359040, 0.0000000000000000, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.2992404490153917, 0.0000000000000000, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.8678686047727382, 0.0000000000000000, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler098 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.69999999999999996. +-template +-void test098() ++// Test data for k=0.0000000000000000, nu=0.80000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.2373744057922657e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 ++const testcase_ellint_3 ++data099[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data098) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data098[i].k), Tp(data098[i].nu), +- Tp(data098[i].phi)); +- const Tp f0 = data098[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.80000000000000004. +-testcase_ellint_3 data099[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17314386919344213, 0.0000000000000000, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33858381342073240, 0.0000000000000000, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49123285640844738, 0.0000000000000000, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.62944854858904520, 0.0000000000000000, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.75421778305499343, 0.0000000000000000, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.86790634112156639, 0.0000000000000000, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.97334918087427558, 0.0000000000000000, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0734012615283985, 0.0000000000000000, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17596285706118869, 0.0000000000000000, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36080593896484231, 0.0000000000000000, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56501022706967863, 0.0000000000000000, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80273891984116930, 0.0000000000000000, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.0949425007763358, 0.0000000000000000, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4736985692253419, 0.0000000000000000, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 1.9848676587180696, 0.0000000000000000, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.6726187823193546, 0.0000000000000000, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler099 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.80000000000000004. +-template +-void test099() ++// Test data for k=0.0000000000000000, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.6108624815885066e-16 ++// mean(f - f_Boost): 2.1371793224034264e-16 ++// variance(f - f_Boost): 5.6389326618626776e-33 ++// stddev(f - f_Boost): 7.5092826966779442e-17 ++const testcase_ellint_3 ++data100[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data099) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data099[i].k), Tp(data099[i].nu), +- Tp(data099[i].phi)); +- const Tp f0 = data099[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.0000000000000000, nu=0.90000000000000002. +-testcase_ellint_3 data100[] = { +- { -0.0000000000000000, 0.0000000000000000, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17297300811030600, 0.0000000000000000, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33735034635360817, 0.0000000000000000, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48765675230233141, 0.0000000000000000, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62238126886123568, 0.0000000000000000, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74286600807269243, 0.0000000000000000, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.85181283909264971, 0.0000000000000000, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.95228683995371122, 0.0000000000000000, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0472730487412552, 0.0000000000000000, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.0000000000000000, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17614458024574997, 0.0000000000000000, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36237566578821978, 0.0000000000000000, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57106058859196640, 0.0000000000000000, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82019857015755915, 0.0000000000000000, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1397014388908147, 0.0000000000000000, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.5845952415154960, 0.0000000000000000, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.2620531413370775, 0.0000000000000000, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.3587842061975066, 0.0000000000000000, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 4.9672941328980507, 0.0000000000000000, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler100 = 2.5000000000000020e-13; + +-// Test function for k=0.0000000000000000, nu=0.90000000000000002. +-template +-void test100() ++// Test data for k=0.10000000000000009, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 ++const testcase_ellint_3 ++data101[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data100) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data100[i].k), Tp(data100[i].nu), +- Tp(data100[i].phi)); +- const Tp f0 = data100[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.0000000000000000. +-testcase_ellint_3 data101[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17454173353063665, 0.10000000000000009, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34913506721468085, 0.10000000000000009, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52382550016538953, 0.10000000000000009, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.69864700854177031, 0.10000000000000009, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.87361792586964870, 0.10000000000000009, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0487386319621685, 0.10000000000000009, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2239913752078757, 0.10000000000000009, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.3993423113684049, 0.10000000000000009, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17454173353063662, 0.10000000000000009, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34913506721468096, 0.10000000000000009, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52382550016538953, 0.10000000000000009, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.69864700854177020, 0.10000000000000009, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.87361792586964859, 0.10000000000000009, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0487386319621685, 0.10000000000000009, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2239913752078759, 0.10000000000000009, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.3993423113684051, 0.10000000000000009, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler101 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.0000000000000000. +-template +-void test101() ++// Test data for k=0.10000000000000009, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 ++const testcase_ellint_3 ++data102[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data101) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data101[i].k), Tp(data101[i].nu), +- Tp(data101[i].phi)); +- const Tp f0 = data101[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.10000000000000001. +-testcase_ellint_3 data102[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17436589347616618, 0.10000000000000009, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34776067871237354, 0.10000000000000009, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.51936064354727807, 0.10000000000000009, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.68860303749364360, 0.10000000000000009, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.85524561882332051, 0.10000000000000009, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0193708301908337, 0.10000000000000009, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1813474067123044, 0.10000000000000009, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3417670770424983, 0.10000000000000009, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17471821213559732, 0.10000000000000009, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35052902610011138, 0.10000000000000009, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.52842865990255727, 0.10000000000000009, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.70921799731166713, 0.10000000000000009, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.89340330535868662, 0.10000000000000009, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0811075784236857, 0.10000000000000009, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2720133232666426, 0.10000000000000009, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4653630031861395, 0.10000000000000009, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler102 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.10000000000000001. +-template +-void test102() ++// Test data for k=0.10000000000000009, nu=0.20000000000000001. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16 ++// mean(f - f_Boost): 5.5511151231257830e-18 ++// variance(f - f_Boost): 3.8043060629871325e-36 ++// stddev(f - f_Boost): 1.9504630380981673e-18 ++const testcase_ellint_3 ++data103[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data102) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data102[i].k), Tp(data102[i].nu), +- Tp(data102[i].phi)); +- const Tp f0 = data102[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.20000000000000001. +-testcase_ellint_3 data103[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17419068786141345, 0.10000000000000009, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34640537686230127, 0.10000000000000009, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51502689171753957, 0.10000000000000009, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.67904147863672726, 0.10000000000000009, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.83811885126105179, 0.10000000000000009, 0.20000000000000001, +- 0.87266462599716477 }, +- { 0.99255278555742810, 0.10000000000000009, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1431260546194930, 0.10000000000000009, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.2909589656532101, 0.10000000000000009, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17489533344059083, 0.10000000000000009, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35194305707815038, 0.10000000000000009, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53317790741512527, 0.10000000000000009, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72036681615081222, 0.10000000000000009, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.91480372268244303, 0.10000000000000009, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1170528708071514, 0.10000000000000009, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3266916802718358, 0.10000000000000009, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5421622241831547, 0.10000000000000009, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler103 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.20000000000000001. +-template +-void test103() ++// Test data for k=0.10000000000000009, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16 ++// mean(f - f_Boost): -1.6653345369377347e-17 ++// variance(f - f_Boost): 3.4238754566884194e-35 ++// stddev(f - f_Boost): 5.8513891142945016e-18 ++const testcase_ellint_3 ++data104[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data103) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data103[i].k), Tp(data103[i].nu), +- Tp(data103[i].phi)); +- const Tp f0 = data103[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.29999999999999999. +-testcase_ellint_3 data104[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17401611261390110, 0.10000000000000009, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34506869507511767, 0.10000000000000009, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51081757604259870, 0.10000000000000009, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.66992297597712303, 0.10000000000000009, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82209722856174228, 0.10000000000000009, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.96792430487669612, 0.10000000000000009, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1085964108954092, 0.10000000000000009, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2456748370836999, 0.10000000000000009, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17507310163441189, 0.10000000000000009, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35337768072524217, 0.10000000000000009, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.53808167801629170, 0.10000000000000009, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73215166755955019, 0.10000000000000009, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.93806546000201219, 0.10000000000000009, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1573218723395986, 0.10000000000000009, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.3897859679542097, 0.10000000000000009, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6331009404328622, 0.10000000000000009, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.8826015946315438, 0.10000000000000009, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler104 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.29999999999999999. +-template +-void test104() ++// Test data for k=0.10000000000000009, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 9.5107651574678308e-35 ++// stddev(f - f_Boost): 9.7523151904908362e-18 ++const testcase_ellint_3 ++data105[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data104) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data104[i].k), Tp(data104[i].nu), +- Tp(data104[i].phi)); +- const Tp f0 = data104[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.40000000000000002. +-testcase_ellint_3 data105[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17384216369897937, 0.10000000000000009, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34375018311376782, 0.10000000000000009, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50672650758380455, 0.10000000000000009, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66121264213337616, 0.10000000000000009, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.80706202005774441, 0.10000000000000009, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.94519376138245892, 0.10000000000000009, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0771880300759584, 0.10000000000000009, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2049711557188272, 0.10000000000000009, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17525152094559704, 0.10000000000000009, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35483343742825979, 0.10000000000000009, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54314913099505446, 0.10000000000000009, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74463962034766862, 0.10000000000000009, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.96349276837570441, 0.10000000000000009, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2029081382746343, 0.10000000000000009, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4638022887050806, 0.10000000000000009, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7432413830105224, 0.10000000000000009, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler105 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.40000000000000002. +-template +-void test105() ++// Test data for k=0.10000000000000009, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 ++const testcase_ellint_3 ++data106[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data105) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data105[i].k), Tp(data105[i].nu), +- Tp(data105[i].phi)); +- const Tp f0 = data105[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.50000000000000000. +-testcase_ellint_3 data106[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17366883711936554, 0.10000000000000009, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34244940634881876, 0.10000000000000009, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50274793281634378, 0.10000000000000009, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65287941633275093, 0.10000000000000009, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79291198790315398, 0.10000000000000009, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.92412201537880345, 0.10000000000000009, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0484480076799370, 0.10000000000000009, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1681168130475206, 0.10000000000000009, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17543059564292182, 0.10000000000000009, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35631088838721664, 0.10000000000000009, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.54839023346436455, 0.10000000000000009, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.75790846946088830, 0.10000000000000009, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 0.99146713686720678, 0.10000000000000009, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2551692247937198, 0.10000000000000009, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5524660788146873, 0.10000000000000009, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.8806578570830670, 0.10000000000000009, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler106 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.50000000000000000. +-template +-void test106() ++// Test data for k=0.10000000000000009, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 1.6073193116120635e-34 ++// stddev(f - f_Boost): 1.2678009747638087e-17 ++const testcase_ellint_3 ++data107[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data106) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data106[i].k), Tp(data106[i].nu), +- Tp(data106[i].phi)); +- const Tp f0 = data106[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.59999999999999998. +-testcase_ellint_3 data107[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17349612891469018, 0.10000000000000009, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34116594505539438, 0.10000000000000009, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.49887649430466685, 0.10000000000000009, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64489553282165157, 0.10000000000000009, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.77956016553782437, 0.10000000000000009, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.90451074530096309, 0.10000000000000009, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0220113666961632, 0.10000000000000009, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1345351441065563, 0.10000000000000009, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17561033003590576, 0.10000000000000009, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35781061668171932, 0.10000000000000009, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55381585659629196, 0.10000000000000009, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77204910484575640, 0.10000000000000009, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0224751740393108, 0.10000000000000009, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3160230906351114, 0.10000000000000009, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6616282844233206, 0.10000000000000009, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.0592555664850392, 0.10000000000000009, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.4913004919173822, 0.10000000000000009, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler107 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.59999999999999998. +-template +-void test107() ++// Test data for k=0.10000000000000009, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 ++const testcase_ellint_3 ++data108[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data107) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data107[i].k), Tp(data107[i].nu), +- Tp(data107[i].phi)); +- const Tp f0 = data107[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.69999999999999996. +-testcase_ellint_3 data108[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17332403516105052, 0.10000000000000009, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.33989939374896877, 0.10000000000000009, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49510719568614081, 0.10000000000000009, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.63723607776354974, 0.10000000000000009, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.76693133887935327, 0.10000000000000009, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.88619382078823827, 0.10000000000000009, 0.69999999999999996, +- 1.0471975511965976 }, +- { 0.99758012018676490, 0.10000000000000009, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1037642270814410, 0.10000000000000009, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2073745911083187, 0.10000000000000009, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17579072847532518, 0.10000000000000009, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35933322840606297, 0.10000000000000009, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.55943788649460324, 0.10000000000000009, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.78716856504031707, 0.10000000000000009, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0571501305617423, 0.10000000000000009, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.3882948301743525, 0.10000000000000009, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8011785680114223, 0.10000000000000009, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3057268183616464, 0.10000000000000009, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.8771910188009739, 0.10000000000000009, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler108 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.69999999999999996. +-template +-void test108() ++// Test data for k=0.10000000000000009, nu=0.80000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 6.1843750436434569e-32 ++// stddev(f - f_Boost): 2.4868403735751633e-16 ++const testcase_ellint_3 ++data109[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data108) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data108[i].k), Tp(data108[i].nu), +- Tp(data108[i].phi)); +- const Tp f0 = data108[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.80000000000000004. +-testcase_ellint_3 data109[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17315255197057020, 0.10000000000000009, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33864936055747985, 0.10000000000000009, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49143537041117619, 0.10000000000000009, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.62987861760047492, 0.10000000000000009, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.75496005490917517, 0.10000000000000009, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.86903081862701903, 0.10000000000000009, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.97490814820725591, 0.10000000000000009, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0754290107171083, 0.10000000000000009, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17597179535373417, 0.10000000000000009, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36087935387831499, 0.10000000000000009, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56526935244526444, 0.10000000000000009, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80339402590612397, 0.10000000000000009, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.0963358646374459, 0.10000000000000009, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4763748483246868, 0.10000000000000009, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 1.9896610222794102, 0.10000000000000009, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.6806423920122024, 0.10000000000000009, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.5246199613295612, 0.10000000000000009, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler109 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.80000000000000004. +-template +-void test109() ++// Test data for k=0.10000000000000009, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16 ++// mean(f - f_Boost): 2.3314683517128288e-16 ++// variance(f - f_Boost): 2.9401198977189756e-31 ++// stddev(f - f_Boost): 5.4222872459129045e-16 ++const testcase_ellint_3 ++data110[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data109) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data109[i].k), Tp(data109[i].nu), +- Tp(data109[i].phi)); +- const Tp f0 = data109[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.10000000000000009, nu=0.90000000000000002. +-testcase_ellint_3 data110[] = { +- { -0.0000000000000000, 0.10000000000000009, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17298167549096569, 0.10000000000000009, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33741546662741584, 0.10000000000000009, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48785665376856879, 0.10000000000000009, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62280288554518959, 0.10000000000000009, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74358903115455199, 0.10000000000000009, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.85290207679298358, 0.10000000000000009, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.95379006645397379, 0.10000000000000009, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0492213119872327, 0.10000000000000009, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.10000000000000009, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17615353510599349, 0.10000000000000009, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36244964892922371, 0.10000000000000009, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57132457590110530, 0.10000000000000009, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82087808820385000, 0.10000000000000009, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1411894342144451, 0.10000000000000009, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.5875929286844597, 0.10000000000000009, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.2678622986596659, 0.10000000000000009, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.3697528941897903, 0.10000000000000009, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 4.9862890417305499, 0.10000000000000009, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler110 = 2.5000000000000020e-13; + +-// Test function for k=0.10000000000000009, nu=0.90000000000000002. +-template +-void test110() ++// Test data for k=0.20000000000000018, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16 ++// mean(f - f_Boost): -5.2735593669694933e-17 ++// variance(f - f_Boost): 3.0473442641042680e-32 ++// stddev(f - f_Boost): 1.7456644190978597e-16 ++const testcase_ellint_3 ++data111[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data110) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data110[i].k), Tp(data110[i].nu), +- Tp(data110[i].phi)); +- const Tp f0 = data110[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.0000000000000000. +-testcase_ellint_3 data111[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17456817290292811, 0.19999999999999996, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34934315932086801, 0.19999999999999996, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52450880529443988, 0.19999999999999996, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70020491009844910, 0.19999999999999996, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.87651006649967955, 0.19999999999999996, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0534305870298994, 0.19999999999999996, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2308975521670784, 0.19999999999999996, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4087733584990738, 0.19999999999999996, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.5868678474541664, 0.19999999999999996, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17456817290292806, 0.20000000000000018, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34934315932086796, 0.20000000000000018, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52450880529443988, 0.20000000000000018, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70020491009844887, 0.20000000000000018, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.87651006649967977, 0.20000000000000018, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0534305870298994, 0.20000000000000018, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2308975521670789, 0.20000000000000018, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4087733584990738, 0.20000000000000018, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler111 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.0000000000000000. +-template +-void test111() ++// Test data for k=0.20000000000000018, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16 ++// mean(f - f_Boost): -3.8857805861880476e-17 ++// variance(f - f_Boost): 2.8794792590749608e-32 ++// stddev(f - f_Boost): 1.6969028431454054e-16 ++const testcase_ellint_3 ++data112[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data111) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data111[i].k), Tp(data111[i].nu), +- Tp(data111[i].phi)); +- const Tp f0 = data111[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.10000000000000001. +-testcase_ellint_3 data112[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17439228502691750, 0.19999999999999996, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34796731137565740, 0.19999999999999996, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52003370294544848, 0.19999999999999996, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69012222258631495, 0.19999999999999996, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.85803491465566772, 0.19999999999999996, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0238463961099364, 0.19999999999999996, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1878691059202153, 0.19999999999999996, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3505985031831940, 0.19999999999999996, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5126513474261092, 0.19999999999999996, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17474469953608965, 0.20000000000000018, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35073860234984255, 0.20000000000000018, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.52912258712951521, 0.20000000000000018, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71081701558898069, 0.20000000000000018, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.89640758521169384, 0.20000000000000018, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0860417038089853, 0.20000000000000018, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2793599255528623, 0.20000000000000018, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4754938544089076, 0.20000000000000018, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler112 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.10000000000000001. +-template +-void test112() ++// Test data for k=0.20000000000000018, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 3.1158217732380362e-32 ++// stddev(f - f_Boost): 1.7651690494788412e-16 ++const testcase_ellint_3 ++data113[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data112) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data112[i].k), Tp(data112[i].nu), +- Tp(data112[i].phi)); +- const Tp f0 = data112[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.20000000000000001. +-testcase_ellint_3 data113[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17421703179583750, 0.19999999999999996, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34661057411998791, 0.19999999999999996, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51569006052647393, 0.19999999999999996, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68052412821107278, 0.19999999999999996, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.84081341263313825, 0.19999999999999996, 0.20000000000000001, +- 0.87266462599716477 }, +- { 0.99683359988842890, 0.19999999999999996, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1493086715118852, 0.19999999999999996, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.2992699693957541, 0.19999999999999996, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4479323932249568, 0.19999999999999996, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17492186907740698, 0.20000000000000018, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35215414286134267, 0.20000000000000018, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53388285615182440, 0.20000000000000018, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72200960282688265, 0.20000000000000018, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.91793087614428526, 0.20000000000000018, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1222602841587976, 0.20000000000000018, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3345489407496247, 0.20000000000000018, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5531225705475502, 0.20000000000000018, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler113 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.20000000000000001. +-template +-void test113() ++// Test data for k=0.20000000000000018, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16 ++// mean(f - f_Boost): -1.1102230246251566e-17 ++// variance(f - f_Boost): 9.9840208317034302e-32 ++// stddev(f - f_Boost): 3.1597501217190311e-16 ++const testcase_ellint_3 ++data114[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data113) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data113[i].k), Tp(data113[i].nu), +- Tp(data113[i].phi)); +- const Tp f0 = data113[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.29999999999999999. +-testcase_ellint_3 data114[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17404240913577707, 0.19999999999999996, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34527248032587193, 0.19999999999999996, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51147118981668416, 0.19999999999999996, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67137107867777635, 0.19999999999999996, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82470418188668893, 0.19999999999999996, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.97202873223594299, 0.19999999999999996, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1144773569375266, 0.19999999999999996, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2535292433701000, 0.19999999999999996, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.3908453514752481, 0.19999999999999996, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17509968571715159, 0.20000000000000018, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35359030214835629, 0.20000000000000018, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.53879807274537084, 0.20000000000000018, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73384116418059731, 0.20000000000000018, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.94132799329524031, 0.20000000000000018, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1628407021801439, 0.20000000000000018, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.3982440216739438, 0.20000000000000018, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6450634983653640, 0.20000000000000018, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.8983924169967099, 0.20000000000000018, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler114 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.29999999999999999. +-template +-void test114() ++// Test data for k=0.20000000000000018, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.6738449250038925e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 2.7810428396951687e-32 ++// stddev(f - f_Boost): 1.6676458975739331e-16 ++const testcase_ellint_3 ++data115[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data114) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data114[i].k), Tp(data114[i].nu), +- Tp(data114[i].phi)); +- const Tp f0 = data114[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.40000000000000002. +-testcase_ellint_3 data115[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17386841301066677, 0.19999999999999996, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34395257914113253, 0.19999999999999996, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50737088376869466, 0.19999999999999996, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66262801717277664, 0.19999999999999996, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.80958766645079094, 0.19999999999999996, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.94913754236162040, 0.19999999999999996, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0827985514223000, 0.19999999999999996, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2124212429050478, 0.19999999999999996, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3400002519661010, 0.19999999999999996, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17527815368535152, 0.20000000000000018, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35504762134297801, 0.20000000000000018, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54387742353211344, 0.20000000000000018, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74637910471804259, 0.20000000000000018, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.96690539714174639, 0.20000000000000018, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2087859420184757, 0.20000000000000018, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4729799844168852, 0.20000000000000018, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7564445064596661, 0.20000000000000018, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler115 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.40000000000000002. +-template +-void test115() ++// Test data for k=0.20000000000000018, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16 ++// mean(f - f_Boost): 3.6082248300317589e-17 ++// variance(f - f_Boost): 8.9638010532618564e-32 ++// stddev(f - f_Boost): 2.9939607634806868e-16 ++const testcase_ellint_3 ++data116[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data115) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data115[i].k), Tp(data115[i].nu), +- Tp(data115[i].phi)); +- const Tp f0 = data115[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.50000000000000000. +-testcase_ellint_3 data116[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17369503942181802, 0.19999999999999996, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34265043534362660, 0.19999999999999996, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50338337208655415, 0.19999999999999996, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65426373297163642, 0.19999999999999996, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79536193036145808, 0.19999999999999996, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.92791875910061605, 0.19999999999999996, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0538145052725829, 0.19999999999999996, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1752060022875899, 0.19999999999999996, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.2943374404397376, 0.19999999999999996, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17545727725228877, 0.20000000000000018, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35652666242062175, 0.20000000000000018, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.54913090549102406, 0.20000000000000018, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.75970161209211551, 0.20000000000000018, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 0.99504737401590326, 0.20000000000000018, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2614666007124373, 0.20000000000000018, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5625255355205498, 0.20000000000000018, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.8954460255613346, 0.20000000000000018, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler116 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.50000000000000000. +-template +-void test116() ++// Test data for k=0.20000000000000018, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 1.0045745697575397e-31 ++// stddev(f - f_Boost): 3.1695024369095219e-16 ++const testcase_ellint_3 ++data117[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data116) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data116[i].k), Tp(data116[i].nu), +- Tp(data116[i].phi)); +- const Tp f0 = data116[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.59999999999999998. +-testcase_ellint_3 data117[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17352228440746928, 0.19999999999999996, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34136562863713626, 0.19999999999999996, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.49950328177638481, 0.19999999999999996, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64625032705690832, 0.19999999999999996, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.78193941198403094, 0.19999999999999996, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.90817230934317128, 0.19999999999999996, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0271563751276462, 0.19999999999999996, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1412999379040518, 0.19999999999999996, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2530330675914561, 0.19999999999999996, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17563706072900442, 0.20000000000000018, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35802800926807238, 0.20000000000000018, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55456942250515051, 0.20000000000000018, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77390003828438203, 0.20000000000000018, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0262441366366397, 0.20000000000000018, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3228192988439669, 0.20000000000000018, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6728005754680795, 0.20000000000000018, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.0761587107468511, 0.20000000000000018, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler117 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.59999999999999998. +-template +-void test117() ++// Test data for k=0.20000000000000018, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2209418045118284e-16 ++// mean(f - f_Boost): 2.4980018054066023e-17 ++// variance(f - f_Boost): 9.1989071679544611e-32 ++// stddev(f - f_Boost): 3.0329700242426498e-16 ++const testcase_ellint_3 ++data118[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data117) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data117[i].k), Tp(data117[i].nu), +- Tp(data117[i].phi)); +- const Tp f0 = data117[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.69999999999999996. +-testcase_ellint_3 data118[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17335014404233898, 0.19999999999999996, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34009775298617811, 0.19999999999999996, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49572560201923810, 0.19999999999999996, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.63856276669886525, 0.19999999999999996, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.76924438644867565, 0.19999999999999996, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.88973060843856466, 0.19999999999999996, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0025230471636377, 0.19999999999999996, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1102356376093103, 0.19999999999999996, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2154356555075867, 0.19999999999999996, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17581750846781172, 0.20000000000000018, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35955226882028513, 0.20000000000000018, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56020489659466499, 0.20000000000000018, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.78908196988531498, 0.20000000000000018, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0611336754143517, 0.20000000000000018, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.3956969951058884, 0.20000000000000018, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8138131612209609, 0.20000000000000018, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3256365528879561, 0.20000000000000018, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.9058704854500963, 0.20000000000000018, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler118 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.69999999999999996. +-template +-void test118() ++// Test data for k=0.20000000000000018, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7399960886656824e-16 ++// mean(f - f_Boost): 1.3877787807814457e-16 ++// variance(f - f_Boost): 1.7585404776158019e-31 ++// stddev(f - f_Boost): 4.1934955319110593e-16 ++const testcase_ellint_3 ++data119[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data118) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data118[i].k), Tp(data118[i].nu), +- Tp(data118[i].phi)); +- const Tp f0 = data118[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.80000000000000004. +-testcase_ellint_3 data119[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17317861443718541, 0.19999999999999996, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33884641598718701, 0.19999999999999996, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49204565281259494, 0.19999999999999996, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63117851188220353, 0.19999999999999996, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.75721095949544170, 0.19999999999999996, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.87245201443919118, 0.19999999999999996, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.97966584238831089, 0.19999999999999996, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0816336325174360, 0.19999999999999996, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1810223448909913, 0.19999999999999996, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17599862486281712, 0.20000000000000018, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36110007227128776, 0.20000000000000018, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56605039658567224, 0.20000000000000018, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80537523874517691, 0.20000000000000018, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1005662342414086, 0.20000000000000018, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4845340298105778, 0.20000000000000018, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0043332244969392, 0.20000000000000018, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.7052856676744761, 0.20000000000000018, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler119 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.80000000000000004. +-template +-void test119() ++// Test data for k=0.20000000000000018, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1718503329017390e-16 ++// mean(f - f_Boost): 2.3592239273284576e-16 ++// variance(f - f_Boost): 2.9295534376290287e-31 ++// stddev(f - f_Boost): 5.4125349307224141e-16 ++const testcase_ellint_3 ++data120[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data119) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data119[i].k), Tp(data119[i].nu), +- Tp(data119[i].phi)); +- const Tp f0 = data119[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.19999999999999996, nu=0.90000000000000002. +-testcase_ellint_3 data120[] = { +- { -0.0000000000000000, 0.19999999999999996, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17300769173837280, 0.19999999999999996, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33761123827372508, 0.19999999999999996, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48845905690769426, 0.19999999999999996, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62407720017324986, 0.19999999999999996, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74578146525124289, 0.19999999999999996, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.85621583540073076, 0.19999999999999996, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.95837725988001199, 0.19999999999999996, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0551821412633928, 0.19999999999999996, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1493679916141863, 0.19999999999999996, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.20000000000000018, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17618041435044951, 0.20000000000000018, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36267207636502929, 0.20000000000000018, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57212028758237743, 0.20000000000000018, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82293323876704483, 0.20000000000000018, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1457077279880388, 0.20000000000000018, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.5967346899325681, 0.20000000000000018, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.2856537353421724, 0.20000000000000018, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.4034714304613902, 0.20000000000000018, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler120 = 2.5000000000000020e-13; + +-// Test function for k=0.19999999999999996, nu=0.90000000000000002. +-template +-void test120() ++// Test data for k=0.30000000000000004, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 2.1399221604302621e-32 ++// stddev(f - f_Boost): 1.4628472785736254e-16 ++const testcase_ellint_3 ++data121[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data120) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data120[i].k), Tp(data120[i].nu), +- Tp(data120[i].phi)); +- const Tp f0 = data120[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.0000000000000000. +-testcase_ellint_3 data121[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17461228653000102, 0.30000000000000004, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.34969146102798415, 0.30000000000000004, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52565822873726320, 0.30000000000000004, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70284226512408532, 0.30000000000000004, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.88144139195111182, 0.30000000000000004, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0614897067260523, 0.30000000000000004, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2428416824174218, 0.30000000000000004, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4251795877015925, 0.30000000000000004, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6080486199305126, 0.30000000000000004, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17461228653000099, 0.30000000000000004, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.34969146102798421, 0.30000000000000004, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52565822873726309, 0.30000000000000004, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70284226512408543, 0.30000000000000004, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.88144139195111171, 0.30000000000000004, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0614897067260520, 0.30000000000000004, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2428416824174220, 0.30000000000000004, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4251795877015929, 0.30000000000000004, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler121 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.0000000000000000. +-template +-void test121() ++// Test data for k=0.30000000000000004, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16 ++// mean(f - f_Boost): 7.2164496600635178e-17 ++// variance(f - f_Boost): 4.3555500115139682e-32 ++// stddev(f - f_Boost): 2.0869954507650391e-16 ++const testcase_ellint_3 ++data122[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data121) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data121[i].k), Tp(data121[i].nu), +- Tp(data121[i].phi)); +- const Tp f0 = data121[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.10000000000000001. +-testcase_ellint_3 data122[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17443631884814378, 0.30000000000000004, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34831316835124926, 0.30000000000000004, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52116586276523857, 0.30000000000000004, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69269385837910036, 0.30000000000000004, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.86279023163070856, 0.30000000000000004, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0315321461438265, 0.30000000000000004, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.1991449111869024, 0.30000000000000004, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3659561780923211, 0.30000000000000004, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5323534693557526, 0.30000000000000004, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17478889331392972, 0.30000000000000004, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35108939018329183, 0.30000000000000004, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53028990896115835, 0.30000000000000004, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71352417052371409, 0.30000000000000004, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.90153086032405894, 0.30000000000000004, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.0945187977283313, 0.30000000000000004, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.2920699268385683, 0.30000000000000004, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.4931243665896394, 0.30000000000000004, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.6960848815118226, 0.30000000000000004, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler122 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.10000000000000001. +-template +-void test122() ++// Test data for k=0.30000000000000004, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16 ++// mean(f - f_Boost): 6.6613381477509390e-17 ++// variance(f - f_Boost): 1.7591111235252501e-32 ++// stddev(f - f_Boost): 1.3263148659067538e-16 ++const testcase_ellint_3 ++data123[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data122) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data122[i].k), Tp(data122[i].nu), +- Tp(data122[i].phi)); +- const Tp f0 = data122[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.20000000000000001. +-testcase_ellint_3 data123[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17426098615372090, 0.30000000000000004, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34695402664689923, 0.30000000000000004, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51680555567038933, 0.30000000000000004, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68303375225260210, 0.30000000000000004, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.84540662891295026, 0.30000000000000004, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0041834051646927, 0.30000000000000004, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1599952702345711, 0.30000000000000004, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3137179520499163, 0.30000000000000004, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4663658145259875, 0.30000000000000004, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17496614335337535, 0.30000000000000004, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35250745937139372, 0.30000000000000004, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53506875002836884, 0.30000000000000004, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72479106622248191, 0.30000000000000004, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.92326451535891607, 0.30000000000000004, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1312092060698349, 0.30000000000000004, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3481473154592321, 0.30000000000000004, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.5722049569662750, 0.30000000000000004, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler123 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.20000000000000001. +-template +-void test123() ++// Test data for k=0.30000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 ++const testcase_ellint_3 ++data124[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data123) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data123[i].k), Tp(data123[i].nu), +- Tp(data123[i].phi)); +- const Tp f0 = data123[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.29999999999999999. +-testcase_ellint_3 data124[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17408628437042845, 0.30000000000000004, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34561356761638401, 0.30000000000000004, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51257058617875850, 0.30000000000000004, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67382207124602866, 0.30000000000000004, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.82914751587825131, 0.30000000000000004, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.97907434814374950, 0.30000000000000004, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1246399297351584, 0.30000000000000004, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2671793970398146, 0.30000000000000004, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4081767433479089, 0.30000000000000004, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17514404084107435, 0.30000000000000004, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35394619108645647, 0.30000000000000004, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54000325463372689, 0.30000000000000004, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.73670193794067651, 0.30000000000000004, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.94689345491722177, 0.30000000000000004, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1723274608389140, 0.30000000000000004, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4128880552936287, 0.30000000000000004, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6659010047449661, 0.30000000000000004, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler124 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.29999999999999999. +-template +-void test124() ++// Test data for k=0.30000000000000004, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.8245832308692586e-31 ++// stddev(f - f_Boost): 4.2715140534349863e-16 ++const testcase_ellint_3 ++data125[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data124) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data124[i].k), Tp(data124[i].nu), +- Tp(data124[i].phi)); +- const Tp f0 = data124[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.40000000000000002. +-testcase_ellint_3 data125[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17391220945982730, 0.30000000000000004, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34429133937639689, 0.30000000000000004, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50845471668581632, 0.30000000000000004, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66502347027873854, 0.30000000000000004, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.81389191978012254, 0.30000000000000004, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.95590618002140593, 0.30000000000000004, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.0924915195213121, 0.30000000000000004, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2253651604038058, 0.30000000000000004, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3563643538969761, 0.30000000000000004, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17532259000954434, 0.30000000000000004, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35540612770983693, 0.30000000000000004, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54510265552938919, 0.30000000000000004, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.74932476310965057, 0.30000000000000004, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.97272793583093109, 0.30000000000000004, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2188928987074241, 0.30000000000000004, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.4888771674085941, 0.30000000000000004, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.7794558498219191, 0.30000000000000004, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.0822121773175528, 0.30000000000000004, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler125 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.40000000000000002. +-template +-void test125() ++// Test data for k=0.30000000000000004, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16 ++// mean(f - f_Boost): 4.7184478546569152e-17 ++// variance(f - f_Boost): 1.9448563670505968e-32 ++// stddev(f - f_Boost): 1.3945810722401896e-16 ++const testcase_ellint_3 ++data126[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data125) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data125[i].k), Tp(data125[i].nu), +- Tp(data125[i].phi)); +- const Tp f0 = data125[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.50000000000000000. +-testcase_ellint_3 data126[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17373875742088235, 0.30000000000000004, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34298690571124157, 0.30000000000000004, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50445214859646936, 0.30000000000000004, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65660648352418516, 0.30000000000000004, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.79953670639287289, 0.30000000000000004, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.93443393926588558, 0.30000000000000004, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0630838369016911, 0.30000000000000004, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.1875197325653026, 0.30000000000000004, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3098448759814960, 0.30000000000000004, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17550179513158179, 0.30000000000000004, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35688783251681200, 0.30000000000000004, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55037700010142798, 0.30000000000000004, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.76273839789895992, 0.30000000000000004, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0011570518830419, 0.30000000000000004, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2722987414055109, 0.30000000000000004, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.5799590511080066, 0.30000000000000004, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.9212367220124293, 0.30000000000000004, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.2833505881933971, 0.30000000000000004, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler126 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.50000000000000000. +-template +-void test126() ++// Test data for k=0.30000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16 ++// mean(f - f_Boost): 1.9428902930940239e-16 ++// variance(f - f_Boost): 1.5987596229703424e-31 ++// stddev(f - f_Boost): 3.9984492281012430e-16 ++const testcase_ellint_3 ++data127[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data126) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data126[i].k), Tp(data126[i].nu), +- Tp(data126[i].phi)); +- const Tp f0 = data126[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.59999999999999998. +-testcase_ellint_3 data127[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17356592428950826, 0.30000000000000004, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34169984536697379, 0.30000000000000004, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50055748266498457, 0.30000000000000004, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.64854298527106768, 0.30000000000000004, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.78599329284207431, 0.30000000000000004, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.91445452089128221, 0.30000000000000004, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0360412952290587, 0.30000000000000004, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1530473919778639, 0.30000000000000004, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2677758800420666, 0.30000000000000004, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17568166052076745, 0.30000000000000004, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35839189074731181, 0.30000000000000004, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55583724744367558, 0.30000000000000004, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.77703498090888223, 0.30000000000000004, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0326772113675962, 0.30000000000000004, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3345139983717369, 0.30000000000000004, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.6921742922838403, 0.30000000000000004, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.1056608968472186, 0.30000000000000004, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.5560975528589061, 0.30000000000000004, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler127 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.59999999999999998. +-template +-void test127() ++// Test data for k=0.30000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16 ++// mean(f - f_Boost): 2.1094237467877973e-16 ++// variance(f - f_Boost): 3.0253363535298873e-31 ++// stddev(f - f_Boost): 5.5003057674368314e-16 ++const testcase_ellint_3 ++data128[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data127) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data127[i].k), Tp(data127[i].nu), +- Tp(data127[i].phi)); +- const Tp f0 = data127[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.69999999999999996. +-testcase_ellint_3 data128[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17339370613812227, 0.30000000000000004, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34042975138455933, 0.30000000000000004, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49676568368075985, 0.30000000000000004, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64080774055753720, 0.30000000000000004, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.77318507779667278, 0.30000000000000004, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.89579782346548631, 0.30000000000000004, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0110573286052202, 0.30000000000000004, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1214710972949633, 0.30000000000000004, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2294913236274980, 0.30000000000000004, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17586219053197988, 0.30000000000000004, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.35991891074557669, 0.30000000000000004, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56149538019961731, 0.30000000000000004, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.79232303189667685, 0.30000000000000004, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0679345542878826, 0.30000000000000004, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4084400085913955, 0.30000000000000004, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8357382859296454, 0.30000000000000004, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.3604197996171519, 0.30000000000000004, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 2.9562123549913872, 0.30000000000000004, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler128 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.69999999999999996. +-template +-void test128() ++// Test data for k=0.30000000000000004, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16 ++// mean(f - f_Boost): 3.4416913763379854e-16 ++// variance(f - f_Boost): 4.3461914185990199e-31 ++// stddev(f - f_Boost): 6.5925650687718054e-16 ++const testcase_ellint_3 ++data129[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data128) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data128[i].k), Tp(data128[i].nu), +- Tp(data128[i].phi)); +- const Tp f0 = data128[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.80000000000000004. +-testcase_ellint_3 data129[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17322209907520361, 0.30000000000000004, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33917623046949996, 0.30000000000000004, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49307204894329176, 0.30000000000000004, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63337802830291723, 0.30000000000000004, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.76104540997689407, 0.30000000000000004, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.87832009635450736, 0.30000000000000004, 0.80000000000000004, +- 1.0471975511965976 }, +- { 0.98787879723171790, 0.30000000000000004, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.0924036340069336, 0.30000000000000004, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.1944567571590046, 0.30000000000000004, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17604338956191670, 0.30000000000000004, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36146952517410791, 0.30000000000000004, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56736453393774644, 0.30000000000000004, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.80873149979001091, 0.30000000000000004, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1077903069860620, 0.30000000000000004, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.4985874311132998, 0.30000000000000004, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0298167266724954, 0.30000000000000004, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.7483929054985432, 0.30000000000000004, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.6283050484567170, 0.30000000000000004, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler129 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.80000000000000004. +-template +-void test129() ++// Test data for k=0.30000000000000004, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16 ++// mean(f - f_Boost): 4.1633363423443370e-16 ++// variance(f - f_Boost): 2.2835347143080263e-31 ++// stddev(f - f_Boost): 4.7786344433405093e-16 ++const testcase_ellint_3 ++data130[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data129) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data129[i].k), Tp(data129[i].nu), +- Tp(data129[i].phi)); +- const Tp f0 = data129[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.30000000000000004, nu=0.90000000000000002. +-testcase_ellint_3 data130[] = { +- { -0.0000000000000000, 0.30000000000000004, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17305109924485948, 0.30000000000000004, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33793890239556984, 0.30000000000000004, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.48947218005089738, 0.30000000000000004, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62623332340775151, 0.30000000000000004, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.74951596581511148, 0.30000000000000004, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.86189886597756005, 0.30000000000000004, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.96629451153092005, 0.30000000000000004, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0655269133492680, 0.30000000000000004, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1622376896064912, 0.30000000000000004, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.30000000000000004, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17622526204962433, 0.30000000000000004, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36304439230777141, 0.30000000000000004, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57345914744719195, 0.30000000000000004, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.82641512928845162, 0.30000000000000004, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1534256210757743, 0.30000000000000004, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6124900353411677, 0.30000000000000004, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.3165905514845089, 0.30000000000000004, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.4625619526539824, 0.30000000000000004, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.1479514944016787, 0.30000000000000004, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler130 = 2.5000000000000020e-13; + +-// Test function for k=0.30000000000000004, nu=0.90000000000000002. +-template +-void test130() ++// Test data for k=0.40000000000000013, nu=0.0000000000000000. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0831445028587608e-15 ++// mean(f - f_Boost): 1.7486012637846215e-16 ++// variance(f - f_Boost): 3.1664095331106078e-31 ++// stddev(f - f_Boost): 5.6270858649132121e-16 ++const testcase_ellint_3 ++data131[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data130) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data130[i].k), Tp(data130[i].nu), +- Tp(data130[i].phi)); +- const Tp f0 = data130[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.0000000000000000. +-testcase_ellint_3 data131[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17467414669441531, 0.39999999999999991, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35018222772483443, 0.39999999999999991, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52729015917508748, 0.39999999999999991, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.70662374407341255, 0.39999999999999991, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.88859210497602170, 0.39999999999999991, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0733136290471379, 0.39999999999999991, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2605612170157061, 0.39999999999999991, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4497513956433437, 0.39999999999999991, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17467414669441528, 0.40000000000000013, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35018222772483443, 0.40000000000000013, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52729015917508748, 0.40000000000000013, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.70662374407341244, 0.40000000000000013, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.88859210497602159, 0.40000000000000013, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0733136290471381, 0.40000000000000013, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2605612170157066, 0.40000000000000013, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4497513956433439, 0.40000000000000013, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler131 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.0000000000000000. +-template +-void test131() ++// Test data for k=0.40000000000000013, nu=0.10000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0263824105456986e-15 ++// mean(f - f_Boost): 1.7486012637846215e-16 ++// variance(f - f_Boost): 3.1664095331106078e-31 ++// stddev(f - f_Boost): 5.6270858649132121e-16 ++const testcase_ellint_3 ++data132[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data131) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data131[i].k), Tp(data131[i].nu), +- Tp(data131[i].phi)); +- const Tp f0 = data131[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.10000000000000001. +-testcase_ellint_3 data132[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17449806706684673, 0.39999999999999991, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34880048623856075, 0.39999999999999991, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52277322065757403, 0.39999999999999991, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.69638072056918376, 0.39999999999999991, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.86968426619831540, 0.39999999999999991, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0428044206578095, 0.39999999999999991, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2158651158274378, 0.39999999999999991, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.3889447129893322, 0.39999999999999991, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17485086590796767, 0.40000000000000013, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35158366412506992, 0.40000000000000013, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53194731675711726, 0.40000000000000013, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.71740615528010931, 0.40000000000000013, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.90896157773487030, 0.40000000000000013, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1069605483834348, 0.40000000000000013, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3109353428823001, 0.40000000000000013, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.5195460789903450, 0.40000000000000013, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler132 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.10000000000000001. +-template +-void test132() ++// Test data for k=0.40000000000000013, nu=0.20000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.6644296021947179e-16 ++// mean(f - f_Boost): 2.0816681711721685e-16 ++// variance(f - f_Boost): 3.0360740073926687e-31 ++// stddev(f - f_Boost): 5.5100580826273227e-16 ++const testcase_ellint_3 ++data133[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data132) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data132[i].k), Tp(data132[i].nu), +- Tp(data132[i].phi)); +- const Tp f0 = data132[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.20000000000000001. +-testcase_ellint_3 data133[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17432262290723399, 0.39999999999999991, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34743795258968596, 0.39999999999999991, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.51838919472805123, 0.39999999999999991, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.68663134739057918, 0.39999999999999991, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.85206432981833979, 0.39999999999999991, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0149595349004430, 0.39999999999999991, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1758349405464676, 0.39999999999999991, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3353337673882635, 0.39999999999999991, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17502822886437389, 0.40000000000000013, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35300530062530805, 0.40000000000000013, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53675259548210896, 0.40000000000000013, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.72878006428676934, 0.40000000000000013, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.93100219010583574, 0.40000000000000013, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1443487271187611, 0.40000000000000013, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3683427764108813, 0.40000000000000013, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6008221459300933, 0.40000000000000013, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8380358826317627, 0.40000000000000013, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler133 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.20000000000000001. +-template +-void test133() ++// Test data for k=0.40000000000000013, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0271556462838835e-16 ++// mean(f - f_Boost): 2.0816681711721685e-16 ++// variance(f - f_Boost): 3.0360740073926687e-31 ++// stddev(f - f_Boost): 5.5100580826273227e-16 ++const testcase_ellint_3 ++data134[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data133) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data133[i].k), Tp(data133[i].nu), +- Tp(data133[i].phi)); +- const Tp f0 = data133[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.29999999999999999. +-testcase_ellint_3 data134[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17414781013591543, 0.39999999999999991, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34609415696777285, 0.39999999999999991, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51413131295862546, 0.39999999999999991, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.67733527622935630, 0.39999999999999991, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.83558675182733266, 0.39999999999999991, 0.29999999999999999, +- 0.87266462599716477 }, +- { 0.98940140808865906, 0.39999999999999991, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1396968797728058, 0.39999999999999991, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.2875920037865087, 0.39999999999999991, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17520623975982899, 0.40000000000000013, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35444766141612105, 0.40000000000000013, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54171455841536009, 0.40000000000000013, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.74080517001084012, 0.40000000000000013, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.95496950509296574, 0.40000000000000013, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.1862627879844718, 0.40000000000000013, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4346501803799458, 0.40000000000000013, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.6971744798077699, 0.40000000000000013, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 1.9677924132520139, 0.40000000000000013, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler134 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.29999999999999999. +-template +-void test134() ++// Test data for k=0.40000000000000013, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3436329231972794e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 2.9507053793392374e-31 ++// stddev(f - f_Boost): 5.4320395611033958e-16 ++const testcase_ellint_3 ++data135[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data134) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data134[i].k), Tp(data134[i].nu), +- Tp(data134[i].phi)); +- const Tp f0 = data134[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.40000000000000002. +-testcase_ellint_3 data135[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17397362471112710, 0.39999999999999991, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34476864603333196, 0.39999999999999991, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.50999329415379357, 0.39999999999999991, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.66845674551396017, 0.39999999999999991, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.82012848346231748, 0.39999999999999991, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.96582449258349057, 0.39999999999999991, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1068473749476286, 0.39999999999999991, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2447132729159986, 0.39999999999999991, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17538490283034375, 0.40000000000000013, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35591129064319948, 0.40000000000000013, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54684250413264535, 0.40000000000000013, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.75355027742668290, 0.40000000000000013, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.98117935026780634, 0.40000000000000013, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2337464222030736, 0.40000000000000013, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5125183419289221, 0.40000000000000013, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.8140224451130313, 0.40000000000000013, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.1289968719280026, 0.40000000000000013, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler135 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.40000000000000002. +-template +-void test135() ++// Test data for k=0.40000000000000013, nu=0.50000000000000000. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.7013794022122431e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 ++const testcase_ellint_3 ++data136[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data135) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data135[i].k), Tp(data135[i].nu), +- Tp(data135[i].phi)); +- const Tp f0 = data135[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.50000000000000000. +-testcase_ellint_3 data136[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17380006262854139, 0.39999999999999991, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34346098216756610, 0.39999999999999991, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50596929935059420, 0.39999999999999991, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.65996392089131262, 0.39999999999999991, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.80558463511364786, 0.39999999999999991, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.94397834522857704, 0.39999999999999991, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0768075114108115, 0.39999999999999991, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2059184624251329, 0.39999999999999991, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17556422235224273, 0.40000000000000013, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35739675341763921, 0.40000000000000013, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55214655195037188, 0.40000000000000013, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.76709520942047438, 0.40000000000000013, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0100278761577499, 0.40000000000000013, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.2882265661384342, 0.40000000000000013, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6059059780051876, 0.40000000000000013, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 1.9600182740224081, 0.40000000000000013, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler136 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.50000000000000000. +-template +-void test136() ++// Test data for k=0.40000000000000013, nu=0.60000000000000009. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.4792115132836117e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 4.8893797490374802e-31 ++// stddev(f - f_Boost): 6.9924099915819294e-16 ++const testcase_ellint_3 ++data137[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data136) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data136[i].k), Tp(data136[i].nu), +- Tp(data136[i].phi)); +- const Tp f0 = data136[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.59999999999999998. +-testcase_ellint_3 data137[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17362711992081248, 0.39999999999999991, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34217074276403953, 0.39999999999999991, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50205389185761617, 0.39999999999999991, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.65182834920372745, 0.39999999999999991, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.79186512820565136, 0.39999999999999991, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.92365535916287134, 0.39999999999999991, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0491915663957907, 0.39999999999999991, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1705934291745104, 0.39999999999999991, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17574420264267029, 0.40000000000000013, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35890463689046265, 0.40000000000000013, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55763773975194486, 0.40000000000000013, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.78153324227761267, 0.40000000000000013, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0420205885765887, 0.40000000000000013, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3517205230381770, 0.40000000000000013, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.7210360970313896, 0.40000000000000013, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.1500780510169246, 0.40000000000000013, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.6186940209850191, 0.40000000000000013, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler137 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.59999999999999998. +-template +-void test137() ++// Test data for k=0.40000000000000013, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.8573292020719759e-16 ++// mean(f - f_Boost): 2.2759572004815707e-16 ++// variance(f - f_Boost): 2.9613098824898137e-31 ++// stddev(f - f_Boost): 5.4417918762938862e-16 ++const testcase_ellint_3 ++data138[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data137) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data137[i].k), Tp(data137[i].nu), +- Tp(data137[i].phi)); +- const Tp f0 = data137[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.69999999999999996. +-testcase_ellint_3 data138[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17345479265712871, 0.39999999999999991, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34089751955950354, 0.39999999999999991, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.49824200167361343, 0.39999999999999991, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64402450341199413, 0.39999999999999991, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.77889207804122873, 0.39999999999999991, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.90468169720957992, 0.39999999999999991, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0236847823692916, 0.39999999999999991, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1382465247425164, 0.39999999999999991, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17592484806010436, 0.40000000000000013, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36043555139631439, 0.40000000000000013, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56332813669944881, 0.40000000000000013, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.79697424562157548, 0.40000000000000013, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0778155987523672, 0.40000000000000013, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4272018169896268, 0.40000000000000013, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.8684377907453382, 0.40000000000000013, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.4128677409207473, 0.40000000000000013, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler138 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.69999999999999996. +-template +-void test138() ++// Test data for k=0.40000000000000013, nu=0.80000000000000004. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.5273712585384737e-16 ++// mean(f - f_Boost): 4.5241588253475131e-16 ++// variance(f - f_Boost): 1.1866477068555882e-30 ++// stddev(f - f_Boost): 1.0893336067778265e-15 ++const testcase_ellint_3 ++data139[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data138) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data138[i].k), Tp(data138[i].nu), +- Tp(data138[i].phi)); +- const Tp f0 = data138[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.80000000000000004. +-testcase_ellint_3 data139[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17328307694277156, 0.39999999999999991, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.33964091800132007, 0.39999999999999991, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49452889372467451, 0.39999999999999991, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.63652940095937327, 0.39999999999999991, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.76659772511159097, 0.39999999999999991, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.88691047977338111, 0.39999999999999991, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0000273200611640, 0.39999999999999991, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1084787902188007, 0.39999999999999991, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17610616300487833, 0.40000000000000013, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36199013167171978, 0.40000000000000013, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.56923097361842434, 0.40000000000000013, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.81354878456624347, 0.40000000000000013, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1182902719261825, 0.40000000000000013, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5192950589409022, 0.40000000000000013, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.0678761710223981, 0.40000000000000013, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.8135222249879788, 0.40000000000000013, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.7289548002199902, 0.40000000000000013, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler139 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.80000000000000004. +-template +-void test139() ++// Test data for k=0.40000000000000013, nu=0.90000000000000002. ++// max(|f - f_Boost|): 6.2172489379008766e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.1718379478872251e-15 ++// mean(f - f_Boost): 8.4099394115355610e-16 ++// variance(f - f_Boost): 3.5684096037099424e-30 ++// stddev(f - f_Boost): 1.8890234523980751e-15 ++const testcase_ellint_3 ++data140[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data139) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data139[i].k), Tp(data139[i].nu), +- Tp(data139[i].phi)); +- const Tp f0 = data139[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.39999999999999991, nu=0.90000000000000002. +-testcase_ellint_3 data140[] = { +- { -0.0000000000000000, 0.39999999999999991, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17311196891868130, 0.39999999999999991, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33840055664911906, 0.39999999999999991, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49091013944075340, 0.39999999999999991, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.62932228186809591, 0.39999999999999991, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.75492278323019801, 0.39999999999999991, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.87021659043854294, 0.39999999999999991, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.97800245228239246, 0.39999999999999991, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.0809625773173694, 0.39999999999999991, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.40000000000000013, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17628815191971123, 0.40000000000000013, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36356903815378772, 0.40000000000000013, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57536079447000310, 0.40000000000000013, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.83141355850172571, 0.40000000000000013, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1646481598721361, 0.40000000000000013, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6357275034001995, 0.40000000000000013, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.3628787566572402, 0.40000000000000013, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.5521010369134962, 0.40000000000000013, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.3055535102872513, 0.40000000000000013, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler140 = 2.5000000000000020e-13; + +-// Test function for k=0.39999999999999991, nu=0.90000000000000002. +-template +-void test140() ++// Test data for k=0.50000000000000000, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.5893058141206173e-32 ++// stddev(f - f_Boost): 1.6091320064309879e-16 ++const testcase_ellint_3 ++data141[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data140) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data140[i].k), Tp(data140[i].nu), +- Tp(data140[i].phi)); +- const Tp f0 = data140[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.0000000000000000. +-testcase_ellint_3 data141[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17475385514035785, 0.50000000000000000, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35081868470101585, 0.50000000000000000, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.52942862705190585, 0.50000000000000000, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.71164727562630326, 0.50000000000000000, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.89824523594227768, 0.50000000000000000, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.0895506700518851, 0.50000000000000000, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.2853005857432933, 0.50000000000000000, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.4845545520549484, 0.50000000000000000, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17475385514035785, 0.50000000000000000, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35081868470101579, 0.50000000000000000, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.52942862705190574, 0.50000000000000000, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.71164727562630326, 0.50000000000000000, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.89824523594227768, 0.50000000000000000, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.0895506700518853, 0.50000000000000000, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.2853005857432933, 0.50000000000000000, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.4845545520549488, 0.50000000000000000, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler141 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.0000000000000000. +-template +-void test141() ++// Test data for k=0.50000000000000000, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 ++const testcase_ellint_3 ++data142[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data141) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data141[i].k), Tp(data141[i].nu), +- Tp(data141[i].phi)); +- const Tp f0 = data141[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.10000000000000001. +-testcase_ellint_3 data142[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17457763120814676, 0.50000000000000000, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.34943246340849154, 0.50000000000000000, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52487937869610801, 0.50000000000000000, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.70127785096388395, 0.50000000000000000, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.87898815988624479, 0.50000000000000000, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0582764576094172, 0.50000000000000000, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2391936844060207, 0.50000000000000000, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.4214793542995841, 0.50000000000000000, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17493071928248824, 0.50000000000000000, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35222467688034798, 0.50000000000000000, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53411928652008112, 0.50000000000000000, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.72256398117177589, 0.50000000000000000, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.91899583232771009, 0.50000000000000000, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1240549163055360, 0.50000000000000000, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3372938086286021, 0.50000000000000000, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.5570024469132429, 0.50000000000000000, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.7803034946545480, 0.50000000000000000, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler142 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.10000000000000001. +-template +-void test142() ++// Test data for k=0.50000000000000000, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 5.0311947683004831e-32 ++// stddev(f - f_Boost): 2.2430324938128922e-16 ++const testcase_ellint_3 ++data143[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data142) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data142[i].k), Tp(data142[i].nu), +- Tp(data142[i].phi)); +- const Tp f0 = data142[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.20000000000000001. +-testcase_ellint_3 data143[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17440204336345433, 0.50000000000000000, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34806552388338824, 0.50000000000000000, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52046416757129821, 0.50000000000000000, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.69140924550993876, 0.50000000000000000, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.86104678636125520, 0.50000000000000000, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0297439459053981, 0.50000000000000000, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.1979214112912036, 0.50000000000000000, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.3659033858648930, 0.50000000000000000, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17510822779582402, 0.50000000000000000, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35365094725531487, 0.50000000000000000, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.53895933237328697, 0.50000000000000000, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.73408090840070794, 0.50000000000000000, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.94145442818535396, 0.50000000000000000, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1624120186296487, 0.50000000000000000, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.3965823372867114, 0.50000000000000000, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6414308440430099, 0.50000000000000000, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.8922947612264018, 0.50000000000000000, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler143 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.20000000000000001. +-template +-void test143() ++// Test data for k=0.50000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 8.5027191584278157e-32 ++// stddev(f - f_Boost): 2.9159422419567599e-16 ++const testcase_ellint_3 ++data144[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data143) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data143[i].k), Tp(data143[i].nu), +- Tp(data143[i].phi)); +- const Tp f0 = data143[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.29999999999999999. +-testcase_ellint_3 data144[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17422708752228896, 0.50000000000000000, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34671739434855858, 0.50000000000000000, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51617616305641889, 0.50000000000000000, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.68200047612545178, 0.50000000000000000, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.84427217869498372, 0.50000000000000000, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0035637821389782, 0.50000000000000000, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1606800483933113, 0.50000000000000000, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.3164407134643459, 0.50000000000000000, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17528638488102041, 0.50000000000000000, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35509802222332720, 0.50000000000000000, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54395740731866193, 0.50000000000000000, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.74625871438752667, 0.50000000000000000, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.96588271186092023, 0.50000000000000000, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2054319584357329, 0.50000000000000000, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.4651077994832871, 0.50000000000000000, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.7416018368052644, 0.50000000000000000, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler144 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.29999999999999999. +-template +-void test144() ++// Test data for k=0.50000000000000000, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 9.0809736800018602e-32 ++// stddev(f - f_Boost): 3.0134653938616686e-16 ++const testcase_ellint_3 ++data145[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data144) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data144[i].k), Tp(data144[i].nu), +- Tp(data144[i].phi)); +- const Tp f0 = data144[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.40000000000000002. +-testcase_ellint_3 data145[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17405275963859917, 0.50000000000000000, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34538761957029329, 0.50000000000000000, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51200902646603919, 0.50000000000000000, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.67301522212868792, 0.50000000000000000, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.82853844466313320, 0.50000000000000000, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.97942097862681488, 0.50000000000000000, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1268429801220616, 0.50000000000000000, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.2720406704533922, 0.50000000000000000, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17546519477859268, 0.50000000000000000, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35656644822531680, 0.50000000000000000, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.54912289677411319, 0.50000000000000000, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.75916731611690047, 0.50000000000000000, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 0.99260415631328214, 0.50000000000000000, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2541925856918670, 0.50000000000000000, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5456393705347609, 0.50000000000000000, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.8631904972952076, 0.50000000000000000, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler145 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.40000000000000002. +-template +-void test145() ++// Test data for k=0.50000000000000000, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 ++const testcase_ellint_3 ++data146[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data145) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data145[i].k), Tp(data145[i].nu), +- Tp(data145[i].phi)); +- const Tp f0 = data145[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.50000000000000000. +-testcase_ellint_3 data146[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17387905570381157, 0.50000000000000000, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34407576010465207, 0.50000000000000000, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.50795686560160835, 0.50000000000000000, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.66442115453330175, 0.50000000000000000, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.81373829119355345, 0.50000000000000000, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.95705743313235825, 0.50000000000000000, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.0959131991362556, 0.50000000000000000, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2318900529754597, 0.50000000000000000, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17564466176941509, 0.50000000000000000, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35805679276065394, 0.50000000000000000, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55446601496200032, 0.50000000000000000, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.77288783578259013, 0.50000000000000000, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0220246013918972, 0.50000000000000000, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3101681612463965, 0.50000000000000000, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6422994881851025, 0.50000000000000000, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.0152636030998816, 0.50000000000000000, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler146 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.50000000000000000. +-template +-void test146() ++// Test data for k=0.50000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16 ++// mean(f - f_Boost): 1.3322676295501878e-16 ++// variance(f - f_Boost): 1.7749370367472766e-31 ++// stddev(f - f_Boost): 4.2130001622920411e-16 ++const testcase_ellint_3 ++data147[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data146) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data146[i].k), Tp(data146[i].nu), +- Tp(data146[i].phi)); +- const Tp f0 = data146[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.59999999999999998. +-testcase_ellint_3 data147[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17370597174637581, 0.50000000000000000, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34278139158591414, 0.50000000000000000, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50401419439302719, 0.50000000000000000, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.65618938076167221, 0.50000000000000000, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.79977959248855424, 0.50000000000000000, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.93625925190753545, 0.50000000000000000, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0674905658379710, 0.50000000000000000, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.1953481298023048, 0.50000000000000000, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17582479017522740, 0.50000000000000000, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.35956964546660036, 0.50000000000000000, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.55999790372984193, 0.50000000000000000, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.78751507911209895, 0.50000000000000000, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0546620505035220, 0.50000000000000000, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.3754438357425935, 0.50000000000000000, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.7615727400820127, 0.50000000000000000, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.2134638067565242, 0.50000000000000000, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler147 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.59999999999999998. +-template +-void test147() ++// Test data for k=0.50000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 1.9996383743576116e-32 ++// stddev(f - f_Boost): 1.4140857026211713e-16 ++const testcase_ellint_3 ++data148[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data147) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data147[i].k), Tp(data147[i].nu), +- Tp(data147[i].phi)); +- const Tp f0 = data147[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.69999999999999996. +-testcase_ellint_3 data148[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17353350383131641, 0.50000000000000000, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34150410405436771, 0.50000000000000000, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50017589696443487, 0.50000000000000000, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.64829398188419962, 0.50000000000000000, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.78658270782402073, 0.50000000000000000, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.91684738336675053, 0.50000000000000000, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0412486789555937, 0.50000000000000000, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1619021847612001, 0.50000000000000000, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17600558435914915, 0.50000000000000000, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36110561926726259, 0.50000000000000000, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56573074641137111, 0.50000000000000000, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.80316073084237205, 0.50000000000000000, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.0911910688131461, 0.50000000000000000, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4530946406380640, 0.50000000000000000, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.9144386536785372, 0.50000000000000000, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.4878788958234970, 0.50000000000000000, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.1433945297859225, 0.50000000000000000, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler148 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.69999999999999996. +-template +-void test148() ++// Test data for k=0.50000000000000000, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 ++const testcase_ellint_3 ++data149[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data148) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data148[i].k), Tp(data148[i].nu), +- Tp(data148[i].phi)); +- const Tp f0 = data148[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.80000000000000004. +-testcase_ellint_3 data149[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17336164805979126, 0.50000000000000000, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34024350132086773, 0.50000000000000000, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49643719555734084, 0.50000000000000000, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.64071162456976150, 0.50000000000000000, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.77407836177211908, 0.50000000000000000, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.89867058251905652, 0.50000000000000000, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0169181822134912, 0.50000000000000000, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1311363312779448, 0.50000000000000000, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17618704872620228, 0.50000000000000000, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36266535159745827, 0.50000000000000000, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57167789954529158, 0.50000000000000000, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.81995752984315018, 0.50000000000000000, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1325112162158122, 0.50000000000000000, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5479055930718042, 0.50000000000000000, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.1215243941010486, 0.50000000000000000, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 2.9069405767650132, 0.50000000000000000, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 3.8750701888108066, 0.50000000000000000, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler149 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.80000000000000004. +-template +-void test149() ++// Test data for k=0.50000000000000000, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16 ++// mean(f - f_Boost): 3.5249581031848718e-16 ++// variance(f - f_Boost): 2.5029385557256515e-31 ++// stddev(f - f_Boost): 5.0029376927217987e-16 ++const testcase_ellint_3 ++data150[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data149) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data149[i].k), Tp(data149[i].nu), +- Tp(data149[i].phi)); +- const Tp f0 = data149[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.50000000000000000, nu=0.90000000000000002. +-testcase_ellint_3 data150[] = { +- { -0.0000000000000000, 0.50000000000000000, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17319040056865681, 0.50000000000000000, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33899920036578557, 0.50000000000000000, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49279362182695186, 0.50000000000000000, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.63342123379746151, 0.50000000000000000, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.76220595179550321, 0.50000000000000000, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.88160004743532294, 0.50000000000000000, 0.90000000000000002, +- 1.0471975511965976 }, +- { 0.99427448642310134, 0.50000000000000000, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1027091512470093, 0.50000000000000000, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.50000000000000000, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17636918772384180, 0.50000000000000000, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36424950570740700, 0.50000000000000000, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.57785404590231426, 0.50000000000000000, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.83806480521716531, 0.50000000000000000, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1798568683069752, 0.50000000000000000, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.6678766243739607, 0.50000000000000000, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.4282976450693483, 0.50000000000000000, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.6810787666126656, 0.50000000000000000, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.5355132096026454, 0.50000000000000000, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler150 = 2.5000000000000020e-13; + +-// Test function for k=0.50000000000000000, nu=0.90000000000000002. +-template +-void test150() ++// Test data for k=0.60000000000000009, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 7.8758646268991113e-33 ++// stddev(f - f_Boost): 8.8746068233466605e-17 ++const testcase_ellint_3 ++data151[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data150) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data150[i].k), Tp(data150[i].nu), +- Tp(data150[i].phi)); +- const Tp f0 = data150[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.0000000000000000. +-testcase_ellint_3 data151[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17485154362988362, 0.60000000000000009, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35160509865544326, 0.60000000000000009, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53210652578446160, 0.60000000000000009, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.71805304664485670, 0.60000000000000009, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.91082759030195970, 0.60000000000000009, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1112333229323366, 0.60000000000000009, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.3191461190365270, 0.60000000000000009, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.5332022105084775, 0.60000000000000009, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17485154362988359, 0.60000000000000009, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35160509865544320, 0.60000000000000009, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53210652578446138, 0.60000000000000009, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.71805304664485659, 0.60000000000000009, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.91082759030195981, 0.60000000000000009, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1112333229323361, 0.60000000000000009, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.3191461190365270, 0.60000000000000009, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.5332022105084779, 0.60000000000000009, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler151 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.0000000000000000. +-template +-void test151() ++// Test data for k=0.60000000000000009, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 2.2835347143080263e-33 ++// stddev(f - f_Boost): 4.7786344433405099e-17 ++const testcase_ellint_3 ++data152[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data151) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data151[i].k), Tp(data151[i].nu), +- Tp(data151[i].phi)); +- const Tp f0 = data151[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.10000000000000001. +-testcase_ellint_3 data152[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17467514275022014, 0.60000000000000009, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35021333086258255, 0.60000000000000009, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.52751664092962713, 0.60000000000000009, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.70752126971957885, 0.60000000000000009, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.89111058756112871, 0.60000000000000009, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.0789241202877773, 0.60000000000000009, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.2710800210399946, 0.60000000000000009, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.4669060574440278, 0.60000000000000009, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17502858548476194, 0.60000000000000009, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35301673150537388, 0.60000000000000009, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.53683932476326812, 0.60000000000000009, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.72914228589586771, 0.60000000000000009, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.93208036718354692, 0.60000000000000009, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1468984688863377, 0.60000000000000009, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.3733904977062528, 0.60000000000000009, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.6094225663372157, 0.60000000000000009, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.8508766487100685, 0.60000000000000009, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler152 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.10000000000000001. +-template +-void test152() ++// Test data for k=0.60000000000000009, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -2.4980018054066023e-17 ++// variance(f - f_Boost): 2.1685495635542404e-32 ++// stddev(f - f_Boost): 1.4725995937641163e-16 ++const testcase_ellint_3 ++data153[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data152) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data152[i].k), Tp(data152[i].nu), +- Tp(data152[i].phi)); +- const Tp f0 = data152[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.20000000000000001. +-testcase_ellint_3 data153[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17449937871800653, 0.60000000000000009, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34884093647346553, 0.60000000000000009, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52306221119844110, 0.60000000000000009, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.69749955678982223, 0.60000000000000009, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.87274610682416853, 0.60000000000000009, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0494620540750796, 0.60000000000000009, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.2280847305507339, 0.60000000000000009, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.4085436279696888, 0.60000000000000009, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17520627248155893, 0.60000000000000009, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35444873935437748, 0.60000000000000009, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54172310557682524, 0.60000000000000009, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.74084300280734672, 0.60000000000000009, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.95509001527006121, 0.60000000000000009, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.1865688084431796, 0.60000000000000009, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.4352978868932600, 0.60000000000000009, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.6983400371331818, 0.60000000000000009, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler153 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.20000000000000001. +-template +-void test153() ++// Test data for k=0.60000000000000009, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 ++const testcase_ellint_3 ++data154[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data153) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data153[i].k), Tp(data153[i].nu), +- Tp(data153[i].phi)); +- const Tp f0 = data153[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.29999999999999999. +-testcase_ellint_3 data154[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17432424744393935, 0.60000000000000009, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34748744127146447, 0.60000000000000009, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.51873632743924847, 0.60000000000000009, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.68794610396313127, 0.60000000000000009, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.85558070175468726, 0.60000000000000009, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0224416343605658, 0.60000000000000009, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.1893144457936788, 0.60000000000000009, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.3566435377982575, 0.60000000000000009, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17538460882640122, 0.60000000000000009, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35590165133735557, 0.60000000000000009, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.54676661152254535, 0.60000000000000009, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.75321709418305305, 0.60000000000000009, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.98012637808992920, 0.60000000000000009, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2310891277158875, 0.60000000000000009, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.5069157924585623, 0.60000000000000009, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.8039583598337940, 0.60000000000000009, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler154 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.29999999999999999. +-template +-void test154() ++// Test data for k=0.60000000000000009, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.8974839914337670e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.2849613290816465e-32 ++// stddev(f - f_Boost): 1.5116088545260797e-16 ++const testcase_ellint_3 ++data155[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data154) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data154[i].k), Tp(data154[i].nu), +- Tp(data154[i].phi)); +- const Tp f0 = data154[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.40000000000000002. +-testcase_ellint_3 data155[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17414974487670720, 0.60000000000000009, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34615238767335027, 0.60000000000000009, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51453257838108579, 0.60000000000000009, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.67882386787534410, 0.60000000000000009, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.83948470233173578, 0.60000000000000009, 0.40000000000000002, +- 0.87266462599716477 }, +- { 0.99753496200074021, 0.60000000000000009, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1541101404388487, 0.60000000000000009, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.3100911323398816, 0.60000000000000009, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17556359876533037, 0.60000000000000009, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35737601674244679, 0.60000000000000009, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55197933771320218, 0.60000000000000009, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.76633591620002905, 0.60000000000000009, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0075231136019616, 0.60000000000000009, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.2815842073813450, 0.60000000000000009, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.5911666941449827, 0.60000000000000009, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 1.9323227566025762, 0.60000000000000009, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler155 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.40000000000000002. +-template +-void test155() ++// Test data for k=0.60000000000000009, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.1397785842303966e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.5339913122479866e-32 ++// stddev(f - f_Boost): 1.2385440291923362e-16 ++const testcase_ellint_3 ++data156[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data155) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data155[i].k), Tp(data155[i].nu), +- Tp(data155[i].phi)); +- const Tp f0 = data155[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.50000000000000000. +-testcase_ellint_3 data156[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17397586700252810, 0.60000000000000009, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34483533397138516, 0.60000000000000009, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51044500461706499, 0.60000000000000009, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.67009988034712675, 0.60000000000000009, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.82434762375735193, 0.60000000000000009, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.97447346702799043, 0.60000000000000009, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.1219494000522143, 0.60000000000000009, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.2680242605954488, 0.60000000000000009, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17574324658480217, 0.60000000000000009, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35887240603169313, 0.60000000000000009, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.55737161826345261, 0.60000000000000009, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.78028227313077458, 0.60000000000000009, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0376989776486290, 0.60000000000000009, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3395933991042928, 0.60000000000000009, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.6924049626591784, 0.60000000000000009, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.0931011856518920, 0.60000000000000009, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler156 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.50000000000000000. +-template +-void test156() ++// Test data for k=0.60000000000000009, nu=0.60000000000000009. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16 ++// mean(f - f_Boost): 1.1934897514720432e-16 ++// variance(f - f_Boost): 1.7585404776158019e-33 ++// stddev(f - f_Boost): 4.1934955319110598e-17 ++const testcase_ellint_3 ++data157[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data156) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data156[i].k), Tp(data156[i].nu), +- Tp(data156[i].phi)); +- const Tp f0 = data156[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.59999999999999998. +-testcase_ellint_3 data157[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17380260984469356, 0.60000000000000009, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34353585361777839, 0.60000000000000009, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50646805774321402, 0.60000000000000009, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.66174468108625517, 0.60000000000000009, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.81007462280278408, 0.60000000000000009, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.95303466945718773, 0.60000000000000009, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.0924118588677503, 0.60000000000000009, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.2297640574847937, 0.60000000000000009, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17592355661219386, 0.60000000000000009, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36039141192661606, 0.60000000000000009, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.56295472636903854, 0.60000000000000009, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.79515295130165986, 0.60000000000000009, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0711886441942242, 0.60000000000000009, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.4072952835139891, 0.60000000000000009, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.8174863977376825, 0.60000000000000009, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.3029921578542232, 0.60000000000000009, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 2.8388723099514972, 0.60000000000000009, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler157 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.59999999999999998. +-template +-void test157() ++// Test data for k=0.60000000000000009, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.0027679235921772e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.2849613290816465e-32 ++// stddev(f - f_Boost): 1.5116088545260797e-16 ++const testcase_ellint_3 ++data158[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data157) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data157[i].k), Tp(data157[i].nu), +- Tp(data157[i].phi)); +- const Tp f0 = data157[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.69999999999999996. +-testcase_ellint_3 data158[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17362996946312009, 0.60000000000000009, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34225353454870588, 0.60000000000000009, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50259656397799546, 0.60000000000000009, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.65373184496628944, 0.60000000000000009, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.79658372884056439, 0.60000000000000009, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.93303240100245466, 0.60000000000000009, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0651547944716557, 0.60000000000000009, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.1947676204853441, 0.60000000000000009, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.3232737468822811, 0.60000000000000009, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17610453321631936, 0.60000000000000009, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36193365056369764, 0.60000000000000009, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.56874098962268527, 0.60000000000000009, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.81106198671477181, 0.60000000000000009, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1086886419010082, 0.60000000000000009, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.4879048567239257, 0.60000000000000009, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 1.9780310073615925, 0.60000000000000009, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.5941545586772712, 0.60000000000000009, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler158 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.69999999999999996. +-template +-void test158() ++// Test data for k=0.60000000000000009, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 7.3044933435043190e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 ++const testcase_ellint_3 ++data159[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data158) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data158[i].k), Tp(data158[i].nu), +- Tp(data158[i].phi)); +- const Tp f0 = data158[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.80000000000000004. +-testcase_ellint_3 data159[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17345794195390687, 0.60000000000000009, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34098797854531027, 0.60000000000000009, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.49882569168826230, 0.60000000000000009, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.64603758566475511, 0.60000000000000009, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.78380365594769730, 0.60000000000000009, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.91430946255611223, 0.60000000000000009, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0398955217270607, 0.60000000000000009, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.1625948314277679, 0.60000000000000009, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17628618080795252, 0.60000000000000009, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36349976272521012, 0.60000000000000009, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57474392342151914, 0.60000000000000009, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.82814493499158170, 0.60000000000000009, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1511281795998280, 0.60000000000000009, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.5864286332503075, 0.60000000000000009, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.1958944866494527, 0.60000000000000009, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.0398358172574604, 0.60000000000000009, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler159 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.80000000000000004. +-template +-void test159() ++// Test data for k=0.60000000000000009, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.5952142720718732e-16 ++// mean(f - f_Boost): 4.6351811278100284e-16 ++// variance(f - f_Boost): 2.1278339779151204e-31 ++// stddev(f - f_Boost): 4.6128450851021651e-16 ++const testcase_ellint_3 ++data160[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data159) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data159[i].k), Tp(data159[i].nu), +- Tp(data159[i].phi)); +- const Tp f0 = data159[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.60000000000000009, nu=0.90000000000000002. +-testcase_ellint_3 data160[] = { +- { -0.0000000000000000, 0.60000000000000009, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17328652344890033, 0.60000000000000009, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.33973880062929018, 0.60000000000000009, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49515092233122765, 0.60000000000000009, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.63864042139737043, 0.60000000000000009, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.77167205646538850, 0.60000000000000009, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.89673202848034428, 0.60000000000000009, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0163984492661304, 0.60000000000000009, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1328845785162431, 0.60000000000000009, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.2479362973851875, 0.60000000000000009, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.60000000000000009, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17646850384035848, 0.60000000000000009, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36509041515134105, 0.60000000000000009, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58097838596260631, 0.60000000000000009, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.84656453396163722, 0.60000000000000009, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.1997828426963724, 0.60000000000000009, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.7112436789225605, 0.60000000000000009, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.5193168553672312, 0.60000000000000009, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 3.8656670488606690, 0.60000000000000009, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 5.8709993116265604, 0.60000000000000009, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler160 = 2.5000000000000020e-13; + +-// Test function for k=0.60000000000000009, nu=0.90000000000000002. +-template +-void test160() ++// Test data for k=0.70000000000000018, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1569224977685422e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 1.6571557210371951e-32 ++// stddev(f - f_Boost): 1.2873056051447903e-16 ++const testcase_ellint_3 ++data161[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data160) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data160[i].k), Tp(data160[i].nu), +- Tp(data160[i].phi)); +- const Tp f0 = data160[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.0000000000000000. +-testcase_ellint_3 data161[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17496737466916720, 0.69999999999999996, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35254687535677925, 0.69999999999999996, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53536740275997130, 0.69999999999999996, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.72603797651684465, 0.69999999999999996, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.92698296348313458, 0.69999999999999996, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1400447527693316, 0.69999999999999996, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.3657668117194071, 0.69999999999999996, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.6024686895959159, 0.69999999999999996, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17496737466916723, 0.70000000000000018, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35254687535677931, 0.70000000000000018, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53536740275997130, 0.70000000000000018, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.72603797651684454, 0.70000000000000018, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.92698296348313447, 0.70000000000000018, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1400447527693318, 0.70000000000000018, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.3657668117194073, 0.70000000000000018, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.6024686895959164, 0.70000000000000018, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.8456939983747236, 0.70000000000000018, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler161 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.0000000000000000. +-template +-void test161() ++// Test data for k=0.70000000000000018, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.9552278747527691e-16 ++// mean(f - f_Boost): 1.1102230246251565e-16 ++// variance(f - f_Boost): 1.3695501826753678e-32 ++// stddev(f - f_Boost): 1.1702778228589004e-16 ++const testcase_ellint_3 ++data162[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data161) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data161[i].k), Tp(data161[i].nu), +- Tp(data161[i].phi)); +- const Tp f0 = data161[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.10000000000000001. +-testcase_ellint_3 data162[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17479076384884681, 0.69999999999999996, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35114844900396364, 0.69999999999999996, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53072776947527012, 0.69999999999999996, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.71530198262386246, 0.69999999999999996, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.90666760677828306, 0.69999999999999996, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1063366517438080, 0.69999999999999996, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.3149477243092147, 0.69999999999999996, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.5314886725038925, 0.69999999999999996, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17514462737300920, 0.70000000000000018, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35396527997470451, 0.70000000000000018, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54015179589433981, 0.70000000000000018, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.73734430854477728, 0.70000000000000018, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.94888950796697047, 0.70000000000000018, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.1772807959736322, 0.70000000000000018, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.4231796401075834, 0.70000000000000018, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.6841856799887471, 0.70000000000000018, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 1.9541347343119564, 0.70000000000000018, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler162 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.10000000000000001. +-template +-void test162() ++// Test data for k=0.70000000000000018, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.7430437016285820e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 ++const testcase_ellint_3 ++data163[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data162) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data162[i].k), Tp(data162[i].nu), +- Tp(data162[i].phi)); +- const Tp f0 = data162[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.20000000000000001. +-testcase_ellint_3 data163[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17461479077791472, 0.69999999999999996, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.34976950621407538, 0.69999999999999996, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.52622533231350188, 0.69999999999999996, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.70508774017895226, 0.69999999999999996, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.88775302531730294, 0.69999999999999996, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.0756195476149006, 0.69999999999999996, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.2695349716654372, 0.69999999999999996, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.4690814617070540, 0.69999999999999996, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.6721098780092147, 0.69999999999999996, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17532252613350796, 0.70000000000000018, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35540417596807522, 0.70000000000000018, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54508913033361928, 0.70000000000000018, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.74927635777718415, 0.70000000000000018, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.97261706337936338, 0.70000000000000018, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.2187303976209327, 0.70000000000000018, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.4887796709222487, 0.70000000000000018, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.7796581281839214, 0.70000000000000018, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler163 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.20000000000000001. +-template +-void test163() ++// Test data for k=0.70000000000000018, nu=0.30000000000000004. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.2570807706941696e-16 ++// mean(f - f_Boost): 8.8817841970012528e-17 ++// variance(f - f_Boost): 1.5582437633995295e-32 ++// stddev(f - f_Boost): 1.2482963443828271e-16 ++const testcase_ellint_3 ++data164[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data163) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data163[i].k), Tp(data163[i].nu), +- Tp(data163[i].phi)); +- const Tp f0 = data163[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.29999999999999999. +-testcase_ellint_3 data164[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17443945136076172, 0.69999999999999996, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34840956983535287, 0.69999999999999996, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52185308551329179, 0.69999999999999996, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.69535240431168266, 0.69999999999999996, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.87007983473964923, 0.69999999999999996, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0474657975577066, 0.69999999999999996, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.2286225419931889, 0.69999999999999996, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.4136490671013271, 0.69999999999999996, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17550107516328570, 0.70000000000000018, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35686409576571965, 0.70000000000000018, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55018827316513352, 0.70000000000000018, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.76189759494390275, 0.70000000000000018, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 0.99844623430885626, 0.70000000000000018, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.2652862989039833, 0.70000000000000018, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.5647666808691361, 0.70000000000000018, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 1.8932499694938165, 0.70000000000000018, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.2392290510988535, 0.70000000000000018, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler164 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.29999999999999999. +-template +-void test164() ++// Test data for k=0.70000000000000018, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.3719045096496910e-16 ++// mean(f - f_Boost): 1.3600232051658169e-16 ++// variance(f - f_Boost): 1.1718213750516114e-32 ++// stddev(f - f_Boost): 1.0825069861444829e-16 ++const testcase_ellint_3 ++data165[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data164) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data164[i].k), Tp(data164[i].nu), +- Tp(data164[i].phi)); +- const Tp f0 = data164[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.40000000000000002. +-testcase_ellint_3 data165[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17426474153983226, 0.69999999999999996, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34706817945773732, 0.69999999999999996, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.51760452851738159, 0.69999999999999996, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.68605801534722766, 0.69999999999999996, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.85351339387296532, 0.69999999999999996, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0215297967969537, 0.69999999999999996, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.1915051074460528, 0.69999999999999996, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.3639821911744707, 0.69999999999999996, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17568027871494424, 0.70000000000000018, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35834559208180261, 0.70000000000000018, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55545885451190613, 0.70000000000000018, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.77528120402568113, 0.70000000000000018, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0267241287600322, 0.70000000000000018, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.3181380338980246, 0.70000000000000018, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.6542840785132087, 0.70000000000000018, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.0315595131131823, 0.70000000000000018, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler165 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.40000000000000002. +-template +-void test165() ++// Test data for k=0.70000000000000018, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.0277361210295499e-16 ++// mean(f - f_Boost): 1.6930901125533636e-16 ++// variance(f - f_Boost): 6.3799163752809956e-32 ++// stddev(f - f_Boost): 2.5258496343371268e-16 ++const testcase_ellint_3 ++data166[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data165) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data165[i].k), Tp(data165[i].nu), +- Tp(data165[i].phi)); +- const Tp f0 = data165[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.50000000000000000. +-testcase_ellint_3 data166[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17409065729516093, 0.69999999999999996, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34574489064986091, 0.69999999999999996, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51347361925579793, 0.69999999999999996, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.67717079489579290, 0.69999999999999996, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.83793902055292280, 0.69999999999999996, 0.50000000000000000, +- 0.87266462599716477 }, +- { 0.99752863545289705, 0.69999999999999996, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.1576240080401499, 0.69999999999999996, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.3191464023923762, 0.69999999999999996, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17586014108156545, 0.70000000000000018, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.35984923894341653, 0.70000000000000018, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.56091135606739995, 0.70000000000000018, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.78951212635197054, 0.70000000000000018, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0578865732938731, 0.70000000000000018, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.3789149005151722, 0.70000000000000018, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.7620212286086228, 0.70000000000000018, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.2051554347435589, 0.70000000000000018, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.6868019968236996, 0.70000000000000018, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler166 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.50000000000000000. +-template +-void test166() ++// Test data for k=0.70000000000000018, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.8597454441867134e-16 ++// mean(f - f_Boost): 2.5535129566378598e-16 ++// variance(f - f_Boost): 2.8561208198482198e-31 ++// stddev(f - f_Boost): 5.3442687243889785e-16 ++const testcase_ellint_3 ++data167[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data166) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data166[i].k), Tp(data166[i].nu), +- Tp(data166[i].phi)); +- const Tp f0 = data166[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.59999999999999998. +-testcase_ellint_3 data167[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17391719464391611, 0.69999999999999996, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34443927423869031, 0.69999999999999996, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.50945473266486074, 0.69999999999999996, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.66866056326513823, 0.69999999999999996, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.82325830002337352, 0.69999999999999996, 0.59999999999999998, +- 0.87266462599716477 }, +- { 0.97522808245669357, 0.69999999999999996, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.1265300613705282, 0.69999999999999996, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.2784066076152003, 0.69999999999999996, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17604066659721918, 0.70000000000000018, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36137563278353424, 0.70000000000000018, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.56655721272747606, 0.70000000000000018, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.80468966552978305, 0.70000000000000018, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.0924902943683852, 0.70000000000000018, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.4499247992499800, 0.70000000000000018, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 1.8953714382113818, 0.70000000000000018, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.4323229949248670, 0.70000000000000018, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler167 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.59999999999999998. +-template +-void test167() ++// Test data for k=0.70000000000000018, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.2316852368580916e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 7.4564398834547797e-34 ++// stddev(f - f_Boost): 2.7306482533374340e-17 ++const testcase_ellint_3 ++data168[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data167) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data167[i].k), Tp(data167[i].nu), +- Tp(data167[i].phi)); +- const Tp f0 = data167[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.69999999999999996. +-testcase_ellint_3 data168[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17374434963995028, 0.69999999999999996, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34315091562900674, 0.69999999999999996, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50554262375653358, 0.69999999999999996, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.66050025406305812, 0.69999999999999996, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.80938620118847404, 0.69999999999999996, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.95443223855852144, 0.69999999999999996, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.0978573207128302, 0.69999999999999996, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.2411754575007123, 0.69999999999999996, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17622185963747933, 0.70000000000000018, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36292539360435261, 0.70000000000000018, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.57240892970150015, 0.70000000000000018, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.82093084713182629, 0.70000000000000018, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1312609022179871, 0.70000000000000018, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.5345768067715795, 0.70000000000000018, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.0668847445934424, 0.70000000000000018, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.7483444537551245, 0.70000000000000018, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler168 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.69999999999999996. +-template +-void test168() ++// Test data for k=0.70000000000000018, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1198716111867353e-16 ++// mean(f - f_Boost): 2.2482016248659419e-16 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 ++const testcase_ellint_3 ++data169[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data168) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data168[i].k), Tp(data168[i].nu), +- Tp(data168[i].phi)); +- const Tp f0 = data168[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.80000000000000004. +-testcase_ellint_3 data169[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17357211837335737, 0.69999999999999996, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34187941416012108, 0.69999999999999996, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50173239465478270, 0.69999999999999996, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.65266550725988315, 0.69999999999999996, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.79624879865249298, 0.69999999999999996, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.93497577043296920, 0.69999999999999996, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.0713041566930748, 0.69999999999999996, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.2069772023255652, 0.69999999999999996, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.3427110650397533, 0.69999999999999996, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17640372461994805, 0.70000000000000018, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36449916621651091, 0.70000000000000018, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.57848021800372584, 0.70000000000000018, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.83837480968392586, 0.70000000000000018, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.1751669030061143, 0.70000000000000018, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.6381851899173603, 0.70000000000000018, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.3002065924302197, 0.70000000000000018, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.2337600665337871, 0.70000000000000018, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler169 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.80000000000000004. +-template +-void test169() ++// Test data for k=0.70000000000000018, nu=0.90000000000000002. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16 ++// mean(f - f_Boost): 7.4384942649885490e-16 ++// variance(f - f_Boost): 9.7403930714297352e-31 ++// stddev(f - f_Boost): 9.8693429727767263e-16 ++const testcase_ellint_3 ++data170[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data169) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data169[i].k), Tp(data169[i].nu), +- Tp(data169[i].phi)); +- const Tp f0 = data169[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.69999999999999996, nu=0.90000000000000002. +-testcase_ellint_3 data170[] = { +- { -0.0000000000000000, 0.69999999999999996, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17340049697003634, 0.69999999999999996, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34062438249741556, 0.69999999999999996, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.49801946510076878, 0.69999999999999996, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.64513432604750487, 0.69999999999999996, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.78378145487573758, 0.69999999999999996, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.91671799500854634, 0.69999999999999996, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0466193579463123, 0.69999999999999996, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.1754218079199146, 0.69999999999999996, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.3040500499695911, 0.69999999999999996, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.70000000000000018, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17658626600478800, 0.70000000000000018, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36609762156017206, 0.70000000000000018, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58478615187842409, 0.70000000000000018, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.85718862878291846, 0.70000000000000018, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.2255385617397643, 0.70000000000000018, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.7696521899992941, 0.70000000000000018, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.6476314987883507, 0.70000000000000018, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 4.1373434902898083, 0.70000000000000018, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler170 = 2.5000000000000020e-13; + +-// Test function for k=0.69999999999999996, nu=0.90000000000000002. +-template +-void test170() ++// Test data for k=0.80000000000000004, nu=0.0000000000000000. ++// max(|f - f_Boost|): 1.5543122344752192e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.1368406725192426e-31 ++// stddev(f - f_Boost): 4.6225974002926564e-16 ++const testcase_ellint_3 ++data171[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data170) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data170[i].k), Tp(data170[i].nu), +- Tp(data170[i].phi)); +- const Tp f0 = data170[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.0000000000000000. +-testcase_ellint_3 data171[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17510154241338902, 0.80000000000000004, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35365068839779390, 0.80000000000000004, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.53926804409084561, 0.80000000000000004, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.73587926028070383, 0.80000000000000004, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.94770942970071170, 0.80000000000000004, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.1789022995388239, 0.80000000000000004, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.4323027881876009, 0.80000000000000004, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.7069629739121674, 0.80000000000000004, 0.0000000000000000, +- 1.3962634015954636 }, +- { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17510154241338899, 0.80000000000000004, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35365068839779396, 0.80000000000000004, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.53926804409084550, 0.80000000000000004, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.73587926028070372, 0.80000000000000004, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.94770942970071170, 0.80000000000000004, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.1789022995388236, 0.80000000000000004, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.4323027881876012, 0.80000000000000004, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.7069629739121677, 0.80000000000000004, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler171 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.0000000000000000. +-template +-void test171() ++// Test data for k=0.80000000000000004, nu=0.10000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.9190059990693968e-31 ++// stddev(f - f_Boost): 5.4027826155319237e-16 ++const testcase_ellint_3 ++data172[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data171) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data171[i].k), Tp(data171[i].nu), +- Tp(data171[i].phi)); +- const Tp f0 = data171[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.10000000000000001. +-testcase_ellint_3 data172[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17492468824017166, 0.80000000000000004, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35224443521476911, 0.80000000000000004, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53456851853226961, 0.80000000000000004, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.72488875602364944, 0.80000000000000004, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.92661354274638952, 0.80000000000000004, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1432651144499077, 0.80000000000000004, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.3774479927211429, 0.80000000000000004, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.6287092337196041, 0.80000000000000004, 0.10000000000000001, +- 1.3962634015954636 }, +- { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17527903952342144, 0.80000000000000004, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35507705313548549, 0.80000000000000004, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54411455987643553, 0.80000000000000004, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.74745625666804383, 0.80000000000000004, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.97046953684238557, 0.80000000000000004, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.2183080025184605, 0.80000000000000004, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.4943711151994405, 0.80000000000000004, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.7972401309544201, 0.80000000000000004, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler172 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.10000000000000001. +-template +-void test172() ++// Test data for k=0.80000000000000004, nu=0.20000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 2.7528339102381189e-31 ++// stddev(f - f_Boost): 5.2467455724840699e-16 ++const testcase_ellint_3 ++data173[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data172) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data172[i].k), Tp(data172[i].nu), +- Tp(data172[i].phi)); +- const Tp f0 = data172[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.20000000000000001. +-testcase_ellint_3 data173[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17474847286224943, 0.80000000000000004, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.35085779529084682, 0.80000000000000004, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.53000829263059157, 0.80000000000000004, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.71443466027453406, 0.80000000000000004, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.90698196872715420, 0.80000000000000004, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.1108198200558581, 0.80000000000000004, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.3284988909963957, 0.80000000000000004, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.5600369318140328, 0.80000000000000004, 0.20000000000000001, +- 1.3962634015954636 }, +- { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17545718375086419, 0.80000000000000004, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35652404627248163, 0.80000000000000004, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.54911638512920913, 0.80000000000000004, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.75967684282131176, 0.80000000000000004, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 0.99513526893543769, 0.80000000000000004, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.2622192109995993, 0.80000000000000004, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.5654106676347741, 0.80000000000000004, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 1.9029531718534984, 0.80000000000000004, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler173 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.20000000000000001. +-template +-void test173() ++// Test data for k=0.80000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 2.8249350208968825e-31 ++// stddev(f - f_Boost): 5.3150117788175054e-16 ++const testcase_ellint_3 ++data174[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data173) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data173[i].k), Tp(data173[i].nu), +- Tp(data173[i].phi)); +- const Tp f0 = data173[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.29999999999999999. +-testcase_ellint_3 data174[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17457289217669891, 0.80000000000000004, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.34949028801501258, 0.80000000000000004, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52558024362769318, 0.80000000000000004, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.70447281740094914, 0.80000000000000004, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.88864745641528986, 0.80000000000000004, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.0811075819341465, 0.80000000000000004, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.2844589654082377, 0.80000000000000004, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.4991461361277849, 0.80000000000000004, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17563597931587369, 0.80000000000000004, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35799220412005128, 0.80000000000000004, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55428253691111318, 0.80000000000000004, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.77260647376977365, 0.80000000000000004, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 1.0220015271210958, 0.80000000000000004, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.3115965312302671, 0.80000000000000004, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.6478518468813512, 0.80000000000000004, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 2.0290458414203481, 0.80000000000000004, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.4392042002725693, 0.80000000000000004, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler174 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.29999999999999999. +-template +-void test174() ++// Test data for k=0.80000000000000004, nu=0.40000000000000002. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16 ++// mean(f - f_Boost): 3.3861802251067273e-16 ++// variance(f - f_Boost): 4.3719465706454422e-31 ++// stddev(f - f_Boost): 6.6120696991527871e-16 ++const testcase_ellint_3 ++data175[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data174) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data174[i].k), Tp(data174[i].nu), +- Tp(data174[i].phi)); +- const Tp f0 = data174[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.40000000000000002. +-testcase_ellint_3 data175[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17439794211872178, 0.80000000000000004, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34814144964568972, 0.80000000000000004, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.52127776285273075, 0.80000000000000004, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.69496411438966599, 0.80000000000000004, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.87146878427509589, 0.80000000000000004, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0537579024937762, 0.80000000000000004, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.2445534387922637, 0.80000000000000004, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.4446769766361993, 0.80000000000000004, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17581543047866136, 0.80000000000000004, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.35948208343061633, 0.80000000000000004, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.55962280893702021, 0.80000000000000004, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.78632063889234116, 0.80000000000000004, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0514333069550323, 0.80000000000000004, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.3677213138838757, 0.80000000000000004, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.7451736773665165, 0.80000000000000004, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.1830100424586831, 0.80000000000000004, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 2.6604037035529724, 0.80000000000000004, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler175 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.40000000000000002. +-template +-void test175() ++// Test data for k=0.80000000000000004, nu=0.50000000000000000. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16 ++// mean(f - f_Boost): 3.8580250105724191e-16 ++// variance(f - f_Boost): 6.4106456575047741e-31 ++// stddev(f - f_Boost): 8.0066507713929764e-16 ++const testcase_ellint_3 ++data176[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data175) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data175[i].k), Tp(data175[i].nu), +- Tp(data175[i].phi)); +- const Tp f0 = data175[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.50000000000000000. +-testcase_ellint_3 data176[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17422361866118047, 0.80000000000000004, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34681083254170475, 0.80000000000000004, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.51709470815494440, 0.80000000000000004, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.68587375344080259, 0.80000000000000004, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.85532571852810624, 0.80000000000000004, 0.50000000000000000, +- 0.87266462599716477 }, +- { 1.0284677391874906, 0.80000000000000004, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.2081693942686225, 0.80000000000000004, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.3955803006426311, 0.80000000000000004, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17599554153999472, 0.80000000000000004, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.36099426243351540, 0.80000000000000004, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.56514786174780673, 0.80000000000000004, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.80090697622371010, 0.80000000000000004, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.0838891627679339, 0.80000000000000004, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.4323506654466280, 0.80000000000000004, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 1.8625761085390575, 0.80000000000000004, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.3768757305654766, 0.80000000000000004, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 2.9478781158239746, 0.80000000000000004, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler176 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.50000000000000000. +-template +-void test176() ++// Test data for k=0.80000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15 ++// mean(f - f_Boost): 4.8294701571194306e-16 ++// variance(f - f_Boost): 1.1633910328160319e-30 ++// stddev(f - f_Boost): 1.0786060600682865e-15 ++const testcase_ellint_3 ++data177[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data176) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data176[i].k), Tp(data176[i].nu), +- Tp(data176[i].phi)); +- const Tp f0 = data176[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.59999999999999998. +-testcase_ellint_3 data177[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17404991781414092, 0.80000000000000004, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34549800443625167, 0.80000000000000004, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.51302536167001556, 0.80000000000000004, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.67717065003912258, 0.80000000000000004, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.84011512421134416, 0.80000000000000004, 0.59999999999999998, +- 0.87266462599716477 }, +- { 1.0049863847088742, 0.80000000000000004, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.1748145941898918, 0.80000000000000004, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.3510319699755071, 0.80000000000000004, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17617631684170665, 0.80000000000000004, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36252934193666231, 0.80000000000000004, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.57086932622945163, 0.80000000000000004, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.81646796740150973, 0.80000000000000004, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.1199552158519064, 0.80000000000000004, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.5079766673336394, 0.80000000000000004, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 2.0082747447038165, 0.80000000000000004, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.6315146066775523, 0.80000000000000004, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.3418121892288051, 0.80000000000000004, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler177 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.59999999999999998. +-template +-void test177() ++// Test data for k=0.80000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16 ++// mean(f - f_Boost): 3.2751579226442120e-16 ++// variance(f - f_Boost): 4.4236851331020672e-31 ++// stddev(f - f_Boost): 6.6510789599147505e-16 ++const testcase_ellint_3 ++data178[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data177) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data177[i].k), Tp(data177[i].nu), +- Tp(data177[i].phi)); +- const Tp f0 = data177[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.69999999999999996. +-testcase_ellint_3 data178[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17387683562442202, 0.80000000000000004, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34420254775101611, 0.80000000000000004, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.50906439222143685, 0.80000000000000004, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.66882693152688433, 0.80000000000000004, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.82574792844091316, 0.80000000000000004, 0.69999999999999996, +- 0.87266462599716477 }, +- { 0.98310431309490953, 0.80000000000000004, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.1440884535113258, 0.80000000000000004, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.3103743938952537, 0.80000000000000004, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17635776076721221, 0.80000000000000004, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36408794649916976, 0.80000000000000004, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.57679992290624138, 0.80000000000000004, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.83312441418142813, 0.80000000000000004, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1603958891464856, 0.80000000000000004, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.5982855143796213, 0.80000000000000004, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.1962484408371821, 0.80000000000000004, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 2.9873281786111869, 0.80000000000000004, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler178 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.69999999999999996. +-template +-void test178() ++// Test data for k=0.80000000000000004, nu=0.80000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16 ++// mean(f - f_Boost): 7.0499162063697436e-16 ++// variance(f - f_Boost): 1.7230805408026989e-30 ++// stddev(f - f_Boost): 1.3126616246400665e-15 ++const testcase_ellint_3 ++data179[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data178) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data178[i].k), Tp(data178[i].nu), +- Tp(data178[i].phi)); +- const Tp f0 = data178[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.80000000000000004. +-testcase_ellint_3 data179[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17370436817515206, 0.80000000000000004, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34292405894783395, 0.80000000000000004, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50520682176250087, 0.80000000000000004, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.66081751679736189, 0.80000000000000004, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.81214672249355102, 0.80000000000000004, 0.80000000000000004, +- 0.87266462599716477 }, +- { 0.96264481387685574, 0.80000000000000004, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.1156611352656258, 0.80000000000000004, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.2730756225143889, 0.80000000000000004, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.4339837018309474, 0.80000000000000004, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17653987774203392, 0.80000000000000004, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36567072568046877, 0.80000000000000004, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.58295359996558616, 0.80000000000000004, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.85101998309176108, 0.80000000000000004, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.2062322059736537, 0.80000000000000004, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.7090321420917429, 0.80000000000000004, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.4529058049405066, 0.80000000000000004, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 3.5368893360106948, 0.80000000000000004, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 4.9246422058196062, 0.80000000000000004, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler179 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.80000000000000004. +-template +-void test179() ++// Test data for k=0.80000000000000004, nu=0.90000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16 ++// mean(f - f_Boost): 8.9928064994637676e-16 ++// variance(f - f_Boost): 1.5485199571025344e-30 ++// stddev(f - f_Boost): 1.2443954183066307e-15 ++const testcase_ellint_3 ++data180[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data179) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data179[i].k), Tp(data179[i].nu), +- Tp(data179[i].phi)); +- const Tp f0 = data179[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.80000000000000004, nu=0.90000000000000002. +-testcase_ellint_3 data180[] = { +- { -0.0000000000000000, 0.80000000000000004, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17353251158533153, 0.80000000000000004, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34166214791545768, 0.80000000000000004, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.50144799535130580, 0.80000000000000004, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.65311976193814447, 0.80000000000000004, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.79924384892320866, 0.80000000000000004, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.94345762353365625, 0.80000000000000004, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.0892582069219159, 0.80000000000000004, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.2387000876610268, 0.80000000000000004, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.80000000000000004, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17672267223433513, 0.80000000000000004, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36727835537196063, 0.80000000000000004, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.58934569363716649, 0.80000000000000004, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.87032723471138851, 0.80000000000000004, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.2588676111323349, 0.80000000000000004, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.8498731900660019, 0.80000000000000004, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 2.8368381299300420, 0.80000000000000004, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 4.5674844191654058, 0.80000000000000004, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 7.2263259298637115, 0.80000000000000004, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler180 = 2.5000000000000020e-13; + +-// Test function for k=0.80000000000000004, nu=0.90000000000000002. +-template +-void test180() ++// Test data for k=0.90000000000000013, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.3381508715713360e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 ++const testcase_ellint_3 ++data181[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data180) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data180[i].k), Tp(data180[i].nu), +- Tp(data180[i].phi)); +- const Tp f0 = data180[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.0000000000000000. +-testcase_ellint_3 data181[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.0000000000000000, +- 0.0000000000000000 }, +- { 0.17525427376115027, 0.89999999999999991, 0.0000000000000000, +- 0.17453292519943295 }, +- { 0.35492464591297446, 0.89999999999999991, 0.0000000000000000, +- 0.34906585039886590 }, +- { 0.54388221416157123, 0.89999999999999991, 0.0000000000000000, +- 0.52359877559829882 }, +- { 0.74797400423532501, 0.89999999999999991, 0.0000000000000000, +- 0.69813170079773179 }, +- { 0.97463898451966458, 0.89999999999999991, 0.0000000000000000, +- 0.87266462599716477 }, +- { 1.2334463254523438, 0.89999999999999991, 0.0000000000000000, +- 1.0471975511965976 }, +- { 1.5355247765594910, 0.89999999999999991, 0.0000000000000000, +- 1.2217304763960306 }, +- { 1.8882928567775117, 0.89999999999999991, 0.0000000000000000, +- 1.3962634015954636 }, +- { 2.2805491384227699, 0.89999999999999991, 0.0000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.0000000000000000, ++ 0.0000000000000000 }, ++ { 0.17525427376115027, 0.90000000000000013, 0.0000000000000000, ++ 0.17453292519943295 }, ++ { 0.35492464591297446, 0.90000000000000013, 0.0000000000000000, ++ 0.34906585039886590 }, ++ { 0.54388221416157123, 0.90000000000000013, 0.0000000000000000, ++ 0.52359877559829882 }, ++ { 0.74797400423532512, 0.90000000000000013, 0.0000000000000000, ++ 0.69813170079773179 }, ++ { 0.97463898451966446, 0.90000000000000013, 0.0000000000000000, ++ 0.87266462599716477 }, ++ { 1.2334463254523440, 0.90000000000000013, 0.0000000000000000, ++ 1.0471975511965976 }, ++ { 1.5355247765594915, 0.90000000000000013, 0.0000000000000000, ++ 1.2217304763960306 }, ++ { 1.8882928567775128, 0.90000000000000013, 0.0000000000000000, ++ 1.3962634015954636 }, ++ { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler181 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.0000000000000000. +-template +-void test181() ++// Test data for k=0.90000000000000013, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.0357223256482469e-33 ++// stddev(f - f_Boost): 3.2182640128619758e-17 ++const testcase_ellint_3 ++data182[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data181) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data181[i].k), Tp(data181[i].nu), +- Tp(data181[i].phi)); +- const Tp f0 = data181[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.10000000000000001. +-testcase_ellint_3 data182[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.10000000000000001, +- 0.0000000000000000 }, +- { 0.17507714233254659, 0.89999999999999991, 0.10000000000000001, +- 0.17453292519943295 }, +- { 0.35350932904326521, 0.89999999999999991, 0.10000000000000001, +- 0.34906585039886590 }, +- { 0.53911129989870987, 0.89999999999999991, 0.10000000000000001, +- 0.52359877559829882 }, +- { 0.73666644254508407, 0.89999999999999991, 0.10000000000000001, +- 0.69813170079773179 }, +- { 0.95250736612100184, 0.89999999999999991, 0.10000000000000001, +- 0.87266462599716477 }, +- { 1.1950199550905591, 0.89999999999999991, 0.10000000000000001, +- 1.0471975511965976 }, +- { 1.4741687286340848, 0.89999999999999991, 0.10000000000000001, +- 1.2217304763960306 }, +- { 1.7968678183506053, 0.89999999999999991, 0.10000000000000001, +- 1.3962634015954636 }, +- { 2.1537868513875282, 0.89999999999999991, 0.10000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.10000000000000001, ++ 0.0000000000000000 }, ++ { 0.17543204932716244, 0.90000000000000013, 0.10000000000000001, ++ 0.17453292519943295 }, ++ { 0.35636022898551184, 0.90000000000000013, 0.10000000000000001, ++ 0.34906585039886590 }, ++ { 0.54880278898382595, 0.90000000000000013, 0.10000000000000001, ++ 0.52359877559829882 }, ++ { 0.75988834774529268, 0.90000000000000013, 0.10000000000000001, ++ 0.69813170079773179 }, ++ { 0.99853303003568117, 0.90000000000000013, 0.10000000000000001, ++ 0.87266462599716477 }, ++ { 1.2759958823999022, 0.90000000000000013, 0.10000000000000001, ++ 1.0471975511965976 }, ++ { 1.6051187364639401, 0.90000000000000013, 0.10000000000000001, ++ 1.2217304763960306 }, ++ { 1.9941406879519474, 0.90000000000000013, 0.10000000000000001, ++ 1.3962634015954636 }, ++ { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler182 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.10000000000000001. +-template +-void test182() ++// Test data for k=0.90000000000000013, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.9533518431433547e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 ++const testcase_ellint_3 ++data183[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data182) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data182[i].k), Tp(data182[i].nu), +- Tp(data182[i].phi)); +- const Tp f0 = data182[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.20000000000000001. +-testcase_ellint_3 data183[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.20000000000000001, +- 0.0000000000000000 }, +- { 0.17490065089140930, 0.89999999999999991, 0.20000000000000001, +- 0.17453292519943295 }, +- { 0.35211377590661436, 0.89999999999999991, 0.20000000000000001, +- 0.34906585039886590 }, +- { 0.53448220334204111, 0.89999999999999991, 0.20000000000000001, +- 0.52359877559829882 }, +- { 0.72591368943179591, 0.89999999999999991, 0.20000000000000001, +- 0.69813170079773179 }, +- { 0.93192539780038763, 0.89999999999999991, 0.20000000000000001, +- 0.87266462599716477 }, +- { 1.1600809679692681, 0.89999999999999991, 0.20000000000000001, +- 1.0471975511965976 }, +- { 1.4195407225882508, 0.89999999999999991, 0.20000000000000001, +- 1.2217304763960306 }, +- { 1.7168966476424521, 0.89999999999999991, 0.20000000000000001, +- 1.3962634015954636 }, +- { 2.0443194576468890, 0.89999999999999991, 0.20000000000000001, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.20000000000000001, ++ 0.0000000000000000 }, ++ { 0.17561047321968409, 0.90000000000000013, 0.20000000000000001, ++ 0.17453292519943295 }, ++ { 0.35781659944356109, 0.90000000000000013, 0.20000000000000001, ++ 0.34906585039886590 }, ++ { 0.55388150905215283, 0.90000000000000013, 0.20000000000000001, ++ 0.52359877559829882 }, ++ { 0.77246874123251441, 0.90000000000000013, 0.20000000000000001, ++ 0.69813170079773179 }, ++ { 1.0244466254771925, 0.90000000000000013, 0.20000000000000001, ++ 0.87266462599716477 }, ++ { 1.3234824077640801, 0.90000000000000013, 0.20000000000000001, ++ 1.0471975511965976 }, ++ { 1.6849848968804240, 0.90000000000000013, 0.20000000000000001, ++ 1.2217304763960306 }, ++ { 2.1185749045502278, 0.90000000000000013, 0.20000000000000001, ++ 1.3962634015954636 }, ++ { 2.6076835743348417, 0.90000000000000013, 0.20000000000000001, ++ 1.5707963267948966 }, + }; ++const double toler183 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.20000000000000001. +-template +-void test183() ++// Test data for k=0.90000000000000013, nu=0.30000000000000004. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.9712691025502371e-16 ++// mean(f - f_Boost): 6.9388939039072284e-17 ++// variance(f - f_Boost): 5.9442282234173945e-34 ++// stddev(f - f_Boost): 2.4380787976227090e-17 ++const testcase_ellint_3 ++data184[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data183) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data183[i].k), Tp(data183[i].nu), +- Tp(data183[i].phi)); +- const Tp f0 = data183[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.29999999999999999. +-testcase_ellint_3 data184[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.29999999999999999, +- 0.0000000000000000 }, +- { 0.17472479532647534, 0.89999999999999991, 0.29999999999999999, +- 0.17453292519943295 }, +- { 0.35073750187374114, 0.89999999999999991, 0.29999999999999999, +- 0.34906585039886590 }, +- { 0.52998766129466968, 0.89999999999999991, 0.29999999999999999, +- 0.52359877559829882 }, +- { 0.71566993548699565, 0.89999999999999991, 0.29999999999999999, +- 0.69813170079773179 }, +- { 0.91271517762560195, 0.89999999999999991, 0.29999999999999999, +- 0.87266462599716477 }, +- { 1.1281241199843368, 0.89999999999999991, 0.29999999999999999, +- 1.0471975511965976 }, +- { 1.3704929576917448, 0.89999999999999991, 0.29999999999999999, +- 1.2217304763960306 }, +- { 1.6461981511487711, 0.89999999999999991, 0.29999999999999999, +- 1.3962634015954636 }, +- { 1.9486280260314424, 0.89999999999999991, 0.29999999999999999, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.30000000000000004, ++ 0.0000000000000000 }, ++ { 0.17578954966746221, 0.90000000000000013, 0.30000000000000004, ++ 0.17453292519943295 }, ++ { 0.35929429810867447, 0.90000000000000013, 0.30000000000000004, ++ 0.34906585039886590 }, ++ { 0.55912757154240822, 0.90000000000000013, 0.30000000000000004, ++ 0.52359877559829882 }, ++ { 0.78578314722025389, 0.90000000000000013, 0.30000000000000004, ++ 0.69813170079773179 }, ++ { 1.0526941001131365, 0.90000000000000013, 0.30000000000000004, ++ 0.87266462599716477 }, ++ { 1.3769682234538601, 0.90000000000000013, 0.30000000000000004, ++ 1.0471975511965976 }, ++ { 1.7779437432911240, 0.90000000000000013, 0.30000000000000004, ++ 1.2217304763960306 }, ++ { 2.2676509341813635, 0.90000000000000013, 0.30000000000000004, ++ 1.3962634015954636 }, ++ { 2.8256506968858517, 0.90000000000000013, 0.30000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler184 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.29999999999999999. +-template +-void test184() ++// Test data for k=0.90000000000000013, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 ++const testcase_ellint_3 ++data185[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data184) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data184[i].k), Tp(data184[i].nu), +- Tp(data184[i].phi)); +- const Tp f0 = data184[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.40000000000000002. +-testcase_ellint_3 data185[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.40000000000000002, +- 0.0000000000000000 }, +- { 0.17454957156468839, 0.89999999999999991, 0.40000000000000002, +- 0.17453292519943295 }, +- { 0.34938003933330430, 0.89999999999999991, 0.40000000000000002, +- 0.34906585039886590 }, +- { 0.52562093533067444, 0.89999999999999991, 0.40000000000000002, +- 0.52359877559829882 }, +- { 0.70589461324915681, 0.89999999999999991, 0.40000000000000002, +- 0.69813170079773179 }, +- { 0.89472658511942849, 0.89999999999999991, 0.40000000000000002, +- 0.87266462599716477 }, +- { 1.0987419542323438, 0.89999999999999991, 0.40000000000000002, +- 1.0471975511965976 }, +- { 1.3261349565496301, 0.89999999999999991, 0.40000000000000002, +- 1.2217304763960306 }, +- { 1.5831293909853761, 0.89999999999999991, 0.40000000000000002, +- 1.3962634015954636 }, +- { 1.8641114227238347, 0.89999999999999991, 0.40000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.40000000000000002, ++ 0.0000000000000000 }, ++ { 0.17596928293938452, 0.90000000000000013, 0.40000000000000002, ++ 0.17453292519943295 }, ++ { 0.36079388642472821, 0.90000000000000013, 0.40000000000000002, ++ 0.34906585039886590 }, ++ { 0.56455096667115612, 0.90000000000000013, 0.40000000000000002, ++ 0.52359877559829882 }, ++ { 0.79990996997869435, 0.90000000000000013, 0.40000000000000002, ++ 0.69813170079773179 }, ++ { 1.0836647913872215, 0.90000000000000013, 0.40000000000000002, ++ 0.87266462599716477 }, ++ { 1.4378726836091849, 0.90000000000000013, 0.40000000000000002, ++ 1.0471975511965976 }, ++ { 1.8880446720682853, 0.90000000000000013, 0.40000000000000002, ++ 1.2217304763960306 }, ++ { 2.4505848932025232, 0.90000000000000013, 0.40000000000000002, ++ 1.3962634015954636 }, ++ { 3.1000689868578624, 0.90000000000000013, 0.40000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler185 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.40000000000000002. +-template +-void test185() ++// Test data for k=0.90000000000000013, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.3939646155354115e-16 ++// mean(f - f_Boost): 1.5820678100908481e-16 ++// variance(f - f_Boost): 1.0089970755557622e-32 ++// stddev(f - f_Boost): 1.0044884646205561e-16 ++const testcase_ellint_3 ++data186[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data185) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data185[i].k), Tp(data185[i].nu), +- Tp(data185[i].phi)); +- const Tp f0 = data185[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.50000000000000000. +-testcase_ellint_3 data186[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.50000000000000000, +- 0.0000000000000000 }, +- { 0.17437497557073336, 0.89999999999999991, 0.50000000000000000, +- 0.17453292519943295 }, +- { 0.34804093691586013, 0.89999999999999991, 0.50000000000000000, +- 0.34906585039886590 }, +- { 0.52137576320372903, 0.89999999999999991, 0.50000000000000000, +- 0.52359877559829882 }, +- { 0.69655163996912262, 0.89999999999999991, 0.50000000000000000, +- 0.69813170079773179 }, +- { 0.87783188683054236, 0.89999999999999991, 0.50000000000000000, +- 0.87266462599716477 }, +- { 1.0716015959755183, 0.89999999999999991, 0.50000000000000000, +- 1.0471975511965976 }, +- { 1.2857636916026749, 0.89999999999999991, 0.50000000000000000, +- 1.2217304763960306 }, +- { 1.5264263913252358, 0.89999999999999991, 0.50000000000000000, +- 1.3962634015954636 }, +- { 1.7888013241937859, 0.89999999999999991, 0.50000000000000000, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.50000000000000000, ++ 0.0000000000000000 }, ++ { 0.17614967734498183, 0.90000000000000013, 0.50000000000000000, ++ 0.17453292519943295 }, ++ { 0.36231594750319435, 0.90000000000000013, 0.50000000000000000, ++ 0.34906585039886590 }, ++ { 0.57016256984349567, 0.90000000000000013, 0.50000000000000000, ++ 0.52359877559829882 }, ++ { 0.81494025918293422, 0.90000000000000013, 0.50000000000000000, ++ 0.69813170079773179 }, ++ { 1.1178482279283477, 0.90000000000000013, 0.50000000000000000, ++ 0.87266462599716477 }, ++ { 1.5081455873012106, 0.90000000000000013, 0.50000000000000000, ++ 1.0471975511965976 }, ++ { 2.0213599730863998, 0.90000000000000013, 0.50000000000000000, ++ 1.2217304763960306 }, ++ { 2.6822467012926832, 0.90000000000000013, 0.50000000000000000, ++ 1.3962634015954636 }, ++ { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000, ++ 1.5707963267948966 }, + }; ++const double toler186 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.50000000000000000. +-template +-void test186() ++// Test data for k=0.90000000000000013, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.4914274070443813e-16 ++// mean(f - f_Boost): 3.4694469519536142e-16 ++// variance(f - f_Boost): 2.5224926888894056e-31 ++// stddev(f - f_Boost): 5.0224423231027804e-16 ++const testcase_ellint_3 ++data187[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data186) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data186[i].k), Tp(data186[i].nu), +- Tp(data186[i].phi)); +- const Tp f0 = data186[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.59999999999999998. +-testcase_ellint_3 data187[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.59999999999999998, +- 0.0000000000000000 }, +- { 0.17420100334657815, 0.89999999999999991, 0.59999999999999998, +- 0.17453292519943295 }, +- { 0.34671975876122157, 0.89999999999999991, 0.59999999999999998, +- 0.34906585039886590 }, +- { 0.51724631570707957, 0.89999999999999991, 0.59999999999999998, +- 0.52359877559829882 }, +- { 0.68760879113743034, 0.89999999999999991, 0.59999999999999998, +- 0.69813170079773179 }, +- { 0.86192157779698364, 0.89999999999999991, 0.59999999999999998, +- 0.87266462599716477 }, +- { 1.0464279696166352, 0.89999999999999991, 0.59999999999999998, +- 1.0471975511965976 }, +- { 1.2488156247094004, 0.89999999999999991, 0.59999999999999998, +- 1.2217304763960306 }, +- { 1.4750988777188470, 0.89999999999999991, 0.59999999999999998, +- 1.3962634015954636 }, +- { 1.7211781128919521, 0.89999999999999991, 0.59999999999999998, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.60000000000000009, ++ 0.0000000000000000 }, ++ { 0.17633073723493825, 0.90000000000000013, 0.60000000000000009, ++ 0.17453292519943295 }, ++ { 0.36386108723492810, 0.90000000000000013, 0.60000000000000009, ++ 0.34906585039886590 }, ++ { 0.57597424744716241, 0.90000000000000013, 0.60000000000000009, ++ 0.52359877559829882 }, ++ { 0.83098051948501150, 0.90000000000000013, 0.60000000000000009, ++ 0.69813170079773179 }, ++ { 1.1558706545698916, 0.90000000000000013, 0.60000000000000009, ++ 0.87266462599716477 }, ++ { 1.5905576379415669, 0.90000000000000013, 0.60000000000000009, ++ 1.0471975511965976 }, ++ { 2.1875186010215084, 0.90000000000000013, 0.60000000000000009, ++ 1.2217304763960306 }, ++ { 2.9885767771316853, 0.90000000000000013, 0.60000000000000009, ++ 1.3962634015954636 }, ++ { 3.9549939883570238, 0.90000000000000013, 0.60000000000000009, ++ 1.5707963267948966 }, + }; ++const double toler187 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.59999999999999998. +-template +-void test187() ++// Test data for k=0.90000000000000013, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.5442489886293633e-16 ++// mean(f - f_Boost): 4.3576253716537392e-16 ++// variance(f - f_Boost): 2.2187568928205130e-31 ++// stddev(f - f_Boost): 4.7103682370070737e-16 ++const testcase_ellint_3 ++data188[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data187) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data187[i].k), Tp(data187[i].nu), +- Tp(data187[i].phi)); +- const Tp f0 = data187[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.69999999999999996. +-testcase_ellint_3 data188[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.69999999999999996, +- 0.0000000000000000 }, +- { 0.17402765093102210, 0.89999999999999991, 0.69999999999999996, +- 0.17453292519943295 }, +- { 0.34541608382635131, 0.89999999999999991, 0.69999999999999996, +- 0.34906585039886590 }, +- { 0.51322715827061693, 0.89999999999999991, 0.69999999999999996, +- 0.52359877559829882 }, +- { 0.67903717872440283, 0.89999999999999991, 0.69999999999999996, +- 0.69813170079773179 }, +- { 0.84690113601682671, 0.89999999999999991, 0.69999999999999996, +- 0.87266462599716477 }, +- { 1.0229914311548416, 0.89999999999999991, 0.69999999999999996, +- 1.0471975511965976 }, +- { 1.2148329639709381, 0.89999999999999991, 0.69999999999999996, +- 1.2217304763960306 }, +- { 1.4283586501307799, 0.89999999999999991, 0.69999999999999996, +- 1.3962634015954636 }, +- { 1.6600480747670936, 0.89999999999999991, 0.69999999999999996, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.70000000000000007, ++ 0.0000000000000000 }, ++ { 0.17651246700160939, 0.90000000000000013, 0.70000000000000007, ++ 0.17453292519943295 }, ++ { 0.36542993547358982, 0.90000000000000013, 0.70000000000000007, ++ 0.34906585039886590 }, ++ { 0.58199897877674867, 0.90000000000000013, 0.70000000000000007, ++ 0.52359877559829882 }, ++ { 0.84815633587352857, 0.90000000000000013, 0.70000000000000007, ++ 0.69813170079773179 }, ++ { 1.1985495623872375, 0.90000000000000013, 0.70000000000000007, ++ 0.87266462599716477 }, ++ { 1.6892158134027691, 0.90000000000000013, 0.70000000000000007, ++ 1.0471975511965976 }, ++ { 2.4029722191094236, 0.90000000000000013, 0.70000000000000007, ++ 1.2217304763960306 }, ++ { 3.4201084941340061, 0.90000000000000013, 0.70000000000000007, ++ 1.3962634015954636 }, ++ { 4.6985482312992444, 0.90000000000000013, 0.70000000000000007, ++ 1.5707963267948966 }, + }; ++const double toler188 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.69999999999999996. +-template +-void test188() ++// Test data for k=0.90000000000000013, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9362432595976420e-16 ++// mean(f - f_Boost): 3.0531133177191805e-16 ++// variance(f - f_Boost): 1.1508025840536076e-32 ++// stddev(f - f_Boost): 1.0727546709539920e-16 ++const testcase_ellint_3 ++data189[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data188) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data188[i].k), Tp(data188[i].nu), +- Tp(data188[i].phi)); +- const Tp f0 = data188[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.80000000000000004. +-testcase_ellint_3 data189[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.80000000000000004, +- 0.0000000000000000 }, +- { 0.17385491439925149, 0.89999999999999991, 0.80000000000000004, +- 0.17453292519943295 }, +- { 0.34412950523113928, 0.89999999999999991, 0.80000000000000004, +- 0.34906585039886590 }, +- { 0.50931321668729601, 0.89999999999999991, 0.80000000000000004, +- 0.52359877559829882 }, +- { 0.67081081392296327, 0.89999999999999991, 0.80000000000000004, +- 0.69813170079773179 }, +- { 0.83268846097293259, 0.89999999999999991, 0.80000000000000004, +- 0.87266462599716477 }, +- { 1.0010985015814025, 0.89999999999999991, 0.80000000000000004, +- 1.0471975511965976 }, +- { 1.1834394045489678, 0.89999999999999991, 0.80000000000000004, +- 1.2217304763960306 }, +- { 1.3855695891683182, 0.89999999999999991, 0.80000000000000004, +- 1.3962634015954636 }, +- { 1.6044591960982200, 0.89999999999999991, 0.80000000000000004, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.80000000000000004, ++ 0.0000000000000000 }, ++ { 0.17669487107954862, 0.90000000000000013, 0.80000000000000004, ++ 0.17453292519943295 }, ++ { 0.36702314729628421, 0.90000000000000013, 0.80000000000000004, ++ 0.34906585039886590 }, ++ { 0.58825099711365492, 0.90000000000000013, 0.80000000000000004, ++ 0.52359877559829882 }, ++ { 0.86661711422209031, 0.90000000000000013, 0.80000000000000004, ++ 0.69813170079773179 }, ++ { 1.2469779109884802, 0.90000000000000013, 0.80000000000000004, ++ 0.87266462599716477 }, ++ { 1.8105469760531578, 0.90000000000000013, 0.80000000000000004, ++ 1.0471975511965976 }, ++ { 2.6989505165893752, 0.90000000000000013, 0.80000000000000004, ++ 1.2217304763960306 }, ++ { 4.0935213267757433, 0.90000000000000013, 0.80000000000000004, ++ 1.3962634015954636 }, ++ { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004, ++ 1.5707963267948966 }, + }; ++const double toler189 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.80000000000000004. +-template +-void test189() ++// Test data for k=0.90000000000000013, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9577148062669782e-16 ++// mean(f - f_Boost): 5.9119376061289588e-16 ++// variance(f - f_Boost): 1.7340883003959522e-31 ++// stddev(f - f_Boost): 4.1642385863395872e-16 ++const testcase_ellint_3 ++data190[10] = + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data189) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data189[i].k), Tp(data189[i].nu), +- Tp(data189[i].phi)); +- const Tp f0 = data189[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} +- +-// Test data for k=0.89999999999999991, nu=0.90000000000000002. +-testcase_ellint_3 data190[] = { +- { -0.0000000000000000, 0.89999999999999991, 0.90000000000000002, +- 0.0000000000000000 }, +- { 0.17368278986240138, 0.89999999999999991, 0.90000000000000002, +- 0.17453292519943295 }, +- { 0.34285962963961397, 0.89999999999999991, 0.90000000000000002, +- 0.34906585039886590 }, +- { 0.50549974644993312, 0.89999999999999991, 0.90000000000000002, +- 0.52359877559829882 }, +- { 0.66290623857720876, 0.89999999999999991, 0.90000000000000002, +- 0.69813170079773179 }, +- { 0.81921183128847164, 0.89999999999999991, 0.90000000000000002, +- 0.87266462599716477 }, +- { 0.98058481956066368, 0.89999999999999991, 0.90000000000000002, +- 1.0471975511965976 }, +- { 1.1543223520473569, 0.89999999999999991, 0.90000000000000002, +- 1.2217304763960306 }, +- { 1.3462119782292934, 0.89999999999999991, 0.90000000000000002, +- 1.3962634015954636 }, +- { 1.5536420236310944, 0.89999999999999991, 0.90000000000000002, +- 1.5707963267948966 }, ++ { 0.0000000000000000, 0.90000000000000013, 0.90000000000000002, ++ 0.0000000000000000 }, ++ { 0.17687795394604169, 0.90000000000000013, 0.90000000000000002, ++ 0.17453292519943295 }, ++ { 0.36864140434751286, 0.90000000000000013, 0.90000000000000002, ++ 0.34906585039886590 }, ++ { 0.59474595366817051, 0.90000000000000013, 0.90000000000000002, ++ 0.52359877559829882 }, ++ { 0.88654237226056665, 0.90000000000000013, 0.90000000000000002, ++ 0.69813170079773179 }, ++ { 1.3026595810616726, 0.90000000000000013, 0.90000000000000002, ++ 0.87266462599716477 }, ++ { 1.9653635459278080, 0.90000000000000013, 0.90000000000000002, ++ 1.0471975511965976 }, ++ { 3.1451407527189468, 0.90000000000000013, 0.90000000000000002, ++ 1.2217304763960306 }, ++ { 5.3745230680316132, 0.90000000000000013, 0.90000000000000002, ++ 1.3962634015954636 }, ++ { 8.9942562031858717, 0.90000000000000013, 0.90000000000000002, ++ 1.5707963267948966 }, + }; ++const double toler190 = 2.5000000000000020e-13; + +-// Test function for k=0.89999999999999991, nu=0.90000000000000002. +-template +-void test190() +-{ +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); +- unsigned int num_datum = sizeof(data190) +- / sizeof(testcase_ellint_3); +- for (unsigned int i = 0; i < num_datum; ++i) +- { +- const Tp f = std::tr1::ellint_3(Tp(data190[i].k), Tp(data190[i].nu), +- Tp(data190[i].phi)); +- const Tp f0 = data190[i].f0; +- const Tp diff = f - f0; +- if (std::abs(diff) > max_abs_diff) +- max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) +- { +- const Tp frac = diff / f0; +- if (std::abs(frac) > max_abs_frac) +- max_abs_frac = std::abs(frac); +- } +- } +- VERIFY(max_abs_frac < Tp(2.5000000000000020e-13)); +-} ++template ++ void ++ test(const testcase_ellint_3 (&data)[Num], Ret toler) ++ { ++ bool test __attribute__((unused)) = true; ++ const Ret eps = std::numeric_limits::epsilon(); ++ Ret max_abs_diff = -Ret(1); ++ Ret max_abs_frac = -Ret(1); ++ unsigned int num_datum = Num; ++ for (unsigned int i = 0; i < num_datum; ++i) ++ { ++ const Ret f = std::tr1::ellint_3(data[i].k, data[i].nu, ++ data[i].phi); ++ const Ret f0 = data[i].f0; ++ const Ret diff = f - f0; ++ if (std::abs(diff) > max_abs_diff) ++ max_abs_diff = std::abs(diff); ++ if (std::abs(f0) > Ret(10) * eps ++ && std::abs(f) > Ret(10) * eps) ++ { ++ const Ret frac = diff / f0; ++ if (std::abs(frac) > max_abs_frac) ++ max_abs_frac = std::abs(frac); ++ } ++ } ++ VERIFY(max_abs_frac < toler); ++ } + +-int main(int, char**) ++int ++main() + { +- test001(); +- test002(); +- test003(); +- test004(); +- test005(); +- test006(); +- test007(); +- test008(); +- test009(); +- test010(); +- test011(); +- test012(); +- test013(); +- test014(); +- test015(); +- test016(); +- test017(); +- test018(); +- test019(); +- test020(); +- test021(); +- test022(); +- test023(); +- test024(); +- test025(); +- test026(); +- test027(); +- test028(); +- test029(); +- test030(); +- test031(); +- test032(); +- test033(); +- test034(); +- test035(); +- test036(); +- test037(); +- test038(); +- test039(); +- test040(); +- test041(); +- test042(); +- test043(); +- test044(); +- test045(); +- test046(); +- test047(); +- test048(); +- test049(); +- test050(); +- test051(); +- test052(); +- test053(); +- test054(); +- test055(); +- test056(); +- test057(); +- test058(); +- test059(); +- test060(); +- test061(); +- test062(); +- test063(); +- test064(); +- test065(); +- test066(); +- test067(); +- test068(); +- test069(); +- test070(); +- test071(); +- test072(); +- test073(); +- test074(); +- test075(); +- test076(); +- test077(); +- test078(); +- test079(); +- test080(); +- test081(); +- test082(); +- test083(); +- test084(); +- test085(); +- test086(); +- test087(); +- test088(); +- test089(); +- test090(); +- test091(); +- test092(); +- test093(); +- test094(); +- test095(); +- test096(); +- test097(); +- test098(); +- test099(); +- test100(); +- test101(); +- test102(); +- test103(); +- test104(); +- test105(); +- test106(); +- test107(); +- test108(); +- test109(); +- test110(); +- test111(); +- test112(); +- test113(); +- test114(); +- test115(); +- test116(); +- test117(); +- test118(); +- test119(); +- test120(); +- test121(); +- test122(); +- test123(); +- test124(); +- test125(); +- test126(); +- test127(); +- test128(); +- test129(); +- test130(); +- test131(); +- test132(); +- test133(); +- test134(); +- test135(); +- test136(); +- test137(); +- test138(); +- test139(); +- test140(); +- test141(); +- test142(); +- test143(); +- test144(); +- test145(); +- test146(); +- test147(); +- test148(); +- test149(); +- test150(); +- test151(); +- test152(); +- test153(); +- test154(); +- test155(); +- test156(); +- test157(); +- test158(); +- test159(); +- test160(); +- test161(); +- test162(); +- test163(); +- test164(); +- test165(); +- test166(); +- test167(); +- test168(); +- test169(); +- test170(); +- test171(); +- test172(); +- test173(); +- test174(); +- test175(); +- test176(); +- test177(); +- test178(); +- test179(); +- test180(); +- test181(); +- test182(); +- test183(); +- test184(); +- test185(); +- test186(); +- test187(); +- test188(); +- test189(); +- test190(); ++ test(data001, toler001); ++ test(data002, toler002); ++ test(data003, toler003); ++ test(data004, toler004); ++ test(data005, toler005); ++ test(data006, toler006); ++ test(data007, toler007); ++ test(data008, toler008); ++ test(data009, toler009); ++ test(data010, toler010); ++ test(data011, toler011); ++ test(data012, toler012); ++ test(data013, toler013); ++ test(data014, toler014); ++ test(data015, toler015); ++ test(data016, toler016); ++ test(data017, toler017); ++ test(data018, toler018); ++ test(data019, toler019); ++ test(data020, toler020); ++ test(data021, toler021); ++ test(data022, toler022); ++ test(data023, toler023); ++ test(data024, toler024); ++ test(data025, toler025); ++ test(data026, toler026); ++ test(data027, toler027); ++ test(data028, toler028); ++ test(data029, toler029); ++ test(data030, toler030); ++ test(data031, toler031); ++ test(data032, toler032); ++ test(data033, toler033); ++ test(data034, toler034); ++ test(data035, toler035); ++ test(data036, toler036); ++ test(data037, toler037); ++ test(data038, toler038); ++ test(data039, toler039); ++ test(data040, toler040); ++ test(data041, toler041); ++ test(data042, toler042); ++ test(data043, toler043); ++ test(data044, toler044); ++ test(data045, toler045); ++ test(data046, toler046); ++ test(data047, toler047); ++ test(data048, toler048); ++ test(data049, toler049); ++ test(data050, toler050); ++ test(data051, toler051); ++ test(data052, toler052); ++ test(data053, toler053); ++ test(data054, toler054); ++ test(data055, toler055); ++ test(data056, toler056); ++ test(data057, toler057); ++ test(data058, toler058); ++ test(data059, toler059); ++ test(data060, toler060); ++ test(data061, toler061); ++ test(data062, toler062); ++ test(data063, toler063); ++ test(data064, toler064); ++ test(data065, toler065); ++ test(data066, toler066); ++ test(data067, toler067); ++ test(data068, toler068); ++ test(data069, toler069); ++ test(data070, toler070); ++ test(data071, toler071); ++ test(data072, toler072); ++ test(data073, toler073); ++ test(data074, toler074); ++ test(data075, toler075); ++ test(data076, toler076); ++ test(data077, toler077); ++ test(data078, toler078); ++ test(data079, toler079); ++ test(data080, toler080); ++ test(data081, toler081); ++ test(data082, toler082); ++ test(data083, toler083); ++ test(data084, toler084); ++ test(data085, toler085); ++ test(data086, toler086); ++ test(data087, toler087); ++ test(data088, toler088); ++ test(data089, toler089); ++ test(data090, toler090); ++ test(data091, toler091); ++ test(data092, toler092); ++ test(data093, toler093); ++ test(data094, toler094); ++ test(data095, toler095); ++ test(data096, toler096); ++ test(data097, toler097); ++ test(data098, toler098); ++ test(data099, toler099); ++ test(data100, toler100); ++ test(data101, toler101); ++ test(data102, toler102); ++ test(data103, toler103); ++ test(data104, toler104); ++ test(data105, toler105); ++ test(data106, toler106); ++ test(data107, toler107); ++ test(data108, toler108); ++ test(data109, toler109); ++ test(data110, toler110); ++ test(data111, toler111); ++ test(data112, toler112); ++ test(data113, toler113); ++ test(data114, toler114); ++ test(data115, toler115); ++ test(data116, toler116); ++ test(data117, toler117); ++ test(data118, toler118); ++ test(data119, toler119); ++ test(data120, toler120); ++ test(data121, toler121); ++ test(data122, toler122); ++ test(data123, toler123); ++ test(data124, toler124); ++ test(data125, toler125); ++ test(data126, toler126); ++ test(data127, toler127); ++ test(data128, toler128); ++ test(data129, toler129); ++ test(data130, toler130); ++ test(data131, toler131); ++ test(data132, toler132); ++ test(data133, toler133); ++ test(data134, toler134); ++ test(data135, toler135); ++ test(data136, toler136); ++ test(data137, toler137); ++ test(data138, toler138); ++ test(data139, toler139); ++ test(data140, toler140); ++ test(data141, toler141); ++ test(data142, toler142); ++ test(data143, toler143); ++ test(data144, toler144); ++ test(data145, toler145); ++ test(data146, toler146); ++ test(data147, toler147); ++ test(data148, toler148); ++ test(data149, toler149); ++ test(data150, toler150); ++ test(data151, toler151); ++ test(data152, toler152); ++ test(data153, toler153); ++ test(data154, toler154); ++ test(data155, toler155); ++ test(data156, toler156); ++ test(data157, toler157); ++ test(data158, toler158); ++ test(data159, toler159); ++ test(data160, toler160); ++ test(data161, toler161); ++ test(data162, toler162); ++ test(data163, toler163); ++ test(data164, toler164); ++ test(data165, toler165); ++ test(data166, toler166); ++ test(data167, toler167); ++ test(data168, toler168); ++ test(data169, toler169); ++ test(data170, toler170); ++ test(data171, toler171); ++ test(data172, toler172); ++ test(data173, toler173); ++ test(data174, toler174); ++ test(data175, toler175); ++ test(data176, toler176); ++ test(data177, toler177); ++ test(data178, toler178); ++ test(data179, toler179); ++ test(data180, toler180); ++ test(data181, toler181); ++ test(data182, toler182); ++ test(data183, toler183); ++ test(data184, toler184); ++ test(data185, toler185); ++ test(data186, toler186); ++ test(data187, toler187); ++ test(data188, toler188); ++ test(data189, toler189); ++ test(data190, toler190); + return 0; + } +Index: libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,24 @@ ++// { dg-do run { target c++11 } } ++// { dg-require-c-std "" } ++// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } ++// { dg-add-options ieee } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ double Pi1 = std::comp_ellint_3(0.75, 0.0); ++ VERIFY(std::abs(Pi1 - 1.91099) < 0.00001); ++ ++ double Pi2 = std::comp_ellint_3(0.75, 0.5); ++ VERIFY(std::abs(Pi2 - 2.80011) < 0.00001); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc (.../branches/gcc-7-branch) +@@ -1,7 +1,7 @@ + // { dg-do run { target c++11 } } + // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } + // +-// Copyright (C) 2016-2017 Free Software Foundation, Inc. ++// Copyright (C) 2016-2018 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the +@@ -37,387 +37,444 @@ + #endif + #include + +- + // Test data for k=-0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.6751587294384150e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.2838262090802751e-16 ++// mean(f - f_Boost): 4.4408920985006264e-17 ++// variance(f - f_Boost): 2.4347558803117648e-34 ++// stddev(f - f_Boost): 1.5603704304785339e-17 + const testcase_comp_ellint_3 + data001[10] = + { + { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000 }, +- { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001 }, +- { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001 }, +- { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999 }, +- { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002 }, +- { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000 }, +- { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998 }, +- { 1.6600480747670940, -0.90000000000000002, 0.69999999999999996 }, +- { 1.6044591960982202, -0.90000000000000002, 0.80000000000000004 }, +- { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002 }, ++ { 2.4295011187834885, -0.90000000000000002, 0.10000000000000001 }, ++ { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001 }, ++ { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004 }, ++ { 3.1000689868578619, -0.90000000000000002, 0.40000000000000002 }, ++ { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000 }, ++ { 3.9549939883570229, -0.90000000000000002, 0.60000000000000009 }, ++ { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007 }, ++ { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004 }, ++ { 8.9942562031858699, -0.90000000000000002, 0.90000000000000002 }, + }; + const double toler001 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.5960830388244336e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16 ++// mean(f - f_Boost): 9.5479180117763459e-16 ++// variance(f - f_Boost): 5.4782007307014711e-34 ++// stddev(f - f_Boost): 2.3405556457178006e-17 + const testcase_comp_ellint_3 + data002[10] = + { +- { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000 }, +- { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001 }, +- { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001 }, +- { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999 }, +- { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002 }, +- { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000 }, +- { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998 }, +- { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996 }, +- { 1.4339837018309471, -0.80000000000000004, 0.80000000000000004 }, +- { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002 }, ++ { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000 }, ++ { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001 }, ++ { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001 }, ++ { 2.4392042002725698, -0.80000000000000004, 0.30000000000000004 }, ++ { 2.6604037035529728, -0.80000000000000004, 0.40000000000000002 }, ++ { 2.9478781158239751, -0.80000000000000004, 0.50000000000000000 }, ++ { 3.3418121892288055, -0.80000000000000004, 0.60000000000000009 }, ++ { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007 }, ++ { 4.9246422058196071, -0.80000000000000004, 0.80000000000000004 }, ++ { 7.2263259298637132, -0.80000000000000004, 0.90000000000000002 }, + }; + const double toler002 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3074070916136724e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 1.9832236886714888e-16 ++// mean(f - f_Boost): -1.5543122344752191e-16 ++// variance(f - f_Boost): 2.9825759533819119e-33 ++// stddev(f - f_Boost): 5.4612965066748680e-17 + const testcase_comp_ellint_3 + data003[10] = + { +- { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000 }, +- { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001 }, +- { 1.6721098780092145, -0.69999999999999996, 0.20000000000000001 }, +- { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999 }, +- { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002 }, +- { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000 }, +- { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998 }, +- { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996 }, +- { 1.3427110650397531, -0.69999999999999996, 0.80000000000000004 }, +- { 1.3040500499695913, -0.69999999999999996, 0.90000000000000002 }, ++ { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000 }, ++ { 1.9541347343119564, -0.69999999999999996, 0.10000000000000001 }, ++ { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001 }, ++ { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004 }, ++ { 2.4342502915307880, -0.69999999999999996, 0.40000000000000002 }, ++ { 2.6868019968236996, -0.69999999999999996, 0.50000000000000000 }, ++ { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009 }, ++ { 3.5408408771788564, -0.69999999999999996, 0.70000000000000007 }, ++ { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004 }, ++ { 6.3796094177887754, -0.69999999999999996, 0.90000000000000002 }, + }; + const double toler003 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1891472451898755e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 2 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -1.9984014443252818e-16 ++// variance(f - f_Boost): 4.9303806576313241e-33 ++// stddev(f - f_Boost): 7.0216669371534022e-17 + const testcase_comp_ellint_3 + data004[10] = + { + { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000 }, +- { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001 }, +- { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001 }, +- { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999 }, +- { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002 }, +- { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000 }, +- { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998 }, +- { 1.3232737468822813, -0.59999999999999998, 0.69999999999999996 }, +- { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004 }, +- { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002 }, ++ { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001 }, ++ { 1.9695980282802217, -0.59999999999999998, 0.20000000000000001 }, ++ { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004 }, ++ { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002 }, ++ { 2.5239007084492711, -0.59999999999999998, 0.50000000000000000 }, ++ { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009 }, ++ { 3.3029735898397159, -0.59999999999999998, 0.70000000000000007 }, ++ { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004 }, ++ { 5.8709993116265604, -0.59999999999999998, 0.90000000000000002 }, + }; + const double toler004 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.7857620325589816e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16 ++// mean(f - f_Boost): 2.4424906541753446e-16 ++// variance(f - f_Boost): 7.3651365379430888e-33 ++// stddev(f - f_Boost): 8.5820373676319358e-17 + const testcase_comp_ellint_3 + data005[10] = + { +- { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000 }, +- { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001 }, +- { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001 }, +- { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999 }, +- { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002 }, +- { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000 }, +- { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998 }, +- { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996 }, +- { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004 }, +- { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002 }, ++ { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000 }, ++ { 1.7803034946545482, -0.50000000000000000, 0.10000000000000001 }, ++ { 1.8922947612264021, -0.50000000000000000, 0.20000000000000001 }, ++ { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004 }, ++ { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002 }, ++ { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000 }, ++ { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009 }, ++ { 3.1433945297859229, -0.50000000000000000, 0.70000000000000007 }, ++ { 3.8750701888108070, -0.50000000000000000, 0.80000000000000004 }, ++ { 5.5355132096026463, -0.50000000000000000, 0.90000000000000002 }, + }; + const double toler005 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.1925080711125793e-16 ++// Test data for k=-0.39999999999999991. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1718164615986397e-16 ++// mean(f - f_Boost): 6.2172489379008762e-16 ++// variance(f - f_Boost): 1.6458949750907531e-31 ++// stddev(f - f_Boost): 4.0569631192441877e-16 + const testcase_comp_ellint_3 + data006[10] = + { +- { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000 }, +- { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001 }, +- { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001 }, +- { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999 }, +- { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002 }, +- { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000 }, +- { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998 }, +- { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996 }, +- { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004 }, +- { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002 }, ++ { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000 }, ++ { 1.7306968836847190, -0.39999999999999991, 0.10000000000000001 }, ++ { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001 }, ++ { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004 }, ++ { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002 }, ++ { 2.3367461373176512, -0.39999999999999991, 0.50000000000000000 }, ++ { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009 }, ++ { 3.0327078743873246, -0.39999999999999991, 0.70000000000000007 }, ++ { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004 }, ++ { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002 }, + }; + const double toler006 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8209844149902043e-16 ++// Test data for k=-0.29999999999999993. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.9274792319434433e-16 ++// mean(f - f_Boost): 6.2172489379008762e-16 ++// variance(f - f_Boost): 8.7651211691223537e-33 ++// stddev(f - f_Boost): 9.3622225828712025e-17 + const testcase_comp_ellint_3 + data007[10] = + { +- { 1.6080486199305128, -0.30000000000000004, 0.0000000000000000 }, +- { 1.5323534693557528, -0.30000000000000004, 0.10000000000000001 }, +- { 1.4663658145259877, -0.30000000000000004, 0.20000000000000001 }, +- { 1.4081767433479091, -0.30000000000000004, 0.29999999999999999 }, +- { 1.3563643538969763, -0.30000000000000004, 0.40000000000000002 }, +- { 1.3098448759814962, -0.30000000000000004, 0.50000000000000000 }, +- { 1.2677758800420669, -0.30000000000000004, 0.59999999999999998 }, +- { 1.2294913236274982, -0.30000000000000004, 0.69999999999999996 }, +- { 1.1944567571590048, -0.30000000000000004, 0.80000000000000004 }, +- { 1.1622376896064914, -0.30000000000000004, 0.90000000000000002 }, ++ { 1.6080486199305128, -0.29999999999999993, 0.0000000000000000 }, ++ { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001 }, ++ { 1.8002173372290500, -0.29999999999999993, 0.20000000000000001 }, ++ { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004 }, ++ { 2.0822121773175533, -0.29999999999999993, 0.40000000000000002 }, ++ { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000 }, ++ { 2.5560975528589065, -0.29999999999999993, 0.60000000000000009 }, ++ { 2.9562123549913877, -0.29999999999999993, 0.70000000000000007 }, ++ { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004 }, ++ { 5.1479514944016795, -0.29999999999999993, 0.90000000000000002 }, + }; + const double toler007 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8637687241174905e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16 ++// mean(f - f_Boost): 3.1086244689504381e-16 ++// variance(f - f_Boost): 4.1147374377268827e-32 ++// stddev(f - f_Boost): 2.0284815596220939e-16 + const testcase_comp_ellint_3 + data008[10] = + { +- { 1.5868678474541660, -0.19999999999999996, 0.0000000000000000 }, +- { 1.5126513474261087, -0.19999999999999996, 0.10000000000000001 }, +- { 1.4479323932249564, -0.19999999999999996, 0.20000000000000001 }, +- { 1.3908453514752477, -0.19999999999999996, 0.29999999999999999 }, +- { 1.3400002519661005, -0.19999999999999996, 0.40000000000000002 }, +- { 1.2943374404397372, -0.19999999999999996, 0.50000000000000000 }, +- { 1.2530330675914556, -0.19999999999999996, 0.59999999999999998 }, +- { 1.2154356555075863, -0.19999999999999996, 0.69999999999999996 }, +- { 1.1810223448909909, -0.19999999999999996, 0.80000000000000004 }, +- { 1.1493679916141861, -0.19999999999999996, 0.90000000000000002 }, ++ { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000 }, ++ { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001 }, ++ { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001 }, ++ { 1.8983924169967101, -0.19999999999999996, 0.30000000000000004 }, ++ { 2.0512956926676806, -0.19999999999999996, 0.40000000000000002 }, ++ { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000 }, ++ { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009 }, ++ { 2.9058704854500967, -0.19999999999999996, 0.70000000000000007 }, ++ { 3.5622166386422633, -0.19999999999999996, 0.80000000000000004 }, ++ { 5.0448269356200370, -0.19999999999999996, 0.90000000000000002 }, + }; + const double toler008 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8887517676790089e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16 ++// mean(f - f_Boost): 0.0000000000000000 ++// variance(f - f_Boost): 6.8368087769470551e-64 ++// stddev(f - f_Boost): 2.6147291976315738e-32 + const testcase_comp_ellint_3 + data009[10] = + { +- { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000 }, +- { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001 }, +- { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001 }, +- { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999 }, +- { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002 }, +- { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000 }, +- { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998 }, +- { 1.2073745911083185, -0.099999999999999978, 0.69999999999999996 }, +- { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004 }, +- { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002 }, ++ { 1.5747455615173560, -0.099999999999999978, 0.0000000000000000 }, ++ { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001 }, ++ { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001 }, ++ { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004 }, ++ { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002 }, ++ { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000 }, ++ { 2.4913004919173827, -0.099999999999999978, 0.60000000000000009 }, ++ { 2.8771910188009744, -0.099999999999999978, 0.70000000000000007 }, ++ { 3.5246199613295617, -0.099999999999999978, 0.80000000000000004 }, ++ { 4.9862890417305508, -0.099999999999999978, 0.90000000000000002 }, + }; + const double toler009 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.6725702444488137e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.1899085000907084e-16 ++// mean(f - f_Boost): -2.2204460492503131e-16 ++// variance(f - f_Boost): 5.4782007307014711e-32 ++// stddev(f - f_Boost): 2.3405556457178008e-16 + const testcase_comp_ellint_3 + data010[10] = + { + { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000 }, +- { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001 }, +- { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001 }, +- { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999 }, +- { 1.3275651989026320, 0.0000000000000000, 0.40000000000000002 }, +- { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000 }, +- { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998 }, +- { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996 }, +- { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004 }, +- { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002 }, ++ { 1.6557647109660170, 0.0000000000000000, 0.10000000000000001 }, ++ { 1.7562036827601817, 0.0000000000000000, 0.20000000000000001 }, ++ { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004 }, ++ { 2.0278893379868062, 0.0000000000000000, 0.40000000000000002 }, ++ { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000 }, ++ { 2.4836470664490258, 0.0000000000000000, 0.60000000000000009 }, ++ { 2.8678686047727386, 0.0000000000000000, 0.70000000000000007 }, ++ { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004 }, ++ { 4.9672941328980516, 0.0000000000000000, 0.90000000000000002 }, + }; + const double toler010 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8887517676790089e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16 ++// mean(f - f_Boost): -2.2204460492503132e-17 ++// variance(f - f_Boost): 6.0868897007794120e-35 ++// stddev(f - f_Boost): 7.8018521523926693e-18 + const testcase_comp_ellint_3 + data011[10] = + { +- { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000 }, +- { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001 }, +- { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001 }, +- { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999 }, +- { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002 }, +- { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000 }, +- { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998 }, +- { 1.2073745911083185, 0.10000000000000009, 0.69999999999999996 }, +- { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004 }, +- { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002 }, ++ { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000 }, ++ { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001 }, ++ { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001 }, ++ { 1.8826015946315440, 0.10000000000000009, 0.30000000000000004 }, ++ { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002 }, ++ { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000 }, ++ { 2.4913004919173827, 0.10000000000000009, 0.60000000000000009 }, ++ { 2.8771910188009744, 0.10000000000000009, 0.70000000000000007 }, ++ { 3.5246199613295617, 0.10000000000000009, 0.80000000000000004 }, ++ { 4.9862890417305508, 0.10000000000000009, 0.90000000000000002 }, + }; + const double toler011 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8637687241174905e-16 ++// Test data for k=0.20000000000000018. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16 ++// mean(f - f_Boost): 3.1086244689504381e-16 ++// variance(f - f_Boost): 4.1147374377268827e-32 ++// stddev(f - f_Boost): 2.0284815596220939e-16 + const testcase_comp_ellint_3 + data012[10] = + { +- { 1.5868678474541660, 0.19999999999999996, 0.0000000000000000 }, +- { 1.5126513474261087, 0.19999999999999996, 0.10000000000000001 }, +- { 1.4479323932249564, 0.19999999999999996, 0.20000000000000001 }, +- { 1.3908453514752477, 0.19999999999999996, 0.29999999999999999 }, +- { 1.3400002519661005, 0.19999999999999996, 0.40000000000000002 }, +- { 1.2943374404397372, 0.19999999999999996, 0.50000000000000000 }, +- { 1.2530330675914556, 0.19999999999999996, 0.59999999999999998 }, +- { 1.2154356555075863, 0.19999999999999996, 0.69999999999999996 }, +- { 1.1810223448909909, 0.19999999999999996, 0.80000000000000004 }, +- { 1.1493679916141861, 0.19999999999999996, 0.90000000000000002 }, ++ { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000 }, ++ { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001 }, ++ { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001 }, ++ { 1.8983924169967101, 0.20000000000000018, 0.30000000000000004 }, ++ { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002 }, ++ { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000 }, ++ { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009 }, ++ { 2.9058704854500967, 0.20000000000000018, 0.70000000000000007 }, ++ { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004 }, ++ { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002 }, + }; + const double toler012 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8209844149902043e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.4585997630846713e-16 ++// mean(f - f_Boost): 5.1070259132757197e-16 ++// variance(f - f_Boost): 1.7591111235252501e-32 ++// stddev(f - f_Boost): 1.3263148659067538e-16 + const testcase_comp_ellint_3 + data013[10] = + { + { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000 }, +- { 1.5323534693557528, 0.30000000000000004, 0.10000000000000001 }, +- { 1.4663658145259877, 0.30000000000000004, 0.20000000000000001 }, +- { 1.4081767433479091, 0.30000000000000004, 0.29999999999999999 }, +- { 1.3563643538969763, 0.30000000000000004, 0.40000000000000002 }, +- { 1.3098448759814962, 0.30000000000000004, 0.50000000000000000 }, +- { 1.2677758800420669, 0.30000000000000004, 0.59999999999999998 }, +- { 1.2294913236274982, 0.30000000000000004, 0.69999999999999996 }, +- { 1.1944567571590048, 0.30000000000000004, 0.80000000000000004 }, +- { 1.1622376896064914, 0.30000000000000004, 0.90000000000000002 }, ++ { 1.6960848815118228, 0.30000000000000004, 0.10000000000000001 }, ++ { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001 }, ++ { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004 }, ++ { 2.0822121773175533, 0.30000000000000004, 0.40000000000000002 }, ++ { 2.2833505881933975, 0.30000000000000004, 0.50000000000000000 }, ++ { 2.5560975528589065, 0.30000000000000004, 0.60000000000000009 }, ++ { 2.9562123549913877, 0.30000000000000004, 0.70000000000000007 }, ++ { 3.6283050484567174, 0.30000000000000004, 0.80000000000000004 }, ++ { 5.1479514944016795, 0.30000000000000004, 0.90000000000000002 }, + }; + const double toler013 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.1925080711125793e-16 ++// Test data for k=0.40000000000000013. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.7696531428672557e-16 ++// mean(f - f_Boost): 1.1990408665951691e-15 ++// variance(f - f_Boost): 2.6514491536595121e-31 ++// stddev(f - f_Boost): 5.1492224205791612e-16 + const testcase_comp_ellint_3 + data014[10] = + { +- { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000 }, +- { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001 }, +- { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001 }, +- { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999 }, +- { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002 }, +- { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000 }, +- { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998 }, +- { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996 }, +- { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004 }, +- { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002 }, ++ { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000 }, ++ { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001 }, ++ { 1.8380358826317629, 0.40000000000000013, 0.20000000000000001 }, ++ { 1.9677924132520141, 0.40000000000000013, 0.30000000000000004 }, ++ { 2.1289968719280030, 0.40000000000000013, 0.40000000000000002 }, ++ { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000 }, ++ { 2.6186940209850196, 0.40000000000000013, 0.60000000000000009 }, ++ { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007 }, ++ { 3.7289548002199906, 0.40000000000000013, 0.80000000000000004 }, ++ { 5.3055535102872522, 0.40000000000000013, 0.90000000000000002 }, + }; + const double toler014 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.7857620325589816e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16 ++// mean(f - f_Boost): 2.4424906541753446e-16 ++// variance(f - f_Boost): 7.3651365379430888e-33 ++// stddev(f - f_Boost): 8.5820373676319358e-17 + const testcase_comp_ellint_3 + data015[10] = + { +- { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000 }, +- { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001 }, +- { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001 }, +- { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999 }, +- { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002 }, +- { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000 }, +- { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998 }, +- { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996 }, +- { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004 }, +- { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002 }, ++ { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000 }, ++ { 1.7803034946545482, 0.50000000000000000, 0.10000000000000001 }, ++ { 1.8922947612264021, 0.50000000000000000, 0.20000000000000001 }, ++ { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004 }, ++ { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002 }, ++ { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000 }, ++ { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009 }, ++ { 3.1433945297859229, 0.50000000000000000, 0.70000000000000007 }, ++ { 3.8750701888108070, 0.50000000000000000, 0.80000000000000004 }, ++ { 5.5355132096026463, 0.50000000000000000, 0.90000000000000002 }, + }; + const double toler015 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.7124937590522226e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 2 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -2.2204460492503131e-16 ++// variance(f - f_Boost): 6.0868897007794117e-33 ++// stddev(f - f_Boost): 7.8018521523926690e-17 + const testcase_comp_ellint_3 + data016[10] = + { + { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000 }, +- { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001 }, +- { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001 }, +- { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999 }, +- { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002 }, +- { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000 }, +- { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998 }, +- { 1.3232737468822813, 0.60000000000000009, 0.69999999999999996 }, +- { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004 }, +- { 1.2479362973851873, 0.60000000000000009, 0.90000000000000002 }, ++ { 1.8508766487100687, 0.60000000000000009, 0.10000000000000001 }, ++ { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001 }, ++ { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004 }, ++ { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002 }, ++ { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000 }, ++ { 2.8388723099514976, 0.60000000000000009, 0.60000000000000009 }, ++ { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007 }, ++ { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004 }, ++ { 5.8709993116265613, 0.60000000000000009, 0.90000000000000002 }, + }; + const double toler016 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3074070916136724e-16 ++// Test data for k=0.70000000000000018. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.9298727220933567e-16 ++// mean(f - f_Boost): 4.8849813083506892e-16 ++// variance(f - f_Boost): 2.0476296953421943e-31 ++// stddev(f - f_Boost): 4.5250742483877478e-16 + const testcase_comp_ellint_3 + data017[10] = + { +- { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000 }, +- { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001 }, +- { 1.6721098780092145, 0.69999999999999996, 0.20000000000000001 }, +- { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999 }, +- { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002 }, +- { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000 }, +- { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998 }, +- { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996 }, +- { 1.3427110650397531, 0.69999999999999996, 0.80000000000000004 }, +- { 1.3040500499695913, 0.69999999999999996, 0.90000000000000002 }, ++ { 1.8456939983747238, 0.70000000000000018, 0.0000000000000000 }, ++ { 1.9541347343119566, 0.70000000000000018, 0.10000000000000001 }, ++ { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001 }, ++ { 2.2392290510988540, 0.70000000000000018, 0.30000000000000004 }, ++ { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002 }, ++ { 2.6868019968237000, 0.70000000000000018, 0.50000000000000000 }, ++ { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009 }, ++ { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007 }, ++ { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004 }, ++ { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002 }, + }; + const double toler017 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.5960830388244336e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16 ++// mean(f - f_Boost): 9.5479180117763459e-16 ++// variance(f - f_Boost): 5.4782007307014711e-34 ++// stddev(f - f_Boost): 2.3405556457178006e-17 + const testcase_comp_ellint_3 + data018[10] = + { +- { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000 }, +- { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001 }, +- { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001 }, +- { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999 }, +- { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002 }, +- { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000 }, +- { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998 }, +- { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996 }, +- { 1.4339837018309471, 0.80000000000000004, 0.80000000000000004 }, +- { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002 }, ++ { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000 }, ++ { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001 }, ++ { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001 }, ++ { 2.4392042002725698, 0.80000000000000004, 0.30000000000000004 }, ++ { 2.6604037035529728, 0.80000000000000004, 0.40000000000000002 }, ++ { 2.9478781158239751, 0.80000000000000004, 0.50000000000000000 }, ++ { 3.3418121892288055, 0.80000000000000004, 0.60000000000000009 }, ++ { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007 }, ++ { 4.9246422058196071, 0.80000000000000004, 0.80000000000000004 }, ++ { 7.2263259298637132, 0.80000000000000004, 0.90000000000000002 }, + }; + const double toler018 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.6751587294384150e-16 ++// Test data for k=0.90000000000000013. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 3 ++// max(|f - f_Boost| / |f_Boost|): 1.5716352001310461e-16 ++// mean(f - f_Boost): 4.4408920985006264e-17 ++// variance(f - f_Boost): 2.4347558803117648e-34 ++// stddev(f - f_Boost): 1.5603704304785339e-17 + const testcase_comp_ellint_3 + data019[10] = + { +- { 2.2805491384227703, 0.89999999999999991, 0.0000000000000000 }, +- { 2.1537868513875287, 0.89999999999999991, 0.10000000000000001 }, +- { 2.0443194576468895, 0.89999999999999991, 0.20000000000000001 }, +- { 1.9486280260314426, 0.89999999999999991, 0.29999999999999999 }, +- { 1.8641114227238351, 0.89999999999999991, 0.40000000000000002 }, +- { 1.7888013241937863, 0.89999999999999991, 0.50000000000000000 }, +- { 1.7211781128919525, 0.89999999999999991, 0.59999999999999998 }, +- { 1.6600480747670940, 0.89999999999999991, 0.69999999999999996 }, +- { 1.6044591960982202, 0.89999999999999991, 0.80000000000000004 }, +- { 1.5536420236310948, 0.89999999999999991, 0.90000000000000002 }, ++ { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000 }, ++ { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001 }, ++ { 2.6076835743348421, 0.90000000000000013, 0.20000000000000001 }, ++ { 2.8256506968858521, 0.90000000000000013, 0.30000000000000004 }, ++ { 3.1000689868578628, 0.90000000000000013, 0.40000000000000002 }, ++ { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000 }, ++ { 3.9549939883570242, 0.90000000000000013, 0.60000000000000009 }, ++ { 4.6985482312992453, 0.90000000000000013, 0.70000000000000007 }, ++ { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004 }, ++ { 8.9942562031858735, 0.90000000000000013, 0.90000000000000002 }, + }; + const double toler019 = 2.5000000000000020e-13; + +-template ++template + void +- test(const testcase_comp_ellint_3 (&data)[Num], Tp toler) ++ test(const testcase_comp_ellint_3 (&data)[Num], Ret toler) + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); ++ bool test __attribute__((unused)) = true; ++ const Ret eps = std::numeric_limits::epsilon(); ++ Ret max_abs_diff = -Ret(1); ++ Ret max_abs_frac = -Ret(1); + unsigned int num_datum = Num; + for (unsigned int i = 0; i < num_datum; ++i) + { +- const Tp f = std::comp_ellint_3(data[i].k, data[i].nu); +- const Tp f0 = data[i].f0; +- const Tp diff = f - f0; ++ const Ret f = std::comp_ellint_3(data[i].k, data[i].nu); ++ const Ret f0 = data[i].f0; ++ const Ret diff = f - f0; + if (std::abs(diff) > max_abs_diff) + max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) ++ if (std::abs(f0) > Ret(10) * eps ++ && std::abs(f) > Ret(10) * eps) + { +- const Tp frac = diff / f0; ++ const Ret frac = diff / f0; + if (std::abs(frac) > max_abs_frac) + max_abs_frac = std::abs(frac); + } +Index: libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,47 @@ ++// { dg-do run { target c++11 } } ++// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } ++// Copyright (C) 2017 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// PR libstdc++/68397 - std::tr1::expint fails in __expint_En_cont_frac ++// for some long double arguments due to low __max_iter value ++ ++#include ++#include ++ ++int ++test01() ++{ ++ // Answers from Wolfram Alpha. ++ long double ans_ok = -0.10001943365331651406888645149537315243646135979573L; ++ long double ans_bomb = -0.10777727809650077516264612749163100483995270163783L; ++ ++ auto Ei_ok = std::expint(-1.500001L); ++ auto diff_ok = Ei_ok - ans_ok; ++ VERIFY(std::abs(diff_ok) < 1.0e-15); ++ ++ auto Ei_bomb = std::expint(-1.450001L); ++ auto diff_bomb = Ei_bomb - ans_bomb; ++ VERIFY(std::abs(diff_bomb) < 1.0e-15); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++// { dg-do run { target c++11 } } ++// { dg-require-c-std "" } ++// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } ++// { dg-add-options ieee } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ const double pi = 3.141592654; ++ ++ double Pi1 = std::ellint_3(0.75, 0.0, pi / 2.0); ++ VERIFY(std::abs(Pi1 - 1.91099) < 0.00001); ++ ++ double Pi2 = std::ellint_3(0.75, 0.5, pi / 2.0); ++ VERIFY(std::abs(Pi2 - 2.80011) < 0.00001); ++} ++ ++int ++main() ++{ ++ test01(); ++ return 0; ++} +Index: libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc (.../branches/gcc-7-branch) +@@ -1,7 +1,7 @@ + // { dg-do run { target c++11 } } + // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" } + // +-// Copyright (C) 2016-2017 Free Software Foundation, Inc. ++// Copyright (C) 2016-2018 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the +@@ -37,30 +37,32 @@ + #endif + #include + +- + // Test data for k=-0.90000000000000002, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.9686139313362077e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 5.7842011620951154e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 + const testcase_ellint_3 + data001[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17525427376115024, -0.90000000000000002, 0.0000000000000000, ++ { 0.17525427376115027, -0.90000000000000002, 0.0000000000000000, + 0.17453292519943295 }, + { 0.35492464591297446, -0.90000000000000002, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.54388221416157112, -0.90000000000000002, 0.0000000000000000, ++ { 0.54388221416157123, -0.90000000000000002, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.74797400423532490, -0.90000000000000002, 0.0000000000000000, ++ { 0.74797400423532512, -0.90000000000000002, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.97463898451966458, -0.90000000000000002, 0.0000000000000000, ++ { 0.97463898451966446, -0.90000000000000002, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.2334463254523440, -0.90000000000000002, 0.0000000000000000, ++ { 1.2334463254523438, -0.90000000000000002, 0.0000000000000000, + 1.0471975511965976 }, + { 1.5355247765594913, -0.90000000000000002, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.8882928567775121, -0.90000000000000002, 0.0000000000000000, ++ { 1.8882928567775126, -0.90000000000000002, 0.0000000000000000, + 1.3962634015954636 }, + { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000, + 1.5707963267948966 }, +@@ -68,269 +70,299 @@ + const double toler001 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.0141810743801079e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 + const testcase_ellint_3 + data002[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17507714233254656, -0.90000000000000002, 0.10000000000000001, ++ { 0.17543204932716244, -0.90000000000000002, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35350932904326521, -0.90000000000000002, 0.10000000000000001, ++ { 0.35636022898551184, -0.90000000000000002, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53911129989870976, -0.90000000000000002, 0.10000000000000001, ++ { 0.54880278898382584, -0.90000000000000002, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.73666644254508395, -0.90000000000000002, 0.10000000000000001, ++ { 0.75988834774529268, -0.90000000000000002, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.95250736612100195, -0.90000000000000002, 0.10000000000000001, ++ { 0.99853303003568117, -0.90000000000000002, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1950199550905594, -0.90000000000000002, 0.10000000000000001, ++ { 1.2759958823999022, -0.90000000000000002, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.4741687286340850, -0.90000000000000002, 0.10000000000000001, ++ { 1.6051187364639401, -0.90000000000000002, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.7968678183506057, -0.90000000000000002, 0.10000000000000001, ++ { 1.9941406879519472, -0.90000000000000002, 0.10000000000000001, + 1.3962634015954636 }, +- { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001, ++ { 2.4295011187834881, -0.90000000000000002, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler002 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.20000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.0588292817405780e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 5.2711357908578066e-16 ++// mean(f - f_Boost): 8.0491169285323847e-17 ++// variance(f - f_Boost): 7.9985534974304465e-34 ++// stddev(f - f_Boost): 2.8281714052423424e-17 + const testcase_ellint_3 + data003[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17490065089140927, -0.90000000000000002, 0.20000000000000001, ++ { 0.17561047321968409, -0.90000000000000002, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.35211377590661436, -0.90000000000000002, 0.20000000000000001, ++ { 0.35781659944356109, -0.90000000000000002, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.53448220334204100, -0.90000000000000002, 0.20000000000000001, ++ { 0.55388150905215283, -0.90000000000000002, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.72591368943179579, -0.90000000000000002, 0.20000000000000001, ++ { 0.77246874123251441, -0.90000000000000002, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.93192539780038763, -0.90000000000000002, 0.20000000000000001, ++ { 1.0244466254771925, -0.90000000000000002, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.1600809679692683, -0.90000000000000002, 0.20000000000000001, ++ { 1.3234824077640801, -0.90000000000000002, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.4195407225882510, -0.90000000000000002, 0.20000000000000001, ++ { 1.6849848968804237, -0.90000000000000002, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.7168966476424525, -0.90000000000000002, 0.20000000000000001, ++ { 2.1185749045502273, -0.90000000000000002, 0.20000000000000001, + 1.3962634015954636 }, +- { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001, ++ { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler003 = 2.5000000000000020e-13; + +-// Test data for k=-0.90000000000000002, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2403611223075570e-16 ++// Test data for k=-0.90000000000000002, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.9955372494296814e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 + const testcase_ellint_3 + data004[10] = + { +- { 0.0000000000000000, -0.90000000000000002, 0.29999999999999999, ++ { 0.0000000000000000, -0.90000000000000002, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17472479532647531, -0.90000000000000002, 0.29999999999999999, ++ { 0.17578954966746221, -0.90000000000000002, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.35073750187374114, -0.90000000000000002, 0.29999999999999999, ++ { 0.35929429810867447, -0.90000000000000002, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52998766129466957, -0.90000000000000002, 0.29999999999999999, ++ { 0.55912757154240811, -0.90000000000000002, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.71566993548699553, -0.90000000000000002, 0.29999999999999999, ++ { 0.78578314722025389, -0.90000000000000002, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.91271517762560195, -0.90000000000000002, 0.29999999999999999, ++ { 1.0526941001131365, -0.90000000000000002, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.1281241199843370, -0.90000000000000002, 0.29999999999999999, ++ { 1.3769682234538601, -0.90000000000000002, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.3704929576917451, -0.90000000000000002, 0.29999999999999999, ++ { 1.7779437432911238, -0.90000000000000002, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.6461981511487713, -0.90000000000000002, 0.29999999999999999, ++ { 2.2676509341813631, -0.90000000000000002, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999, ++ { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler004 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3487482375512111e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16 ++// mean(f - f_Boost): 2.0261570199409106e-16 ++// variance(f - f_Boost): 5.8024227149195491e-32 ++// stddev(f - f_Boost): 2.4088218520512364e-16 + const testcase_ellint_3 + data005[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17454957156468837, -0.90000000000000002, 0.40000000000000002, ++ { 0.17596928293938452, -0.90000000000000002, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34938003933330430, -0.90000000000000002, 0.40000000000000002, ++ { 0.36079388642472821, -0.90000000000000002, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.52562093533067433, -0.90000000000000002, 0.40000000000000002, ++ { 0.56455096667115612, -0.90000000000000002, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.70589461324915670, -0.90000000000000002, 0.40000000000000002, ++ { 0.79990996997869435, -0.90000000000000002, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.89472658511942849, -0.90000000000000002, 0.40000000000000002, ++ { 1.0836647913872215, -0.90000000000000002, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0987419542323440, -0.90000000000000002, 0.40000000000000002, ++ { 1.4378726836091849, -0.90000000000000002, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.3261349565496303, -0.90000000000000002, 0.40000000000000002, ++ { 1.8880446720682853, -0.90000000000000002, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.5831293909853765, -0.90000000000000002, 0.40000000000000002, ++ { 2.4505848932025227, -0.90000000000000002, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002, ++ { 3.1000689868578615, -0.90000000000000002, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler005 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4538944656036724e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.8944086593755267e-16 ++// mean(f - f_Boost): 6.9388939039072284e-17 ++// variance(f - f_Boost): 1.7333369499485123e-32 ++// stddev(f - f_Boost): 1.3165625507162629e-16 + const testcase_ellint_3 + data006[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17437497557073334, -0.90000000000000002, 0.50000000000000000, ++ { 0.17614967734498183, -0.90000000000000002, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34804093691586013, -0.90000000000000002, 0.50000000000000000, ++ { 0.36231594750319435, -0.90000000000000002, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.52137576320372891, -0.90000000000000002, 0.50000000000000000, ++ { 0.57016256984349567, -0.90000000000000002, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.69655163996912262, -0.90000000000000002, 0.50000000000000000, ++ { 0.81494025918293422, -0.90000000000000002, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.87783188683054236, -0.90000000000000002, 0.50000000000000000, ++ { 1.1178482279283477, -0.90000000000000002, 0.50000000000000000, + 0.87266462599716477 }, +- { 1.0716015959755185, -0.90000000000000002, 0.50000000000000000, ++ { 1.5081455873012106, -0.90000000000000002, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.2857636916026749, -0.90000000000000002, 0.50000000000000000, ++ { 2.0213599730863998, -0.90000000000000002, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.5264263913252363, -0.90000000000000002, 0.50000000000000000, ++ { 2.6822467012926827, -0.90000000000000002, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000, ++ { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler006 = 2.5000000000000020e-13; + +-// Test data for k=-0.90000000000000002, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5560830683344639e-16 ++// Test data for k=-0.90000000000000002, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.0602096790645418e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 + const testcase_ellint_3 + data007[10] = + { +- { 0.0000000000000000, -0.90000000000000002, 0.59999999999999998, ++ { 0.0000000000000000, -0.90000000000000002, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17420100334657812, -0.90000000000000002, 0.59999999999999998, ++ { 0.17633073723493825, -0.90000000000000002, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34671975876122157, -0.90000000000000002, 0.59999999999999998, ++ { 0.36386108723492810, -0.90000000000000002, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.51724631570707946, -0.90000000000000002, 0.59999999999999998, ++ { 0.57597424744716241, -0.90000000000000002, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.68760879113743023, -0.90000000000000002, 0.59999999999999998, ++ { 0.83098051948501150, -0.90000000000000002, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.86192157779698364, -0.90000000000000002, 0.59999999999999998, ++ { 1.1558706545698916, -0.90000000000000002, 0.60000000000000009, + 0.87266462599716477 }, +- { 1.0464279696166354, -0.90000000000000002, 0.59999999999999998, ++ { 1.5905576379415669, -0.90000000000000002, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.2488156247094007, -0.90000000000000002, 0.59999999999999998, ++ { 2.1875186010215080, -0.90000000000000002, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.4750988777188472, -0.90000000000000002, 0.59999999999999998, ++ { 2.9885767771316849, -0.90000000000000002, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998, ++ { 3.9549939883570224, -0.90000000000000002, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler007 = 2.5000000000000020e-13; + +-// Test data for k=-0.90000000000000002, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.4833366769839281e-16 ++// Test data for k=-0.90000000000000002, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1938610791060186e-16 ++// mean(f - f_Boost): 3.0253577421035517e-16 ++// variance(f - f_Boost): 4.2342877557562532e-32 ++// stddev(f - f_Boost): 2.0577385051935665e-16 + const testcase_ellint_3 + data008[10] = + { +- { 0.0000000000000000, -0.90000000000000002, 0.69999999999999996, ++ { 0.0000000000000000, -0.90000000000000002, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17402765093102207, -0.90000000000000002, 0.69999999999999996, ++ { 0.17651246700160939, -0.90000000000000002, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34541608382635131, -0.90000000000000002, 0.69999999999999996, ++ { 0.36542993547358982, -0.90000000000000002, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.51322715827061682, -0.90000000000000002, 0.69999999999999996, ++ { 0.58199897877674867, -0.90000000000000002, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.67903717872440272, -0.90000000000000002, 0.69999999999999996, ++ { 0.84815633587352857, -0.90000000000000002, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.84690113601682671, -0.90000000000000002, 0.69999999999999996, ++ { 1.1985495623872375, -0.90000000000000002, 0.70000000000000007, + 0.87266462599716477 }, +- { 1.0229914311548418, -0.90000000000000002, 0.69999999999999996, ++ { 1.6892158134027688, -0.90000000000000002, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.2148329639709381, -0.90000000000000002, 0.69999999999999996, ++ { 2.4029722191094236, -0.90000000000000002, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.4283586501307803, -0.90000000000000002, 0.69999999999999996, ++ { 3.4201084941340052, -0.90000000000000002, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.6600480747670940, -0.90000000000000002, 0.69999999999999996, ++ { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler008 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7525301941362493e-16 ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.5091520146032660e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 9.8950000698295322e-33 ++// stddev(f - f_Boost): 9.9473614943006532e-17 + const testcase_ellint_3 + data009[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17385491439925146, -0.90000000000000002, 0.80000000000000004, ++ { 0.17669487107954862, -0.90000000000000002, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34412950523113928, -0.90000000000000002, 0.80000000000000004, ++ { 0.36702314729628421, -0.90000000000000002, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50931321668729590, -0.90000000000000002, 0.80000000000000004, ++ { 0.58825099711365492, -0.90000000000000002, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.67081081392296327, -0.90000000000000002, 0.80000000000000004, ++ { 0.86661711422209031, -0.90000000000000002, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.83268846097293259, -0.90000000000000002, 0.80000000000000004, ++ { 1.2469779109884802, -0.90000000000000002, 0.80000000000000004, + 0.87266462599716477 }, +- { 1.0010985015814027, -0.90000000000000002, 0.80000000000000004, ++ { 1.8105469760531578, -0.90000000000000002, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.1834394045489680, -0.90000000000000002, 0.80000000000000004, ++ { 2.6989505165893752, -0.90000000000000002, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.3855695891683186, -0.90000000000000002, 0.80000000000000004, ++ { 4.0935213267757424, -0.90000000000000002, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.6044591960982202, -0.90000000000000002, 0.80000000000000004, ++ { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler009 = 2.5000000000000020e-13; + + // Test data for k=-0.90000000000000002, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8471853989694167e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.2628580104449673e-16 ++// mean(f - f_Boost): 8.5764728652293339e-16 ++// variance(f - f_Boost): 8.9671393318321280e-31 ++// stddev(f - f_Boost): 9.4694980499666013e-16 + const testcase_ellint_3 + data010[10] = + { + { 0.0000000000000000, -0.90000000000000002, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17368278986240135, -0.90000000000000002, 0.90000000000000002, ++ { 0.17687795394604169, -0.90000000000000002, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34285962963961397, -0.90000000000000002, 0.90000000000000002, ++ { 0.36864140434751286, -0.90000000000000002, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.50549974644993312, -0.90000000000000002, 0.90000000000000002, ++ { 0.59474595366817051, -0.90000000000000002, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.66290623857720876, -0.90000000000000002, 0.90000000000000002, ++ { 0.88654237226056665, -0.90000000000000002, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.81921183128847175, -0.90000000000000002, 0.90000000000000002, ++ { 1.3026595810616726, -0.90000000000000002, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.98058481956066390, -0.90000000000000002, 0.90000000000000002, ++ { 1.9653635459278078, -0.90000000000000002, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.1543223520473569, -0.90000000000000002, 0.90000000000000002, ++ { 3.1451407527189463, -0.90000000000000002, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.3462119782292938, -0.90000000000000002, 0.90000000000000002, ++ { 5.3745230680316114, -0.90000000000000002, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002, ++ { 8.9942562031858682, -0.90000000000000002, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler010 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1175183168766718e-16 ++// max(|f - f_Boost|): 1.5543122344752192e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.1368406725192426e-31 ++// stddev(f - f_Boost): 4.6225974002926564e-16 + const testcase_ellint_3 + data011[10] = + { +@@ -338,289 +370,319 @@ + 0.0000000000000000 }, + { 0.17510154241338899, -0.80000000000000004, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35365068839779390, -0.80000000000000004, 0.0000000000000000, ++ { 0.35365068839779396, -0.80000000000000004, 0.0000000000000000, + 0.34906585039886590 }, + { 0.53926804409084550, -0.80000000000000004, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.73587926028070361, -0.80000000000000004, 0.0000000000000000, ++ { 0.73587926028070372, -0.80000000000000004, 0.0000000000000000, + 0.69813170079773179 }, + { 0.94770942970071170, -0.80000000000000004, 0.0000000000000000, + 0.87266462599716477 }, + { 1.1789022995388236, -0.80000000000000004, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.4323027881876009, -0.80000000000000004, 0.0000000000000000, ++ { 1.4323027881876012, -0.80000000000000004, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.7069629739121674, -0.80000000000000004, 0.0000000000000000, ++ { 1.7069629739121677, -0.80000000000000004, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000, ++ { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler011 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1537164503193145e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.9190059990693968e-31 ++// stddev(f - f_Boost): 5.4027826155319237e-16 + const testcase_ellint_3 + data012[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17492468824017163, -0.80000000000000004, 0.10000000000000001, ++ { 0.17527903952342144, -0.80000000000000004, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35224443521476911, -0.80000000000000004, 0.10000000000000001, ++ { 0.35507705313548549, -0.80000000000000004, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53456851853226950, -0.80000000000000004, 0.10000000000000001, ++ { 0.54411455987643553, -0.80000000000000004, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.72488875602364922, -0.80000000000000004, 0.10000000000000001, ++ { 0.74745625666804383, -0.80000000000000004, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.92661354274638952, -0.80000000000000004, 0.10000000000000001, ++ { 0.97046953684238557, -0.80000000000000004, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1432651144499075, -0.80000000000000004, 0.10000000000000001, ++ { 1.2183080025184605, -0.80000000000000004, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.3774479927211429, -0.80000000000000004, 0.10000000000000001, ++ { 1.4943711151994405, -0.80000000000000004, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.6287092337196041, -0.80000000000000004, 0.10000000000000001, ++ { 1.7972401309544201, -0.80000000000000004, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001, ++ { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler012 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1894552974436829e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 2.7528339102381189e-31 ++// stddev(f - f_Boost): 5.2467455724840699e-16 + const testcase_ellint_3 + data013[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17474847286224940, -0.80000000000000004, 0.20000000000000001, ++ { 0.17545718375086419, -0.80000000000000004, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.35085779529084682, -0.80000000000000004, 0.20000000000000001, ++ { 0.35652404627248163, -0.80000000000000004, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.53000829263059146, -0.80000000000000004, 0.20000000000000001, ++ { 0.54911638512920913, -0.80000000000000004, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.71443466027453384, -0.80000000000000004, 0.20000000000000001, ++ { 0.75967684282131176, -0.80000000000000004, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.90698196872715420, -0.80000000000000004, 0.20000000000000001, ++ { 0.99513526893543769, -0.80000000000000004, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.1108198200558579, -0.80000000000000004, 0.20000000000000001, ++ { 1.2622192109995993, -0.80000000000000004, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.3284988909963957, -0.80000000000000004, 0.20000000000000001, ++ { 1.5654106676347741, -0.80000000000000004, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.5600369318140328, -0.80000000000000004, 0.20000000000000001, ++ { 1.9029531718534984, -0.80000000000000004, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001, ++ { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler013 = 2.5000000000000020e-13; + +-// Test data for k=-0.80000000000000004, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2247517409029886e-16 ++// Test data for k=-0.80000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 2.8249350208968825e-31 ++// stddev(f - f_Boost): 5.3150117788175054e-16 + const testcase_ellint_3 + data014[10] = + { +- { 0.0000000000000000, -0.80000000000000004, 0.29999999999999999, ++ { 0.0000000000000000, -0.80000000000000004, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17457289217669889, -0.80000000000000004, 0.29999999999999999, ++ { 0.17563597931587369, -0.80000000000000004, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34949028801501258, -0.80000000000000004, 0.29999999999999999, ++ { 0.35799220412005128, -0.80000000000000004, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52558024362769307, -0.80000000000000004, 0.29999999999999999, ++ { 0.55428253691111318, -0.80000000000000004, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.70447281740094891, -0.80000000000000004, 0.29999999999999999, ++ { 0.77260647376977365, -0.80000000000000004, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.88864745641528986, -0.80000000000000004, 0.29999999999999999, ++ { 1.0220015271210958, -0.80000000000000004, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0811075819341462, -0.80000000000000004, 0.29999999999999999, ++ { 1.3115965312302671, -0.80000000000000004, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.2844589654082377, -0.80000000000000004, 0.29999999999999999, ++ { 1.6478518468813512, -0.80000000000000004, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.4991461361277847, -0.80000000000000004, 0.29999999999999999, ++ { 2.0290458414203481, -0.80000000000000004, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999, ++ { 2.4392042002725693, -0.80000000000000004, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler014 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2596216594752862e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16 ++// mean(f - f_Boost): 3.3861802251067273e-16 ++// variance(f - f_Boost): 4.3719465706454422e-31 ++// stddev(f - f_Boost): 6.6120696991527871e-16 + const testcase_ellint_3 + data015[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17439794211872175, -0.80000000000000004, 0.40000000000000002, ++ { 0.17581543047866136, -0.80000000000000004, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34814144964568972, -0.80000000000000004, 0.40000000000000002, ++ { 0.35948208343061633, -0.80000000000000004, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.52127776285273064, -0.80000000000000004, 0.40000000000000002, ++ { 0.55962280893702021, -0.80000000000000004, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.69496411438966588, -0.80000000000000004, 0.40000000000000002, ++ { 0.78632063889234116, -0.80000000000000004, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.87146878427509589, -0.80000000000000004, 0.40000000000000002, ++ { 1.0514333069550323, -0.80000000000000004, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0537579024937762, -0.80000000000000004, 0.40000000000000002, ++ { 1.3677213138838757, -0.80000000000000004, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.2445534387922637, -0.80000000000000004, 0.40000000000000002, ++ { 1.7451736773665165, -0.80000000000000004, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.4446769766361993, -0.80000000000000004, 0.40000000000000002, ++ { 2.1830100424586831, -0.80000000000000004, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002, ++ { 2.6604037035529724, -0.80000000000000004, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler015 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2940800093915668e-16 ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16 ++// mean(f - f_Boost): 3.8580250105724191e-16 ++// variance(f - f_Boost): 6.4106456575047741e-31 ++// stddev(f - f_Boost): 8.0066507713929764e-16 + const testcase_ellint_3 + data016[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17422361866118044, -0.80000000000000004, 0.50000000000000000, ++ { 0.17599554153999472, -0.80000000000000004, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34681083254170475, -0.80000000000000004, 0.50000000000000000, ++ { 0.36099426243351540, -0.80000000000000004, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51709470815494440, -0.80000000000000004, 0.50000000000000000, ++ { 0.56514786174780673, -0.80000000000000004, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.68587375344080237, -0.80000000000000004, 0.50000000000000000, ++ { 0.80090697622371010, -0.80000000000000004, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.85532571852810624, -0.80000000000000004, 0.50000000000000000, ++ { 1.0838891627679339, -0.80000000000000004, 0.50000000000000000, + 0.87266462599716477 }, +- { 1.0284677391874903, -0.80000000000000004, 0.50000000000000000, ++ { 1.4323506654466280, -0.80000000000000004, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.2081693942686225, -0.80000000000000004, 0.50000000000000000, ++ { 1.8625761085390575, -0.80000000000000004, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.3955803006426311, -0.80000000000000004, 0.50000000000000000, ++ { 2.3768757305654766, -0.80000000000000004, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000, ++ { 2.9478781158239746, -0.80000000000000004, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler016 = 2.5000000000000020e-13; + +-// Test data for k=-0.80000000000000004, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3281408974056389e-16 ++// Test data for k=-0.80000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15 ++// mean(f - f_Boost): 4.8294701571194306e-16 ++// variance(f - f_Boost): 1.1633910328160319e-30 ++// stddev(f - f_Boost): 1.0786060600682865e-15 + const testcase_ellint_3 + data017[10] = + { +- { 0.0000000000000000, -0.80000000000000004, 0.59999999999999998, ++ { 0.0000000000000000, -0.80000000000000004, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17404991781414089, -0.80000000000000004, 0.59999999999999998, ++ { 0.17617631684170665, -0.80000000000000004, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34549800443625167, -0.80000000000000004, 0.59999999999999998, ++ { 0.36252934193666231, -0.80000000000000004, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.51302536167001545, -0.80000000000000004, 0.59999999999999998, ++ { 0.57086932622945163, -0.80000000000000004, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.67717065003912236, -0.80000000000000004, 0.59999999999999998, ++ { 0.81646796740150973, -0.80000000000000004, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.84011512421134416, -0.80000000000000004, 0.59999999999999998, ++ { 1.1199552158519064, -0.80000000000000004, 0.60000000000000009, + 0.87266462599716477 }, +- { 1.0049863847088740, -0.80000000000000004, 0.59999999999999998, ++ { 1.5079766673336394, -0.80000000000000004, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.1748145941898920, -0.80000000000000004, 0.59999999999999998, ++ { 2.0082747447038165, -0.80000000000000004, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.3510319699755071, -0.80000000000000004, 0.59999999999999998, ++ { 2.6315146066775523, -0.80000000000000004, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998, ++ { 3.3418121892288051, -0.80000000000000004, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler017 = 2.5000000000000020e-13; + +-// Test data for k=-0.80000000000000004, nu=0.69999999999999996. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3618176466061808e-16 ++// Test data for k=-0.80000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16 ++// mean(f - f_Boost): 3.2751579226442120e-16 ++// variance(f - f_Boost): 4.4236851331020672e-31 ++// stddev(f - f_Boost): 6.6510789599147505e-16 + const testcase_ellint_3 + data018[10] = + { +- { 0.0000000000000000, -0.80000000000000004, 0.69999999999999996, ++ { 0.0000000000000000, -0.80000000000000004, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17387683562442199, -0.80000000000000004, 0.69999999999999996, ++ { 0.17635776076721221, -0.80000000000000004, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34420254775101611, -0.80000000000000004, 0.69999999999999996, ++ { 0.36408794649916976, -0.80000000000000004, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50906439222143673, -0.80000000000000004, 0.69999999999999996, ++ { 0.57679992290624138, -0.80000000000000004, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.66882693152688422, -0.80000000000000004, 0.69999999999999996, ++ { 0.83312441418142813, -0.80000000000000004, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.82574792844091316, -0.80000000000000004, 0.69999999999999996, ++ { 1.1603958891464856, -0.80000000000000004, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.98310431309490931, -0.80000000000000004, 0.69999999999999996, ++ { 1.5982855143796213, -0.80000000000000004, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.1440884535113258, -0.80000000000000004, 0.69999999999999996, ++ { 2.1962484408371821, -0.80000000000000004, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.3103743938952537, -0.80000000000000004, 0.69999999999999996, ++ { 2.9873281786111869, -0.80000000000000004, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996, ++ { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler018 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3951228558314112e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16 ++// mean(f - f_Boost): 7.0499162063697436e-16 ++// variance(f - f_Boost): 1.7230805408026989e-30 ++// stddev(f - f_Boost): 1.3126616246400665e-15 + const testcase_ellint_3 + data019[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17370436817515203, -0.80000000000000004, 0.80000000000000004, ++ { 0.17653987774203392, -0.80000000000000004, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34292405894783395, -0.80000000000000004, 0.80000000000000004, ++ { 0.36567072568046877, -0.80000000000000004, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50520682176250076, -0.80000000000000004, 0.80000000000000004, ++ { 0.58295359996558616, -0.80000000000000004, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.66081751679736178, -0.80000000000000004, 0.80000000000000004, ++ { 0.85101998309176108, -0.80000000000000004, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.81214672249355102, -0.80000000000000004, 0.80000000000000004, ++ { 1.2062322059736537, -0.80000000000000004, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.96264481387685552, -0.80000000000000004, 0.80000000000000004, ++ { 1.7090321420917429, -0.80000000000000004, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.1156611352656258, -0.80000000000000004, 0.80000000000000004, ++ { 2.4529058049405066, -0.80000000000000004, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.2730756225143889, -0.80000000000000004, 0.80000000000000004, ++ { 3.5368893360106948, -0.80000000000000004, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.4339837018309471, -0.80000000000000004, 0.80000000000000004, ++ { 4.9246422058196062, -0.80000000000000004, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler019 = 2.5000000000000020e-13; + + // Test data for k=-0.80000000000000004, nu=0.90000000000000002. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4280684534289690e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16 ++// mean(f - f_Boost): 8.9928064994637676e-16 ++// variance(f - f_Boost): 1.5485199571025344e-30 ++// stddev(f - f_Boost): 1.2443954183066307e-15 + const testcase_ellint_3 + data020[10] = + { + { 0.0000000000000000, -0.80000000000000004, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17353251158533151, -0.80000000000000004, 0.90000000000000002, ++ { 0.17672267223433513, -0.80000000000000004, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34166214791545768, -0.80000000000000004, 0.90000000000000002, ++ { 0.36727835537196063, -0.80000000000000004, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.50144799535130569, -0.80000000000000004, 0.90000000000000002, ++ { 0.58934569363716649, -0.80000000000000004, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.65311976193814425, -0.80000000000000004, 0.90000000000000002, ++ { 0.87032723471138851, -0.80000000000000004, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.79924384892320866, -0.80000000000000004, 0.90000000000000002, ++ { 1.2588676111323349, -0.80000000000000004, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.94345762353365603, -0.80000000000000004, 0.90000000000000002, ++ { 1.8498731900660019, -0.80000000000000004, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0892582069219161, -0.80000000000000004, 0.90000000000000002, ++ { 2.8368381299300420, -0.80000000000000004, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.2387000876610268, -0.80000000000000004, 0.90000000000000002, ++ { 4.5674844191654058, -0.80000000000000004, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002, ++ { 7.2263259298637115, -0.80000000000000004, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler020 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.0000000000000000. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5930208052157665e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.5425633303580569e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 7.4564398834547797e-34 ++// stddev(f - f_Boost): 2.7306482533374340e-17 + const testcase_ellint_3 + data021[10] = + { +@@ -628,289 +690,319 @@ + 0.0000000000000000 }, + { 0.17496737466916723, -0.69999999999999996, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35254687535677925, -0.69999999999999996, 0.0000000000000000, ++ { 0.35254687535677931, -0.69999999999999996, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.53536740275997119, -0.69999999999999996, 0.0000000000000000, ++ { 0.53536740275997130, -0.69999999999999996, 0.0000000000000000, + 0.52359877559829882 }, + { 0.72603797651684454, -0.69999999999999996, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.92698296348313458, -0.69999999999999996, 0.0000000000000000, ++ { 0.92698296348313447, -0.69999999999999996, 0.0000000000000000, + 0.87266462599716477 }, + { 1.1400447527693316, -0.69999999999999996, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.3657668117194073, -0.69999999999999996, 0.0000000000000000, ++ { 1.3657668117194071, -0.69999999999999996, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.6024686895959159, -0.69999999999999996, 0.0000000000000000, ++ { 1.6024686895959162, -0.69999999999999996, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000, ++ { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler021 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.10000000000000001. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.6735282577377367e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.2736371663370261e-16 ++// mean(f - f_Boost): 8.8817841970012528e-17 ++// variance(f - f_Boost): 9.7390235212470591e-34 ++// stddev(f - f_Boost): 3.1207408609570677e-17 + const testcase_ellint_3 + data022[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17479076384884684, -0.69999999999999996, 0.10000000000000001, ++ { 0.17514462737300920, -0.69999999999999996, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35114844900396364, -0.69999999999999996, 0.10000000000000001, ++ { 0.35396527997470451, -0.69999999999999996, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53072776947527001, -0.69999999999999996, 0.10000000000000001, ++ { 0.54015179589433981, -0.69999999999999996, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.71530198262386235, -0.69999999999999996, 0.10000000000000001, ++ { 0.73734430854477728, -0.69999999999999996, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.90666760677828306, -0.69999999999999996, 0.10000000000000001, ++ { 0.94888950796697047, -0.69999999999999996, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1063366517438080, -0.69999999999999996, 0.10000000000000001, ++ { 1.1772807959736322, -0.69999999999999996, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.3149477243092149, -0.69999999999999996, 0.10000000000000001, ++ { 1.4231796401075831, -0.69999999999999996, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.5314886725038925, -0.69999999999999996, 0.10000000000000001, ++ { 1.6841856799887469, -0.69999999999999996, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001, ++ { 1.9541347343119562, -0.69999999999999996, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler022 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.20000000000000001. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7517969287516802e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9907249355047774e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 + const testcase_ellint_3 + data023[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17461479077791475, -0.69999999999999996, 0.20000000000000001, ++ { 0.17532252613350796, -0.69999999999999996, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34976950621407538, -0.69999999999999996, 0.20000000000000001, ++ { 0.35540417596807522, -0.69999999999999996, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52622533231350177, -0.69999999999999996, 0.20000000000000001, ++ { 0.54508913033361928, -0.69999999999999996, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.70508774017895215, -0.69999999999999996, 0.20000000000000001, ++ { 0.74927635777718415, -0.69999999999999996, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.88775302531730294, -0.69999999999999996, 0.20000000000000001, ++ { 0.97261706337936338, -0.69999999999999996, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0756195476149006, -0.69999999999999996, 0.20000000000000001, ++ { 1.2187303976209327, -0.69999999999999996, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.2695349716654374, -0.69999999999999996, 0.20000000000000001, ++ { 1.4887796709222487, -0.69999999999999996, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.4690814617070540, -0.69999999999999996, 0.20000000000000001, ++ { 1.7796581281839212, -0.69999999999999996, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.6721098780092145, -0.69999999999999996, 0.20000000000000001, ++ { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler023 = 2.5000000000000020e-13; + +-// Test data for k=-0.69999999999999996, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8280039841080712e-16 ++// Test data for k=-0.69999999999999996, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.6912897610535316e-16 ++// mean(f - f_Boost): 1.6653345369377347e-17 ++// variance(f - f_Boost): 2.6207864467918357e-32 ++// stddev(f - f_Boost): 1.6188843216214787e-16 + const testcase_ellint_3 + data024[10] = + { +- { 0.0000000000000000, -0.69999999999999996, 0.29999999999999999, ++ { 0.0000000000000000, -0.69999999999999996, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17443945136076175, -0.69999999999999996, 0.29999999999999999, ++ { 0.17550107516328570, -0.69999999999999996, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34840956983535287, -0.69999999999999996, 0.29999999999999999, ++ { 0.35686409576571959, -0.69999999999999996, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52185308551329168, -0.69999999999999996, 0.29999999999999999, ++ { 0.55018827316513352, -0.69999999999999996, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.69535240431168255, -0.69999999999999996, 0.29999999999999999, ++ { 0.76189759494390275, -0.69999999999999996, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.87007983473964923, -0.69999999999999996, 0.29999999999999999, ++ { 0.99844623430885615, -0.69999999999999996, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0474657975577066, -0.69999999999999996, 0.29999999999999999, ++ { 1.2652862989039833, -0.69999999999999996, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.2286225419931891, -0.69999999999999996, 0.29999999999999999, ++ { 1.5647666808691361, -0.69999999999999996, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.4136490671013271, -0.69999999999999996, 0.29999999999999999, ++ { 1.8932499694938163, -0.69999999999999996, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999, ++ { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler024 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3472957053482092e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.5578567644745380e-16 ++// mean(f - f_Boost): 1.4710455076283324e-16 ++// variance(f - f_Boost): 2.6715739327327140e-33 ++// stddev(f - f_Boost): 5.1687270509601433e-17 + const testcase_ellint_3 + data025[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17426474153983229, -0.69999999999999996, 0.40000000000000002, ++ { 0.17568027871494424, -0.69999999999999996, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34706817945773732, -0.69999999999999996, 0.40000000000000002, ++ { 0.35834559208180261, -0.69999999999999996, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51760452851738148, -0.69999999999999996, 0.40000000000000002, ++ { 0.55545885451190613, -0.69999999999999996, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.68605801534722755, -0.69999999999999996, 0.40000000000000002, ++ { 0.77528120402568101, -0.69999999999999996, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.85351339387296532, -0.69999999999999996, 0.40000000000000002, ++ { 1.0267241287600319, -0.69999999999999996, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0215297967969539, -0.69999999999999996, 0.40000000000000002, ++ { 1.3181380338980246, -0.69999999999999996, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1915051074460530, -0.69999999999999996, 0.40000000000000002, ++ { 1.6542840785132085, -0.69999999999999996, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.3639821911744707, -0.69999999999999996, 0.40000000000000002, ++ { 2.0315595131131818, -0.69999999999999996, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002, ++ { 2.4342502915307875, -0.69999999999999996, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler025 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.50000000000000000. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.9748346743390620e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.0416041815443256e-16 ++// mean(f - f_Boost): 1.9151347174783951e-16 ++// variance(f - f_Boost): 7.8758646268991113e-33 ++// stddev(f - f_Boost): 8.8746068233466605e-17 + const testcase_ellint_3 + data026[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17409065729516096, -0.69999999999999996, 0.50000000000000000, ++ { 0.17586014108156545, -0.69999999999999996, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34574489064986091, -0.69999999999999996, 0.50000000000000000, ++ { 0.35984923894341653, -0.69999999999999996, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51347361925579782, -0.69999999999999996, 0.50000000000000000, ++ { 0.56091135606739995, -0.69999999999999996, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.67717079489579279, -0.69999999999999996, 0.50000000000000000, ++ { 0.78951212635197054, -0.69999999999999996, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.83793902055292280, -0.69999999999999996, 0.50000000000000000, ++ { 1.0578865732938729, -0.69999999999999996, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.99752863545289705, -0.69999999999999996, 0.50000000000000000, ++ { 1.3789149005151722, -0.69999999999999996, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.1576240080401501, -0.69999999999999996, 0.50000000000000000, ++ { 1.7620212286086225, -0.69999999999999996, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.3191464023923762, -0.69999999999999996, 0.50000000000000000, ++ { 2.2051554347435585, -0.69999999999999996, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000, ++ { 2.6868019968236991, -0.69999999999999996, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler026 = 2.5000000000000020e-13; + +-// Test data for k=-0.69999999999999996, nu=0.59999999999999998. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.0457157538295173e-16 ++// Test data for k=-0.69999999999999996, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.6515644573247170e-16 ++// mean(f - f_Boost): 9.9920072216264091e-17 ++// variance(f - f_Boost): 1.2325951644078310e-33 ++// stddev(f - f_Boost): 3.5108334685767011e-17 + const testcase_ellint_3 + data027[10] = + { +- { 0.0000000000000000, -0.69999999999999996, 0.59999999999999998, ++ { 0.0000000000000000, -0.69999999999999996, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17391719464391614, -0.69999999999999996, 0.59999999999999998, ++ { 0.17604066659721918, -0.69999999999999996, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34443927423869031, -0.69999999999999996, 0.59999999999999998, ++ { 0.36137563278353424, -0.69999999999999996, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50945473266486063, -0.69999999999999996, 0.59999999999999998, ++ { 0.56655721272747606, -0.69999999999999996, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.66866056326513812, -0.69999999999999996, 0.59999999999999998, ++ { 0.80468966552978305, -0.69999999999999996, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.82325830002337352, -0.69999999999999996, 0.59999999999999998, ++ { 1.0924902943683852, -0.69999999999999996, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.97522808245669368, -0.69999999999999996, 0.59999999999999998, ++ { 1.4499247992499797, -0.69999999999999996, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.1265300613705285, -0.69999999999999996, 0.59999999999999998, ++ { 1.8953714382113815, -0.69999999999999996, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.2784066076152001, -0.69999999999999996, 0.59999999999999998, ++ { 2.4323229949248670, -0.69999999999999996, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998, ++ { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler027 = 2.5000000000000020e-13; + +-// Test data for k=-0.69999999999999996, nu=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.4867405596732161e-16 ++// Test data for k=-0.69999999999999996, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.8475278552871384e-16 ++// mean(f - f_Boost): 9.9920072216264091e-17 ++// variance(f - f_Boost): 1.2325951644078310e-33 ++// stddev(f - f_Boost): 3.5108334685767011e-17 + const testcase_ellint_3 + data028[10] = + { +- { 0.0000000000000000, -0.69999999999999996, 0.69999999999999996, ++ { 0.0000000000000000, -0.69999999999999996, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17374434963995031, -0.69999999999999996, 0.69999999999999996, ++ { 0.17622185963747933, -0.69999999999999996, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34315091562900674, -0.69999999999999996, 0.69999999999999996, ++ { 0.36292539360435261, -0.69999999999999996, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50554262375653347, -0.69999999999999996, 0.69999999999999996, ++ { 0.57240892970150015, -0.69999999999999996, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.66050025406305801, -0.69999999999999996, 0.69999999999999996, ++ { 0.82093084713182629, -0.69999999999999996, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.80938620118847404, -0.69999999999999996, 0.69999999999999996, ++ { 1.1312609022179871, -0.69999999999999996, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.95443223855852144, -0.69999999999999996, 0.69999999999999996, ++ { 1.5345768067715795, -0.69999999999999996, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0978573207128304, -0.69999999999999996, 0.69999999999999996, ++ { 2.0668847445934420, -0.69999999999999996, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.2411754575007123, -0.69999999999999996, 0.69999999999999996, ++ { 2.7483444537551240, -0.69999999999999996, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996, ++ { 3.5408408771788560, -0.69999999999999996, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler028 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1829502028913879e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.8664526853112274e-16 ++// mean(f - f_Boost): 1.6930901125533636e-16 ++// variance(f - f_Boost): 3.5389557150937801e-33 ++// stddev(f - f_Boost): 5.9489122661994095e-17 + const testcase_ellint_3 + data029[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17357211837335740, -0.69999999999999996, 0.80000000000000004, ++ { 0.17640372461994805, -0.69999999999999996, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34187941416012108, -0.69999999999999996, 0.80000000000000004, ++ { 0.36449916621651091, -0.69999999999999996, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50173239465478259, -0.69999999999999996, 0.80000000000000004, ++ { 0.57848021800372573, -0.69999999999999996, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.65266550725988315, -0.69999999999999996, 0.80000000000000004, ++ { 0.83837480968392586, -0.69999999999999996, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.79624879865249298, -0.69999999999999996, 0.80000000000000004, ++ { 1.1751669030061143, -0.69999999999999996, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.93497577043296920, -0.69999999999999996, 0.80000000000000004, ++ { 1.6381851899173601, -0.69999999999999996, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0713041566930750, -0.69999999999999996, 0.80000000000000004, ++ { 2.3002065924302197, -0.69999999999999996, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.2069772023255654, -0.69999999999999996, 0.80000000000000004, ++ { 3.2337600665337862, -0.69999999999999996, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.3427110650397531, -0.69999999999999996, 0.80000000000000004, ++ { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler029 = 2.5000000000000020e-13; + + // Test data for k=-0.69999999999999996, nu=0.90000000000000002. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2494869624129105e-16 ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16 ++// mean(f - f_Boost): 6.7723604502134545e-16 ++// variance(f - f_Boost): 4.8757508225668289e-31 ++// stddev(f - f_Boost): 6.9826576763914390e-16 + const testcase_ellint_3 + data030[10] = + { + { 0.0000000000000000, -0.69999999999999996, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17340049697003637, -0.69999999999999996, 0.90000000000000002, ++ { 0.17658626600478800, -0.69999999999999996, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34062438249741556, -0.69999999999999996, 0.90000000000000002, ++ { 0.36609762156017206, -0.69999999999999996, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49801946510076867, -0.69999999999999996, 0.90000000000000002, ++ { 0.58478615187842409, -0.69999999999999996, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.64513432604750476, -0.69999999999999996, 0.90000000000000002, ++ { 0.85718862878291846, -0.69999999999999996, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.78378145487573758, -0.69999999999999996, 0.90000000000000002, ++ { 1.2255385617397643, -0.69999999999999996, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.91671799500854623, -0.69999999999999996, 0.90000000000000002, ++ { 1.7696521899992939, -0.69999999999999996, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0466193579463123, -0.69999999999999996, 0.90000000000000002, ++ { 2.6476314987883502, -0.69999999999999996, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1754218079199146, -0.69999999999999996, 0.90000000000000002, ++ { 4.1373434902898083, -0.69999999999999996, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.3040500499695913, -0.69999999999999996, 0.90000000000000002, ++ { 6.3796094177887746, -0.69999999999999996, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler030 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.8964816695821429e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16 ++// mean(f - f_Boost): 5.2735593669694933e-17 ++// variance(f - f_Boost): 3.4333862218458872e-34 ++// stddev(f - f_Boost): 1.8529398861932589e-17 + const testcase_ellint_3 + data031[10] = + { +@@ -918,289 +1010,319 @@ + 0.0000000000000000 }, + { 0.17485154362988359, -0.59999999999999998, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35160509865544326, -0.59999999999999998, 0.0000000000000000, ++ { 0.35160509865544320, -0.59999999999999998, 0.0000000000000000, + 0.34906585039886590 }, + { 0.53210652578446138, -0.59999999999999998, 0.0000000000000000, + 0.52359877559829882 }, + { 0.71805304664485659, -0.59999999999999998, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.91082759030195970, -0.59999999999999998, 0.0000000000000000, ++ { 0.91082759030195981, -0.59999999999999998, 0.0000000000000000, + 0.87266462599716477 }, + { 1.1112333229323361, -0.59999999999999998, 0.0000000000000000, + 1.0471975511965976 }, + { 1.3191461190365270, -0.59999999999999998, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.5332022105084773, -0.59999999999999998, 0.0000000000000000, ++ { 1.5332022105084779, -0.59999999999999998, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000, ++ { 1.7507538029157523, -0.59999999999999998, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler031 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.6674242225057385e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 2.2835347143080263e-33 ++// stddev(f - f_Boost): 4.7786344433405099e-17 + const testcase_ellint_3 + data032[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17467514275022011, -0.59999999999999998, 0.10000000000000001, ++ { 0.17502858548476194, -0.59999999999999998, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35021333086258255, -0.59999999999999998, 0.10000000000000001, ++ { 0.35301673150537388, -0.59999999999999998, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52751664092962691, -0.59999999999999998, 0.10000000000000001, ++ { 0.53683932476326812, -0.59999999999999998, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.70752126971957874, -0.59999999999999998, 0.10000000000000001, ++ { 0.72914228589586771, -0.59999999999999998, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.89111058756112871, -0.59999999999999998, 0.10000000000000001, ++ { 0.93208036718354692, -0.59999999999999998, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0789241202877768, -0.59999999999999998, 0.10000000000000001, ++ { 1.1468984688863377, -0.59999999999999998, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2710800210399946, -0.59999999999999998, 0.10000000000000001, ++ { 1.3733904977062528, -0.59999999999999998, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.4669060574440276, -0.59999999999999998, 0.10000000000000001, ++ { 1.6094225663372157, -0.59999999999999998, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001, ++ { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler032 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.20000000000000001. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1891472451898755e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0940560416437693e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 + const testcase_ellint_3 + data033[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17449937871800650, -0.59999999999999998, 0.20000000000000001, ++ { 0.17520627248155893, -0.59999999999999998, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34884093647346553, -0.59999999999999998, 0.20000000000000001, ++ { 0.35444873935437748, -0.59999999999999998, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52306221119844087, -0.59999999999999998, 0.20000000000000001, ++ { 0.54172310557682524, -0.59999999999999998, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.69749955678982223, -0.59999999999999998, 0.20000000000000001, ++ { 0.74084300280734672, -0.59999999999999998, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.87274610682416853, -0.59999999999999998, 0.20000000000000001, ++ { 0.95509001527006121, -0.59999999999999998, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0494620540750792, -0.59999999999999998, 0.20000000000000001, ++ { 1.1865688084431796, -0.59999999999999998, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.2280847305507339, -0.59999999999999998, 0.20000000000000001, ++ { 1.4352978868932598, -0.59999999999999998, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.4085436279696886, -0.59999999999999998, 0.20000000000000001, ++ { 1.6983400371331816, -0.59999999999999998, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001, ++ { 1.9695980282802215, -0.59999999999999998, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler033 = 2.5000000000000020e-13; + +-// Test data for k=-0.59999999999999998, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.9132420715478757e-16 ++// Test data for k=-0.59999999999999998, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16 ++// mean(f - f_Boost): 7.4940054162198071e-17 ++// variance(f - f_Boost): 1.6823592487044846e-32 ++// stddev(f - f_Boost): 1.2970579203352812e-16 + const testcase_ellint_3 + data034[10] = + { +- { 0.0000000000000000, -0.59999999999999998, 0.29999999999999999, ++ { 0.0000000000000000, -0.59999999999999998, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17432424744393932, -0.59999999999999998, 0.29999999999999999, ++ { 0.17538460882640122, -0.59999999999999998, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34748744127146447, -0.59999999999999998, 0.29999999999999999, ++ { 0.35590165133735557, -0.59999999999999998, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51873632743924825, -0.59999999999999998, 0.29999999999999999, ++ { 0.54676661152254535, -0.59999999999999998, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.68794610396313116, -0.59999999999999998, 0.29999999999999999, ++ { 0.75321709418305305, -0.59999999999999998, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.85558070175468726, -0.59999999999999998, 0.29999999999999999, ++ { 0.98012637808992920, -0.59999999999999998, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0224416343605653, -0.59999999999999998, 0.29999999999999999, ++ { 1.2310891277158875, -0.59999999999999998, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1893144457936788, -0.59999999999999998, 0.29999999999999999, ++ { 1.5069157924585623, -0.59999999999999998, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.3566435377982575, -0.59999999999999998, 0.29999999999999999, ++ { 1.8039583598337940, -0.59999999999999998, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999, ++ { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler034 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3897581541285558e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.7909659715991921e-16 ++// mean(f - f_Boost): -2.7755575615628915e-18 ++// variance(f - f_Boost): 2.4044165394594425e-32 ++// stddev(f - f_Boost): 1.5506181152880429e-16 + const testcase_ellint_3 + data035[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17414974487670717, -0.59999999999999998, 0.40000000000000002, ++ { 0.17556359876533037, -0.59999999999999998, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34615238767335027, -0.59999999999999998, 0.40000000000000002, ++ { 0.35737601674244679, -0.59999999999999998, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51453257838108557, -0.59999999999999998, 0.40000000000000002, ++ { 0.55197933771320218, -0.59999999999999998, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.67882386787534399, -0.59999999999999998, 0.40000000000000002, ++ { 0.76633591620002894, -0.59999999999999998, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.83948470233173578, -0.59999999999999998, 0.40000000000000002, ++ { 1.0075231136019616, -0.59999999999999998, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.99753496200073977, -0.59999999999999998, 0.40000000000000002, ++ { 1.2815842073813450, -0.59999999999999998, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1541101404388487, -0.59999999999999998, 0.40000000000000002, ++ { 1.5911666941449827, -0.59999999999999998, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.3100911323398814, -0.59999999999999998, 0.40000000000000002, ++ { 1.9323227566025762, -0.59999999999999998, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002, ++ { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler035 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5022138270566200e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6240126899196213e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.0357223256482469e-33 ++// stddev(f - f_Boost): 3.2182640128619758e-17 + const testcase_ellint_3 + data036[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17397586700252807, -0.59999999999999998, 0.50000000000000000, ++ { 0.17574324658480217, -0.59999999999999998, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34483533397138516, -0.59999999999999998, 0.50000000000000000, ++ { 0.35887240603169313, -0.59999999999999998, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51044500461706477, -0.59999999999999998, 0.50000000000000000, ++ { 0.55737161826345261, -0.59999999999999998, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.67009988034712664, -0.59999999999999998, 0.50000000000000000, ++ { 0.78028227313077458, -0.59999999999999998, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.82434762375735193, -0.59999999999999998, 0.50000000000000000, ++ { 1.0376989776486290, -0.59999999999999998, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.97447346702798998, -0.59999999999999998, 0.50000000000000000, ++ { 1.3395933991042925, -0.59999999999999998, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.1219494000522143, -0.59999999999999998, 0.50000000000000000, ++ { 1.6924049626591782, -0.59999999999999998, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2680242605954484, -0.59999999999999998, 0.50000000000000000, ++ { 2.0931011856518920, -0.59999999999999998, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000, ++ { 2.5239007084492706, -0.59999999999999998, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler036 = 2.5000000000000020e-13; + +-// Test data for k=-0.59999999999999998, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2504224329684343e-16 ++// Test data for k=-0.59999999999999998, nu=0.60000000000000009. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16 ++// mean(f - f_Boost): 1.1934897514720432e-16 ++// variance(f - f_Boost): 1.7585404776158019e-33 ++// stddev(f - f_Boost): 4.1934955319110598e-17 + const testcase_ellint_3 + data037[10] = + { +- { 0.0000000000000000, -0.59999999999999998, 0.59999999999999998, ++ { 0.0000000000000000, -0.59999999999999998, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17380260984469353, -0.59999999999999998, 0.59999999999999998, ++ { 0.17592355661219386, -0.59999999999999998, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34353585361777839, -0.59999999999999998, 0.59999999999999998, ++ { 0.36039141192661606, -0.59999999999999998, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50646805774321380, -0.59999999999999998, 0.59999999999999998, ++ { 0.56295472636903854, -0.59999999999999998, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.66174468108625506, -0.59999999999999998, 0.59999999999999998, ++ { 0.79515295130165986, -0.59999999999999998, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.81007462280278408, -0.59999999999999998, 0.59999999999999998, ++ { 1.0711886441942242, -0.59999999999999998, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.95303466945718729, -0.59999999999999998, 0.59999999999999998, ++ { 1.4072952835139891, -0.59999999999999998, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0924118588677505, -0.59999999999999998, 0.59999999999999998, ++ { 1.8174863977376825, -0.59999999999999998, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.2297640574847937, -0.59999999999999998, 0.59999999999999998, ++ { 2.3029921578542232, -0.59999999999999998, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998, ++ { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler037 = 2.5000000000000020e-13; + +-// Test data for k=-0.59999999999999998, nu=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3559889697529752e-16 ++// Test data for k=-0.59999999999999998, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.2451074234797436e-16 ++// mean(f - f_Boost): 5.2735593669694933e-17 ++// variance(f - f_Boost): 3.4333862218458872e-34 ++// stddev(f - f_Boost): 1.8529398861932589e-17 + const testcase_ellint_3 + data038[10] = + { +- { 0.0000000000000000, -0.59999999999999998, 0.69999999999999996, ++ { 0.0000000000000000, -0.59999999999999998, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17362996946312007, -0.59999999999999998, 0.69999999999999996, ++ { 0.17610453321631936, -0.59999999999999998, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34225353454870588, -0.59999999999999998, 0.69999999999999996, ++ { 0.36193365056369764, -0.59999999999999998, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50259656397799524, -0.59999999999999998, 0.69999999999999996, ++ { 0.56874098962268527, -0.59999999999999998, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.65373184496628933, -0.59999999999999998, 0.69999999999999996, ++ { 0.81106198671477181, -0.59999999999999998, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.79658372884056439, -0.59999999999999998, 0.69999999999999996, ++ { 1.1086886419010082, -0.59999999999999998, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.93303240100245421, -0.59999999999999998, 0.69999999999999996, ++ { 1.4879048567239257, -0.59999999999999998, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0651547944716557, -0.59999999999999998, 0.69999999999999996, ++ { 1.9780310073615923, -0.59999999999999998, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1947676204853441, -0.59999999999999998, 0.69999999999999996, ++ { 2.5941545586772712, -0.59999999999999998, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.3232737468822813, -0.59999999999999998, 0.69999999999999996, ++ { 3.3029735898397155, -0.59999999999999998, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler038 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.80000000000000004. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.1879494682720725e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.3826960061025914e-16 ++// mean(f - f_Boost): 2.7478019859472625e-16 ++// variance(f - f_Boost): 4.6451528105588637e-32 ++// stddev(f - f_Boost): 2.1552616570984749e-16 + const testcase_ellint_3 + data039[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17345794195390685, -0.59999999999999998, 0.80000000000000004, ++ { 0.17628618080795252, -0.59999999999999998, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34098797854531027, -0.59999999999999998, 0.80000000000000004, ++ { 0.36349976272521012, -0.59999999999999998, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49882569168826213, -0.59999999999999998, 0.80000000000000004, ++ { 0.57474392342151914, -0.59999999999999998, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.64603758566475511, -0.59999999999999998, 0.80000000000000004, ++ { 0.82814493499158159, -0.59999999999999998, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.78380365594769730, -0.59999999999999998, 0.80000000000000004, ++ { 1.1511281795998280, -0.59999999999999998, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.91430946255611190, -0.59999999999999998, 0.80000000000000004, ++ { 1.5864286332503075, -0.59999999999999998, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0398955217270607, -0.59999999999999998, 0.80000000000000004, ++ { 2.1958944866494527, -0.59999999999999998, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1625948314277679, -0.59999999999999998, 0.80000000000000004, ++ { 3.0398358172574604, -0.59999999999999998, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004, ++ { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler039 = 2.5000000000000020e-13; + + // Test data for k=-0.59999999999999998, nu=0.90000000000000002. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4768329326726447e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.7440178400898422e-16 ++// mean(f - f_Boost): 5.0792703376600914e-16 ++// variance(f - f_Boost): 1.9863137923719990e-31 ++// stddev(f - f_Boost): 4.4568080420543122e-16 + const testcase_ellint_3 + data040[10] = + { + { 0.0000000000000000, -0.59999999999999998, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17328652344890030, -0.59999999999999998, 0.90000000000000002, ++ { 0.17646850384035848, -0.59999999999999998, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33973880062929018, -0.59999999999999998, 0.90000000000000002, ++ { 0.36509041515134105, -0.59999999999999998, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49515092233122743, -0.59999999999999998, 0.90000000000000002, ++ { 0.58097838596260631, -0.59999999999999998, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.63864042139737043, -0.59999999999999998, 0.90000000000000002, ++ { 0.84656453396163722, -0.59999999999999998, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.77167205646538850, -0.59999999999999998, 0.90000000000000002, ++ { 1.1997828426963724, -0.59999999999999998, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.89673202848034383, -0.59999999999999998, 0.90000000000000002, ++ { 1.7112436789225605, -0.59999999999999998, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0163984492661304, -0.59999999999999998, 0.90000000000000002, ++ { 2.5193168553672312, -0.59999999999999998, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1328845785162431, -0.59999999999999998, 0.90000000000000002, ++ { 3.8656670488606686, -0.59999999999999998, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002, ++ { 5.8709993116265595, -0.59999999999999998, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler040 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.0000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1201497220602069e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.5893058141206173e-32 ++// stddev(f - f_Boost): 1.6091320064309879e-16 + const testcase_ellint_3 + data041[10] = + { +@@ -1208,1469 +1330,1619 @@ + 0.0000000000000000 }, + { 0.17475385514035785, -0.50000000000000000, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35081868470101585, -0.50000000000000000, 0.0000000000000000, ++ { 0.35081868470101579, -0.50000000000000000, 0.0000000000000000, + 0.34906585039886590 }, + { 0.52942862705190574, -0.50000000000000000, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.71164727562630314, -0.50000000000000000, 0.0000000000000000, ++ { 0.71164727562630326, -0.50000000000000000, 0.0000000000000000, + 0.69813170079773179 }, + { 0.89824523594227768, -0.50000000000000000, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0895506700518851, -0.50000000000000000, 0.0000000000000000, ++ { 1.0895506700518853, -0.50000000000000000, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2853005857432931, -0.50000000000000000, 0.0000000000000000, ++ { 1.2853005857432933, -0.50000000000000000, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4845545520549484, -0.50000000000000000, 0.0000000000000000, ++ { 1.4845545520549488, -0.50000000000000000, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000, ++ { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler041 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.10000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1662857256911530e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 + const testcase_ellint_3 + data042[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17457763120814676, -0.50000000000000000, 0.10000000000000001, ++ { 0.17493071928248824, -0.50000000000000000, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34943246340849154, -0.50000000000000000, 0.10000000000000001, ++ { 0.35222467688034798, -0.50000000000000000, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52487937869610790, -0.50000000000000000, 0.10000000000000001, ++ { 0.53411928652008112, -0.50000000000000000, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.70127785096388384, -0.50000000000000000, 0.10000000000000001, ++ { 0.72256398117177589, -0.50000000000000000, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.87898815988624479, -0.50000000000000000, 0.10000000000000001, ++ { 0.91899583232771009, -0.50000000000000000, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0582764576094172, -0.50000000000000000, 0.10000000000000001, ++ { 1.1240549163055360, -0.50000000000000000, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2391936844060205, -0.50000000000000000, 0.10000000000000001, ++ { 1.3372938086286021, -0.50000000000000000, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.4214793542995841, -0.50000000000000000, 0.10000000000000001, ++ { 1.5570024469132429, -0.50000000000000000, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001, ++ { 1.7803034946545480, -0.50000000000000000, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler042 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.20000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2114786773102175e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 5.0311947683004831e-32 ++// stddev(f - f_Boost): 2.2430324938128922e-16 + const testcase_ellint_3 + data043[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17440204336345433, -0.50000000000000000, 0.20000000000000001, ++ { 0.17510822779582402, -0.50000000000000000, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34806552388338824, -0.50000000000000000, 0.20000000000000001, ++ { 0.35365094725531487, -0.50000000000000000, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52046416757129810, -0.50000000000000000, 0.20000000000000001, ++ { 0.53895933237328697, -0.50000000000000000, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.69140924550993865, -0.50000000000000000, 0.20000000000000001, ++ { 0.73408090840070794, -0.50000000000000000, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.86104678636125520, -0.50000000000000000, 0.20000000000000001, ++ { 0.94145442818535396, -0.50000000000000000, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0297439459053981, -0.50000000000000000, 0.20000000000000001, ++ { 1.1624120186296487, -0.50000000000000000, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1979214112912033, -0.50000000000000000, 0.20000000000000001, ++ { 1.3965823372867114, -0.50000000000000000, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3659033858648930, -0.50000000000000000, 0.20000000000000001, ++ { 1.6414308440430099, -0.50000000000000000, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001, ++ { 1.8922947612264018, -0.50000000000000000, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler043 = 2.5000000000000020e-13; + +-// Test data for k=-0.50000000000000000, nu=0.29999999999999999. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2557837230041312e-16 ++// Test data for k=-0.50000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 8.5027191584278157e-32 ++// stddev(f - f_Boost): 2.9159422419567599e-16 + const testcase_ellint_3 + data044[10] = + { +- { 0.0000000000000000, -0.50000000000000000, 0.29999999999999999, ++ { 0.0000000000000000, -0.50000000000000000, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17422708752228896, -0.50000000000000000, 0.29999999999999999, ++ { 0.17528638488102041, -0.50000000000000000, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34671739434855858, -0.50000000000000000, 0.29999999999999999, ++ { 0.35509802222332720, -0.50000000000000000, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51617616305641878, -0.50000000000000000, 0.29999999999999999, ++ { 0.54395740731866193, -0.50000000000000000, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.68200047612545167, -0.50000000000000000, 0.29999999999999999, ++ { 0.74625871438752667, -0.50000000000000000, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.84427217869498372, -0.50000000000000000, 0.29999999999999999, ++ { 0.96588271186092023, -0.50000000000000000, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0035637821389782, -0.50000000000000000, 0.29999999999999999, ++ { 1.2054319584357329, -0.50000000000000000, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1606800483933111, -0.50000000000000000, 0.29999999999999999, ++ { 1.4651077994832871, -0.50000000000000000, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.3164407134643459, -0.50000000000000000, 0.29999999999999999, ++ { 1.7416018368052644, -0.50000000000000000, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999, ++ { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler044 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.40000000000000002. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2992508582900068e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 9.0809736800018602e-32 ++// stddev(f - f_Boost): 3.0134653938616686e-16 + const testcase_ellint_3 + data045[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17405275963859917, -0.50000000000000000, 0.40000000000000002, ++ { 0.17546519477859268, -0.50000000000000000, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34538761957029329, -0.50000000000000000, 0.40000000000000002, ++ { 0.35656644822531680, -0.50000000000000000, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51200902646603907, -0.50000000000000000, 0.40000000000000002, ++ { 0.54912289677411319, -0.50000000000000000, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.67301522212868792, -0.50000000000000000, 0.40000000000000002, ++ { 0.75916731611690047, -0.50000000000000000, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.82853844466313320, -0.50000000000000000, 0.40000000000000002, ++ { 0.99260415631328214, -0.50000000000000000, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.97942097862681488, -0.50000000000000000, 0.40000000000000002, ++ { 1.2541925856918670, -0.50000000000000000, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1268429801220614, -0.50000000000000000, 0.40000000000000002, ++ { 1.5456393705347609, -0.50000000000000000, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2720406704533922, -0.50000000000000000, 0.40000000000000002, ++ { 1.8631904972952076, -0.50000000000000000, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002, ++ { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler045 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.50000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3419255755184137e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 + const testcase_ellint_3 + data046[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17387905570381157, -0.50000000000000000, 0.50000000000000000, ++ { 0.17564466176941509, -0.50000000000000000, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34407576010465207, -0.50000000000000000, 0.50000000000000000, ++ { 0.35805679276065394, -0.50000000000000000, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50795686560160824, -0.50000000000000000, 0.50000000000000000, ++ { 0.55446601496200032, -0.50000000000000000, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.66442115453330164, -0.50000000000000000, 0.50000000000000000, ++ { 0.77288783578259013, -0.50000000000000000, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.81373829119355345, -0.50000000000000000, 0.50000000000000000, ++ { 1.0220246013918972, -0.50000000000000000, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.95705743313235825, -0.50000000000000000, 0.50000000000000000, ++ { 1.3101681612463965, -0.50000000000000000, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0959131991362554, -0.50000000000000000, 0.50000000000000000, ++ { 1.6422994881851025, -0.50000000000000000, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2318900529754597, -0.50000000000000000, 0.50000000000000000, ++ { 2.0152636030998816, -0.50000000000000000, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000, ++ { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler046 = 2.5000000000000020e-13; + +-// Test data for k=-0.50000000000000000, nu=0.59999999999999998. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3838494104749599e-16 ++// Test data for k=-0.50000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16 ++// mean(f - f_Boost): 1.3322676295501878e-16 ++// variance(f - f_Boost): 1.7749370367472766e-31 ++// stddev(f - f_Boost): 4.2130001622920411e-16 + const testcase_ellint_3 + data047[10] = + { +- { 0.0000000000000000, -0.50000000000000000, 0.59999999999999998, ++ { 0.0000000000000000, -0.50000000000000000, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17370597174637581, -0.50000000000000000, 0.59999999999999998, ++ { 0.17582479017522740, -0.50000000000000000, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34278139158591414, -0.50000000000000000, 0.59999999999999998, ++ { 0.35956964546660036, -0.50000000000000000, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50401419439302708, -0.50000000000000000, 0.59999999999999998, ++ { 0.55999790372984193, -0.50000000000000000, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.65618938076167210, -0.50000000000000000, 0.59999999999999998, ++ { 0.78751507911209895, -0.50000000000000000, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.79977959248855424, -0.50000000000000000, 0.59999999999999998, ++ { 1.0546620505035220, -0.50000000000000000, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.93625925190753545, -0.50000000000000000, 0.59999999999999998, ++ { 1.3754438357425935, -0.50000000000000000, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0674905658379708, -0.50000000000000000, 0.59999999999999998, ++ { 1.7615727400820127, -0.50000000000000000, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1953481298023050, -0.50000000000000000, 0.59999999999999998, ++ { 2.2134638067565242, -0.50000000000000000, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998, ++ { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler047 = 2.5000000000000020e-13; + +-// Test data for k=-0.50000000000000000, nu=0.69999999999999996. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4250604066951477e-16 ++// Test data for k=-0.50000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 1.9996383743576116e-32 ++// stddev(f - f_Boost): 1.4140857026211713e-16 + const testcase_ellint_3 + data048[10] = + { +- { 0.0000000000000000, -0.50000000000000000, 0.69999999999999996, ++ { 0.0000000000000000, -0.50000000000000000, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17353350383131641, -0.50000000000000000, 0.69999999999999996, ++ { 0.17600558435914915, -0.50000000000000000, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34150410405436771, -0.50000000000000000, 0.69999999999999996, ++ { 0.36110561926726259, -0.50000000000000000, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50017589696443487, -0.50000000000000000, 0.69999999999999996, ++ { 0.56573074641137111, -0.50000000000000000, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64829398188419951, -0.50000000000000000, 0.69999999999999996, ++ { 0.80316073084237205, -0.50000000000000000, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.78658270782402073, -0.50000000000000000, 0.69999999999999996, ++ { 1.0911910688131461, -0.50000000000000000, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.91684738336675053, -0.50000000000000000, 0.69999999999999996, ++ { 1.4530946406380640, -0.50000000000000000, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0412486789555935, -0.50000000000000000, 0.69999999999999996, ++ { 1.9144386536785372, -0.50000000000000000, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1619021847612001, -0.50000000000000000, 0.69999999999999996, ++ { 2.4878788958234970, -0.50000000000000000, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996, ++ { 3.1433945297859225, -0.50000000000000000, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler048 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5715240651179632e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 + const testcase_ellint_3 + data049[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17336164805979126, -0.50000000000000000, 0.80000000000000004, ++ { 0.17618704872620228, -0.50000000000000000, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34024350132086773, -0.50000000000000000, 0.80000000000000004, ++ { 0.36266535159745827, -0.50000000000000000, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49643719555734073, -0.50000000000000000, 0.80000000000000004, ++ { 0.57167789954529158, -0.50000000000000000, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.64071162456976150, -0.50000000000000000, 0.80000000000000004, ++ { 0.81995752984315018, -0.50000000000000000, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.77407836177211908, -0.50000000000000000, 0.80000000000000004, ++ { 1.1325112162158122, -0.50000000000000000, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.89867058251905652, -0.50000000000000000, 0.80000000000000004, ++ { 1.5479055930718042, -0.50000000000000000, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0169181822134910, -0.50000000000000000, 0.80000000000000004, ++ { 2.1215243941010486, -0.50000000000000000, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1311363312779448, -0.50000000000000000, 0.80000000000000004, ++ { 2.9069405767650132, -0.50000000000000000, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004, ++ { 3.8750701888108066, -0.50000000000000000, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler049 = 2.5000000000000020e-13; + + // Test data for k=-0.50000000000000000, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4664649039489274e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16 ++// mean(f - f_Boost): 3.5249581031848718e-16 ++// variance(f - f_Boost): 2.5029385557256515e-31 ++// stddev(f - f_Boost): 5.0029376927217987e-16 + const testcase_ellint_3 + data050[10] = + { + { 0.0000000000000000, -0.50000000000000000, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17319040056865681, -0.50000000000000000, 0.90000000000000002, ++ { 0.17636918772384180, -0.50000000000000000, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33899920036578557, -0.50000000000000000, 0.90000000000000002, ++ { 0.36424950570740700, -0.50000000000000000, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49279362182695174, -0.50000000000000000, 0.90000000000000002, ++ { 0.57785404590231426, -0.50000000000000000, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.63342123379746151, -0.50000000000000000, 0.90000000000000002, ++ { 0.83806480521716531, -0.50000000000000000, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.76220595179550321, -0.50000000000000000, 0.90000000000000002, ++ { 1.1798568683069752, -0.50000000000000000, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.88160004743532294, -0.50000000000000000, 0.90000000000000002, ++ { 1.6678766243739607, -0.50000000000000000, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.99427448642310123, -0.50000000000000000, 0.90000000000000002, ++ { 2.4282976450693483, -0.50000000000000000, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1027091512470095, -0.50000000000000000, 0.90000000000000002, ++ { 3.6810787666126656, -0.50000000000000000, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002, ++ { 5.5355132096026454, -0.50000000000000000, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler050 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.0000000000000000. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.0617918857203532e-16 ++// Test data for k=-0.39999999999999991, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.1423314994346225e-16 ++// mean(f - f_Boost): 1.9428902930940238e-17 ++// variance(f - f_Boost): 2.2263750157116445e-32 ++// stddev(f - f_Boost): 1.4921042241450980e-16 + const testcase_ellint_3 + data051[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.0000000000000000, ++ { 0.0000000000000000, -0.39999999999999991, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17467414669441528, -0.40000000000000002, 0.0000000000000000, ++ { 0.17467414669441528, -0.39999999999999991, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35018222772483443, -0.40000000000000002, 0.0000000000000000, ++ { 0.35018222772483443, -0.39999999999999991, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52729015917508737, -0.40000000000000002, 0.0000000000000000, ++ { 0.52729015917508748, -0.39999999999999991, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70662374407341244, -0.40000000000000002, 0.0000000000000000, ++ { 0.70662374407341244, -0.39999999999999991, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.88859210497602170, -0.40000000000000002, 0.0000000000000000, ++ { 0.88859210497602159, -0.39999999999999991, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0733136290471379, -0.40000000000000002, 0.0000000000000000, ++ { 1.0733136290471381, -0.39999999999999991, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2605612170157061, -0.40000000000000002, 0.0000000000000000, ++ { 1.2605612170157066, -0.39999999999999991, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4497513956433439, -0.40000000000000002, 0.0000000000000000, ++ { 1.4497513956433439, -0.39999999999999991, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000, ++ { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler051 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.10000000000000001. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2644663257577874e-16 ++// Test data for k=-0.39999999999999991, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.8489340395463703e-16 ++// mean(f - f_Boost): 6.3837823915946496e-17 ++// variance(f - f_Boost): 4.4785242050000272e-32 ++// stddev(f - f_Boost): 2.1162523963365114e-16 + const testcase_ellint_3 + data052[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.10000000000000001, ++ { 0.0000000000000000, -0.39999999999999991, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17449806706684670, -0.40000000000000002, 0.10000000000000001, ++ { 0.17485086590796767, -0.39999999999999991, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34880048623856075, -0.40000000000000002, 0.10000000000000001, ++ { 0.35158366412506992, -0.39999999999999991, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52277322065757392, -0.40000000000000002, 0.10000000000000001, ++ { 0.53194731675711726, -0.39999999999999991, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69638072056918365, -0.40000000000000002, 0.10000000000000001, ++ { 0.71740615528010931, -0.39999999999999991, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.86968426619831540, -0.40000000000000002, 0.10000000000000001, ++ { 0.90896157773487030, -0.39999999999999991, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0428044206578095, -0.40000000000000002, 0.10000000000000001, ++ { 1.1069605483834348, -0.39999999999999991, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2158651158274378, -0.40000000000000002, 0.10000000000000001, ++ { 1.3109353428823001, -0.39999999999999991, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3889447129893324, -0.40000000000000002, 0.10000000000000001, ++ { 1.5195460789903448, -0.39999999999999991, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001, ++ { 1.7306968836847187, -0.39999999999999991, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler052 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.20000000000000001. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4583049464169287e-16 ++// Test data for k=-0.39999999999999991, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.0467985583872730e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 1.5826864298542218e-32 ++// stddev(f - f_Boost): 1.2580486595733180e-16 + const testcase_ellint_3 + data053[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.20000000000000001, ++ { 0.0000000000000000, -0.39999999999999991, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17432262290723397, -0.40000000000000002, 0.20000000000000001, ++ { 0.17502822886437389, -0.39999999999999991, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34743795258968596, -0.40000000000000002, 0.20000000000000001, ++ { 0.35300530062530805, -0.39999999999999991, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51838919472805101, -0.40000000000000002, 0.20000000000000001, ++ { 0.53675259548210896, -0.39999999999999991, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68663134739057907, -0.40000000000000002, 0.20000000000000001, ++ { 0.72878006428676934, -0.39999999999999991, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.85206432981833979, -0.40000000000000002, 0.20000000000000001, ++ { 0.93100219010583563, -0.39999999999999991, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0149595349004430, -0.40000000000000002, 0.20000000000000001, ++ { 1.1443487271187609, -0.39999999999999991, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1758349405464676, -0.40000000000000002, 0.20000000000000001, ++ { 1.3683427764108813, -0.39999999999999991, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3353337673882637, -0.40000000000000002, 0.20000000000000001, ++ { 1.6008221459300933, -0.39999999999999991, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001, ++ { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler053 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.29999999999999999. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.1925080711125793e-16 ++// Test data for k=-0.39999999999999991, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.9973414591826100e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 1.5826864298542218e-32 ++// stddev(f - f_Boost): 1.2580486595733180e-16 + const testcase_ellint_3 + data054[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.29999999999999999, ++ { 0.0000000000000000, -0.39999999999999991, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17414781013591540, -0.40000000000000002, 0.29999999999999999, ++ { 0.17520623975982899, -0.39999999999999991, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34609415696777285, -0.40000000000000002, 0.29999999999999999, ++ { 0.35444766141612105, -0.39999999999999991, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51413131295862535, -0.40000000000000002, 0.29999999999999999, ++ { 0.54171455841536009, -0.39999999999999991, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67733527622935630, -0.40000000000000002, 0.29999999999999999, ++ { 0.74080517001084012, -0.39999999999999991, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.83558675182733266, -0.40000000000000002, 0.29999999999999999, ++ { 0.95496950509296563, -0.39999999999999991, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.98940140808865906, -0.40000000000000002, 0.29999999999999999, ++ { 1.1862627879844718, -0.39999999999999991, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1396968797728058, -0.40000000000000002, 0.29999999999999999, ++ { 1.4346501803799458, -0.39999999999999991, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2875920037865090, -0.40000000000000002, 0.29999999999999999, ++ { 1.6971744798077697, -0.39999999999999991, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999, ++ { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler054 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.40000000000000002. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.8235661108581362e-16 ++// Test data for k=-0.39999999999999991, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2577246923979600e-16 ++// mean(f - f_Boost): 1.8596235662471373e-16 ++// variance(f - f_Boost): 1.6222417021441306e-31 ++// stddev(f - f_Boost): 4.0277061736727151e-16 + const testcase_ellint_3 + data055[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.40000000000000002, ++ { 0.0000000000000000, -0.39999999999999991, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17397362471112707, -0.40000000000000002, 0.40000000000000002, ++ { 0.17538490283034375, -0.39999999999999991, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34476864603333196, -0.40000000000000002, 0.40000000000000002, ++ { 0.35591129064319948, -0.39999999999999991, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50999329415379346, -0.40000000000000002, 0.40000000000000002, ++ { 0.54684250413264535, -0.39999999999999991, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66845674551396006, -0.40000000000000002, 0.40000000000000002, ++ { 0.75355027742668290, -0.39999999999999991, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.82012848346231748, -0.40000000000000002, 0.40000000000000002, ++ { 0.98117935026780634, -0.39999999999999991, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.96582449258349057, -0.40000000000000002, 0.40000000000000002, ++ { 1.2337464222030734, -0.39999999999999991, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1068473749476286, -0.40000000000000002, 0.40000000000000002, ++ { 1.5125183419289221, -0.39999999999999991, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2447132729159989, -0.40000000000000002, 0.40000000000000002, ++ { 1.8140224451130311, -0.39999999999999991, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002, ++ { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler055 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.50000000000000000. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.9965792755639576e-16 ++// Test data for k=-0.39999999999999991, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.8009196014748294e-16 ++// mean(f - f_Boost): 1.6375789613221060e-16 ++// variance(f - f_Boost): 6.4788283329186610e-32 ++// stddev(f - f_Boost): 2.5453542647181080e-16 + const testcase_ellint_3 + data056[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.50000000000000000, ++ { 0.0000000000000000, -0.39999999999999991, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17380006262854136, -0.40000000000000002, 0.50000000000000000, ++ { 0.17556422235224273, -0.39999999999999991, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34346098216756610, -0.40000000000000002, 0.50000000000000000, ++ { 0.35739675341763921, -0.39999999999999991, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50596929935059420, -0.40000000000000002, 0.50000000000000000, ++ { 0.55214655195037188, -0.39999999999999991, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65996392089131251, -0.40000000000000002, 0.50000000000000000, ++ { 0.76709520942047438, -0.39999999999999991, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.80558463511364786, -0.40000000000000002, 0.50000000000000000, ++ { 1.0100278761577499, -0.39999999999999991, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.94397834522857704, -0.40000000000000002, 0.50000000000000000, ++ { 1.2882265661384342, -0.39999999999999991, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0768075114108115, -0.40000000000000002, 0.50000000000000000, ++ { 1.6059059780051874, -0.39999999999999991, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2059184624251333, -0.40000000000000002, 0.50000000000000000, ++ { 1.9600182740224081, -0.39999999999999991, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000, ++ { 2.3367461373176508, -0.39999999999999991, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler056 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.59999999999999998. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.1640223038298069e-16 ++// Test data for k=-0.39999999999999991, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.8411408870840790e-16 ++// mean(f - f_Boost): 9.7144514654701197e-17 ++// variance(f - f_Boost): 1.4860570558543486e-32 ++// stddev(f - f_Boost): 1.2190393988113545e-16 + const testcase_ellint_3 + data057[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.59999999999999998, ++ { 0.0000000000000000, -0.39999999999999991, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17362711992081245, -0.40000000000000002, 0.59999999999999998, ++ { 0.17574420264267029, -0.39999999999999991, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34217074276403953, -0.40000000000000002, 0.59999999999999998, ++ { 0.35890463689046265, -0.39999999999999991, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50205389185761606, -0.40000000000000002, 0.59999999999999998, ++ { 0.55763773975194486, -0.39999999999999991, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.65182834920372734, -0.40000000000000002, 0.59999999999999998, ++ { 0.78153324227761267, -0.39999999999999991, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.79186512820565136, -0.40000000000000002, 0.59999999999999998, ++ { 1.0420205885765887, -0.39999999999999991, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.92365535916287134, -0.40000000000000002, 0.59999999999999998, ++ { 1.3517205230381770, -0.39999999999999991, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0491915663957907, -0.40000000000000002, 0.59999999999999998, ++ { 1.7210360970313896, -0.39999999999999991, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1705934291745106, -0.40000000000000002, 0.59999999999999998, ++ { 2.1500780510169242, -0.39999999999999991, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998, ++ { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler057 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.3264047918332349e-16 ++// Test data for k=-0.39999999999999991, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.1553900340611668e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.3242789405258207e-32 ++// stddev(f - f_Boost): 1.1507731924779187e-16 + const testcase_ellint_3 + data058[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.69999999999999996, ++ { 0.0000000000000000, -0.39999999999999991, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17345479265712868, -0.40000000000000002, 0.69999999999999996, ++ { 0.17592484806010436, -0.39999999999999991, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34089751955950354, -0.40000000000000002, 0.69999999999999996, ++ { 0.36043555139631439, -0.39999999999999991, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49824200167361332, -0.40000000000000002, 0.69999999999999996, ++ { 0.56332813669944881, -0.39999999999999991, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64402450341199402, -0.40000000000000002, 0.69999999999999996, ++ { 0.79697424562157548, -0.39999999999999991, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.77889207804122873, -0.40000000000000002, 0.69999999999999996, ++ { 1.0778155987523672, -0.39999999999999991, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.90468169720957992, -0.40000000000000002, 0.69999999999999996, ++ { 1.4272018169896268, -0.39999999999999991, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0236847823692916, -0.40000000000000002, 0.69999999999999996, ++ { 1.8684377907453380, -0.39999999999999991, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1382465247425166, -0.40000000000000002, 0.69999999999999996, ++ { 2.4128677409207469, -0.39999999999999991, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996, ++ { 3.0327078743873241, -0.39999999999999991, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler058 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.80000000000000004. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.6611561645571024e-16 ++// Test data for k=-0.39999999999999991, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5727642219519274e-16 ++// mean(f - f_Boost): 2.1926904736346843e-16 ++// variance(f - f_Boost): 1.5293405480859847e-31 ++// stddev(f - f_Boost): 3.9106783913868252e-16 + const testcase_ellint_3 + data059[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.80000000000000004, ++ { 0.0000000000000000, -0.39999999999999991, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17328307694277154, -0.40000000000000002, 0.80000000000000004, ++ { 0.17610616300487833, -0.39999999999999991, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33964091800132007, -0.40000000000000002, 0.80000000000000004, ++ { 0.36199013167171978, -0.39999999999999991, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49452889372467440, -0.40000000000000002, 0.80000000000000004, ++ { 0.56923097361842423, -0.39999999999999991, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63652940095937316, -0.40000000000000002, 0.80000000000000004, ++ { 0.81354878456624347, -0.39999999999999991, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.76659772511159097, -0.40000000000000002, 0.80000000000000004, ++ { 1.1182902719261825, -0.39999999999999991, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.88691047977338111, -0.40000000000000002, 0.80000000000000004, ++ { 1.5192950589409022, -0.39999999999999991, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0000273200611638, -0.40000000000000002, 0.80000000000000004, ++ { 2.0678761710223981, -0.39999999999999991, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1084787902188009, -0.40000000000000002, 0.80000000000000004, ++ { 2.8135222249879783, -0.39999999999999991, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004, ++ { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler059 = 2.5000000000000020e-13; + +-// Test data for k=-0.40000000000000002, nu=0.90000000000000002. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.6376730823308004e-16 ++// Test data for k=-0.39999999999999991, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.0221626338023938e-16 ++// mean(f - f_Boost): 4.1910919179599658e-16 ++// variance(f - f_Boost): 6.2246150910247033e-31 ++// stddev(f - f_Boost): 7.8896229891070860e-16 + const testcase_ellint_3 + data060[10] = + { +- { 0.0000000000000000, -0.40000000000000002, 0.90000000000000002, ++ { 0.0000000000000000, -0.39999999999999991, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17311196891868127, -0.40000000000000002, 0.90000000000000002, ++ { 0.17628815191971123, -0.39999999999999991, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33840055664911906, -0.40000000000000002, 0.90000000000000002, ++ { 0.36356903815378772, -0.39999999999999991, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49091013944075329, -0.40000000000000002, 0.90000000000000002, ++ { 0.57536079447000310, -0.39999999999999991, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62932228186809580, -0.40000000000000002, 0.90000000000000002, ++ { 0.83141355850172571, -0.39999999999999991, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.75492278323019801, -0.40000000000000002, 0.90000000000000002, ++ { 1.1646481598721361, -0.39999999999999991, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.87021659043854294, -0.40000000000000002, 0.90000000000000002, ++ { 1.6357275034001995, -0.39999999999999991, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.97800245228239246, -0.40000000000000002, 0.90000000000000002, ++ { 2.3628787566572398, -0.39999999999999991, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0809625773173697, -0.40000000000000002, 0.90000000000000002, ++ { 3.5521010369134958, -0.39999999999999991, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002, ++ { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler060 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.0000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.3361874537309281e-16 ++// Test data for k=-0.29999999999999993, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16 ++// mean(f - f_Boost): 4.9960036108132046e-17 ++// variance(f - f_Boost): 4.6872855002064458e-32 ++// stddev(f - f_Boost): 2.1650139722889657e-16 + const testcase_ellint_3 + data061[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.0000000000000000, ++ { 0.0000000000000000, -0.29999999999999993, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17461228653000099, -0.30000000000000004, 0.0000000000000000, ++ { 0.17461228653000099, -0.29999999999999993, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34969146102798415, -0.30000000000000004, 0.0000000000000000, ++ { 0.34969146102798421, -0.29999999999999993, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52565822873726320, -0.30000000000000004, 0.0000000000000000, ++ { 0.52565822873726309, -0.29999999999999993, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70284226512408532, -0.30000000000000004, 0.0000000000000000, ++ { 0.70284226512408543, -0.29999999999999993, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.88144139195111182, -0.30000000000000004, 0.0000000000000000, ++ { 0.88144139195111171, -0.29999999999999993, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0614897067260520, -0.30000000000000004, 0.0000000000000000, ++ { 1.0614897067260520, -0.29999999999999993, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2428416824174218, -0.30000000000000004, 0.0000000000000000, ++ { 1.2428416824174220, -0.29999999999999993, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4251795877015927, -0.30000000000000004, 0.0000000000000000, ++ { 1.4251795877015929, -0.29999999999999993, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.6080486199305128, -0.30000000000000004, 0.0000000000000000, ++ { 1.6080486199305126, -0.29999999999999993, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler061 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.10000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.3908043711907203e-16 ++// Test data for k=-0.29999999999999993, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 4.0359883022230488e-32 ++// stddev(f - f_Boost): 2.0089769292411121e-16 + const testcase_ellint_3 + data062[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.10000000000000001, ++ { 0.0000000000000000, -0.29999999999999993, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17443631884814376, -0.30000000000000004, 0.10000000000000001, ++ { 0.17478889331392972, -0.29999999999999993, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34831316835124926, -0.30000000000000004, 0.10000000000000001, ++ { 0.35108939018329183, -0.29999999999999993, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52116586276523857, -0.30000000000000004, 0.10000000000000001, ++ { 0.53028990896115835, -0.29999999999999993, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69269385837910036, -0.30000000000000004, 0.10000000000000001, ++ { 0.71352417052371409, -0.29999999999999993, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.86279023163070856, -0.30000000000000004, 0.10000000000000001, ++ { 0.90153086032405894, -0.29999999999999993, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0315321461438263, -0.30000000000000004, 0.10000000000000001, ++ { 1.0945187977283313, -0.29999999999999993, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1991449111869024, -0.30000000000000004, 0.10000000000000001, ++ { 1.2920699268385680, -0.29999999999999993, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3659561780923213, -0.30000000000000004, 0.10000000000000001, ++ { 1.4931243665896394, -0.29999999999999993, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5323534693557528, -0.30000000000000004, 0.10000000000000001, ++ { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler062 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.20000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4447238179454079e-16 ++// Test data for k=-0.29999999999999993, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16 ++// mean(f - f_Boost): 1.1102230246251565e-16 ++// variance(f - f_Boost): 3.8043060629871325e-32 ++// stddev(f - f_Boost): 1.9504630380981672e-16 + const testcase_ellint_3 + data063[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.20000000000000001, ++ { 0.0000000000000000, -0.29999999999999993, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17426098615372088, -0.30000000000000004, 0.20000000000000001, ++ { 0.17496614335337535, -0.29999999999999993, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34695402664689923, -0.30000000000000004, 0.20000000000000001, ++ { 0.35250745937139372, -0.29999999999999993, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51680555567038933, -0.30000000000000004, 0.20000000000000001, ++ { 0.53506875002836884, -0.29999999999999993, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68303375225260210, -0.30000000000000004, 0.20000000000000001, ++ { 0.72479106622248191, -0.29999999999999993, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.84540662891295026, -0.30000000000000004, 0.20000000000000001, ++ { 0.92326451535891607, -0.29999999999999993, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0041834051646927, -0.30000000000000004, 0.20000000000000001, ++ { 1.1312092060698349, -0.29999999999999993, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1599952702345711, -0.30000000000000004, 0.20000000000000001, ++ { 1.3481473154592321, -0.29999999999999993, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3137179520499165, -0.30000000000000004, 0.20000000000000001, ++ { 1.5722049569662748, -0.29999999999999993, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4663658145259877, -0.30000000000000004, 0.20000000000000001, ++ { 1.8002173372290498, -0.29999999999999993, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler063 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.29999999999999999. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4979715256503266e-16 ++// Test data for k=-0.29999999999999993, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 + const testcase_ellint_3 + data064[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.29999999999999999, ++ { 0.0000000000000000, -0.29999999999999993, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17408628437042842, -0.30000000000000004, 0.29999999999999999, ++ { 0.17514404084107435, -0.29999999999999993, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34561356761638401, -0.30000000000000004, 0.29999999999999999, ++ { 0.35394619108645647, -0.29999999999999993, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51257058617875850, -0.30000000000000004, 0.29999999999999999, ++ { 0.54000325463372689, -0.29999999999999993, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67382207124602878, -0.30000000000000004, 0.29999999999999999, ++ { 0.73670193794067651, -0.29999999999999993, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82914751587825131, -0.30000000000000004, 0.29999999999999999, ++ { 0.94689345491722177, -0.29999999999999993, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.97907434814374938, -0.30000000000000004, 0.29999999999999999, ++ { 1.1723274608389140, -0.29999999999999993, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1246399297351584, -0.30000000000000004, 0.29999999999999999, ++ { 1.4128880552936287, -0.29999999999999993, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2671793970398149, -0.30000000000000004, 0.29999999999999999, ++ { 1.6659010047449661, -0.29999999999999993, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4081767433479091, -0.30000000000000004, 0.29999999999999999, ++ { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler064 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.40000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.5505716921759864e-16 ++// Test data for k=-0.29999999999999993, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.8245832308692586e-31 ++// stddev(f - f_Boost): 4.2715140534349863e-16 + const testcase_ellint_3 + data065[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.40000000000000002, ++ { 0.0000000000000000, -0.29999999999999993, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17391220945982727, -0.30000000000000004, 0.40000000000000002, ++ { 0.17532259000954434, -0.29999999999999993, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34429133937639689, -0.30000000000000004, 0.40000000000000002, ++ { 0.35540612770983693, -0.29999999999999993, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50845471668581632, -0.30000000000000004, 0.40000000000000002, ++ { 0.54510265552938919, -0.29999999999999993, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66502347027873854, -0.30000000000000004, 0.40000000000000002, ++ { 0.74932476310965057, -0.29999999999999993, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.81389191978012254, -0.30000000000000004, 0.40000000000000002, ++ { 0.97272793583093109, -0.29999999999999993, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.95590618002140570, -0.30000000000000004, 0.40000000000000002, ++ { 1.2188928987074241, -0.29999999999999993, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0924915195213121, -0.30000000000000004, 0.40000000000000002, ++ { 1.4888771674085941, -0.29999999999999993, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2253651604038061, -0.30000000000000004, 0.40000000000000002, ++ { 1.7794558498219191, -0.29999999999999993, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3563643538969763, -0.30000000000000004, 0.40000000000000002, ++ { 2.0822121773175528, -0.29999999999999993, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler065 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.50000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.7807908859023716e-16 ++// Test data for k=-0.29999999999999993, nu=0.50000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16 ++// mean(f - f_Boost): 4.7184478546569152e-17 ++// variance(f - f_Boost): 1.9448563670505968e-32 ++// stddev(f - f_Boost): 1.3945810722401896e-16 + const testcase_ellint_3 + data066[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.50000000000000000, ++ { 0.0000000000000000, -0.29999999999999993, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17373875742088232, -0.30000000000000004, 0.50000000000000000, ++ { 0.17550179513158179, -0.29999999999999993, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34298690571124157, -0.30000000000000004, 0.50000000000000000, ++ { 0.35688783251681200, -0.29999999999999993, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50445214859646936, -0.30000000000000004, 0.50000000000000000, ++ { 0.55037700010142798, -0.29999999999999993, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65660648352418516, -0.30000000000000004, 0.50000000000000000, ++ { 0.76273839789895992, -0.29999999999999993, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79953670639287289, -0.30000000000000004, 0.50000000000000000, ++ { 1.0011570518830419, -0.29999999999999993, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.93443393926588536, -0.30000000000000004, 0.50000000000000000, ++ { 1.2722987414055109, -0.29999999999999993, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0630838369016911, -0.30000000000000004, 0.50000000000000000, ++ { 1.5799590511080066, -0.29999999999999993, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1875197325653029, -0.30000000000000004, 0.50000000000000000, ++ { 1.9212367220124293, -0.29999999999999993, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3098448759814962, -0.30000000000000004, 0.50000000000000000, ++ { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler066 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.59999999999999998. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.0057999499931649e-16 ++// Test data for k=-0.29999999999999993, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16 ++// mean(f - f_Boost): 1.9428902930940239e-16 ++// variance(f - f_Boost): 1.5987596229703424e-31 ++// stddev(f - f_Boost): 3.9984492281012430e-16 + const testcase_ellint_3 + data067[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.59999999999999998, ++ { 0.0000000000000000, -0.29999999999999993, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17356592428950823, -0.30000000000000004, 0.59999999999999998, ++ { 0.17568166052076745, -0.29999999999999993, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34169984536697379, -0.30000000000000004, 0.59999999999999998, ++ { 0.35839189074731181, -0.29999999999999993, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50055748266498457, -0.30000000000000004, 0.59999999999999998, ++ { 0.55583724744367558, -0.29999999999999993, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64854298527106768, -0.30000000000000004, 0.59999999999999998, ++ { 0.77703498090888223, -0.29999999999999993, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.78599329284207431, -0.30000000000000004, 0.59999999999999998, ++ { 1.0326772113675962, -0.29999999999999993, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.91445452089128199, -0.30000000000000004, 0.59999999999999998, ++ { 1.3345139983717369, -0.29999999999999993, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0360412952290587, -0.30000000000000004, 0.59999999999999998, ++ { 1.6921742922838403, -0.29999999999999993, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1530473919778641, -0.30000000000000004, 0.59999999999999998, ++ { 2.1056608968472186, -0.29999999999999993, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2677758800420669, -0.30000000000000004, 0.59999999999999998, ++ { 2.5560975528589061, -0.29999999999999993, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler067 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.69999999999999996. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.2239502844122443e-16 ++// Test data for k=-0.29999999999999993, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16 ++// mean(f - f_Boost): 1.6653345369377348e-16 ++// variance(f - f_Boost): 3.1994213989721786e-31 ++// stddev(f - f_Boost): 5.6563428104846852e-16 + const testcase_ellint_3 + data068[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.69999999999999996, ++ { 0.0000000000000000, -0.29999999999999993, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17339370613812224, -0.30000000000000004, 0.69999999999999996, ++ { 0.17586219053197988, -0.29999999999999993, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34042975138455933, -0.30000000000000004, 0.69999999999999996, ++ { 0.35991891074557669, -0.29999999999999993, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49676568368075985, -0.30000000000000004, 0.69999999999999996, ++ { 0.56149538019961731, -0.29999999999999993, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64080774055753720, -0.30000000000000004, 0.69999999999999996, ++ { 0.79232303189667685, -0.29999999999999993, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.77318507779667278, -0.30000000000000004, 0.69999999999999996, ++ { 1.0679345542878826, -0.29999999999999993, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.89579782346548609, -0.30000000000000004, 0.69999999999999996, ++ { 1.4084400085913955, -0.29999999999999993, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0110573286052202, -0.30000000000000004, 0.69999999999999996, ++ { 1.8357382859296454, -0.29999999999999993, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1214710972949635, -0.30000000000000004, 0.69999999999999996, ++ { 2.3604197996171519, -0.29999999999999993, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2294913236274982, -0.30000000000000004, 0.69999999999999996, ++ { 2.9562123549913872, -0.29999999999999993, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler068 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.80000000000000004. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.4358357000101250e-16 ++// Test data for k=-0.29999999999999993, nu=0.80000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16 ++// mean(f - f_Boost): 3.4416913763379854e-16 ++// variance(f - f_Boost): 4.3461914185990199e-31 ++// stddev(f - f_Boost): 6.5925650687718054e-16 + const testcase_ellint_3 + data069[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.80000000000000004, ++ { 0.0000000000000000, -0.29999999999999993, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17322209907520358, -0.30000000000000004, 0.80000000000000004, ++ { 0.17604338956191670, -0.29999999999999993, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33917623046949996, -0.30000000000000004, 0.80000000000000004, ++ { 0.36146952517410791, -0.29999999999999993, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49307204894329176, -0.30000000000000004, 0.80000000000000004, ++ { 0.56736453393774644, -0.29999999999999993, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63337802830291734, -0.30000000000000004, 0.80000000000000004, ++ { 0.80873149979001091, -0.29999999999999993, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.76104540997689407, -0.30000000000000004, 0.80000000000000004, ++ { 1.1077903069860620, -0.29999999999999993, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.87832009635450714, -0.30000000000000004, 0.80000000000000004, ++ { 1.4985874311132998, -0.29999999999999993, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.98787879723171790, -0.30000000000000004, 0.80000000000000004, ++ { 2.0298167266724954, -0.29999999999999993, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0924036340069339, -0.30000000000000004, 0.80000000000000004, ++ { 2.7483929054985432, -0.29999999999999993, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1944567571590048, -0.30000000000000004, 0.80000000000000004, ++ { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler069 = 2.5000000000000020e-13; + +-// Test data for k=-0.30000000000000004, nu=0.90000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.6419688299804087e-16 ++// Test data for k=-0.29999999999999993, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16 ++// mean(f - f_Boost): 4.1633363423443370e-16 ++// variance(f - f_Boost): 2.2835347143080263e-31 ++// stddev(f - f_Boost): 4.7786344433405093e-16 + const testcase_ellint_3 + data070[10] = + { +- { 0.0000000000000000, -0.30000000000000004, 0.90000000000000002, ++ { 0.0000000000000000, -0.29999999999999993, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17305109924485945, -0.30000000000000004, 0.90000000000000002, ++ { 0.17622526204962433, -0.29999999999999993, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33793890239556984, -0.30000000000000004, 0.90000000000000002, ++ { 0.36304439230777141, -0.29999999999999993, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48947218005089738, -0.30000000000000004, 0.90000000000000002, ++ { 0.57345914744719195, -0.29999999999999993, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62623332340775151, -0.30000000000000004, 0.90000000000000002, ++ { 0.82641512928845162, -0.29999999999999993, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74951596581511148, -0.30000000000000004, 0.90000000000000002, ++ { 1.1534256210757743, -0.29999999999999993, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.86189886597755994, -0.30000000000000004, 0.90000000000000002, ++ { 1.6124900353411677, -0.29999999999999993, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.96629451153092005, -0.30000000000000004, 0.90000000000000002, ++ { 2.3165905514845089, -0.29999999999999993, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0655269133492682, -0.30000000000000004, 0.90000000000000002, ++ { 3.4625619526539824, -0.29999999999999993, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1622376896064914, -0.30000000000000004, 0.90000000000000002, ++ { 5.1479514944016787, -0.29999999999999993, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler070 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2156475739151676e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16 ++// mean(f - f_Boost): -5.2735593669694933e-17 ++// variance(f - f_Boost): 3.0473442641042680e-32 ++// stddev(f - f_Boost): 1.7456644190978597e-16 + const testcase_ellint_3 + data071[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17456817290292809, -0.19999999999999996, 0.0000000000000000, ++ { 0.17456817290292806, -0.19999999999999996, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34934315932086801, -0.19999999999999996, 0.0000000000000000, ++ { 0.34934315932086796, -0.19999999999999996, 0.0000000000000000, + 0.34906585039886590 }, + { 0.52450880529443988, -0.19999999999999996, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70020491009844876, -0.19999999999999996, 0.0000000000000000, ++ { 0.70020491009844887, -0.19999999999999996, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.87651006649967955, -0.19999999999999996, 0.0000000000000000, ++ { 0.87651006649967977, -0.19999999999999996, 0.0000000000000000, + 0.87266462599716477 }, + { 1.0534305870298994, -0.19999999999999996, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2308975521670784, -0.19999999999999996, 0.0000000000000000, ++ { 1.2308975521670789, -0.19999999999999996, 0.0000000000000000, + 1.2217304763960306 }, + { 1.4087733584990738, -0.19999999999999996, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.5868678474541660, -0.19999999999999996, 0.0000000000000000, ++ { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler071 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3374593253183472e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16 ++// mean(f - f_Boost): -3.8857805861880476e-17 ++// variance(f - f_Boost): 2.8794792590749608e-32 ++// stddev(f - f_Boost): 1.6969028431454054e-16 + const testcase_ellint_3 + data072[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17439228502691748, -0.19999999999999996, 0.10000000000000001, ++ { 0.17474469953608965, -0.19999999999999996, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34796731137565740, -0.19999999999999996, 0.10000000000000001, ++ { 0.35073860234984255, -0.19999999999999996, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52003370294544848, -0.19999999999999996, 0.10000000000000001, ++ { 0.52912258712951521, -0.19999999999999996, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69012222258631462, -0.19999999999999996, 0.10000000000000001, ++ { 0.71081701558898069, -0.19999999999999996, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.85803491465566772, -0.19999999999999996, 0.10000000000000001, ++ { 0.89640758521169384, -0.19999999999999996, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0238463961099364, -0.19999999999999996, 0.10000000000000001, ++ { 1.0860417038089853, -0.19999999999999996, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1878691059202153, -0.19999999999999996, 0.10000000000000001, ++ { 1.2793599255528623, -0.19999999999999996, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3505985031831940, -0.19999999999999996, 0.10000000000000001, ++ { 1.4754938544089076, -0.19999999999999996, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5126513474261087, -0.19999999999999996, 0.10000000000000001, ++ { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler072 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4549984059502760e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 3.1158217732380362e-32 ++// stddev(f - f_Boost): 1.7651690494788412e-16 + const testcase_ellint_3 + data073[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17421703179583747, -0.19999999999999996, 0.20000000000000001, ++ { 0.17492186907740698, -0.19999999999999996, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34661057411998791, -0.19999999999999996, 0.20000000000000001, ++ { 0.35215414286134267, -0.19999999999999996, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51569006052647393, -0.19999999999999996, 0.20000000000000001, ++ { 0.53388285615182440, -0.19999999999999996, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68052412821107244, -0.19999999999999996, 0.20000000000000001, ++ { 0.72200960282688265, -0.19999999999999996, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.84081341263313825, -0.19999999999999996, 0.20000000000000001, ++ { 0.91793087614428526, -0.19999999999999996, 0.20000000000000001, + 0.87266462599716477 }, +- { 0.99683359988842890, -0.19999999999999996, 0.20000000000000001, ++ { 1.1222602841587976, -0.19999999999999996, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1493086715118852, -0.19999999999999996, 0.20000000000000001, ++ { 1.3345489407496247, -0.19999999999999996, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.2992699693957541, -0.19999999999999996, 0.20000000000000001, ++ { 1.5531225705475502, -0.19999999999999996, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4479323932249564, -0.19999999999999996, 0.20000000000000001, ++ { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler073 = 2.5000000000000020e-13; + +-// Test data for k=-0.19999999999999996, nu=0.29999999999999999. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.3140668101543467e-16 ++// Test data for k=-0.19999999999999996, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16 ++// mean(f - f_Boost): -1.1102230246251566e-17 ++// variance(f - f_Boost): 9.9840208317034302e-32 ++// stddev(f - f_Boost): 3.1597501217190311e-16 + const testcase_ellint_3 + data074[10] = + { +- { 0.0000000000000000, -0.19999999999999996, 0.29999999999999999, ++ { 0.0000000000000000, -0.19999999999999996, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17404240913577704, -0.19999999999999996, 0.29999999999999999, ++ { 0.17509968571715159, -0.19999999999999996, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34527248032587193, -0.19999999999999996, 0.29999999999999999, ++ { 0.35359030214835629, -0.19999999999999996, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51147118981668416, -0.19999999999999996, 0.29999999999999999, ++ { 0.53879807274537084, -0.19999999999999996, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67137107867777601, -0.19999999999999996, 0.29999999999999999, ++ { 0.73384116418059731, -0.19999999999999996, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82470418188668893, -0.19999999999999996, 0.29999999999999999, ++ { 0.94132799329524031, -0.19999999999999996, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.97202873223594299, -0.19999999999999996, 0.29999999999999999, ++ { 1.1628407021801439, -0.19999999999999996, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1144773569375266, -0.19999999999999996, 0.29999999999999999, ++ { 1.3982440216739438, -0.19999999999999996, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2535292433701000, -0.19999999999999996, 0.29999999999999999, ++ { 1.6450634983653640, -0.19999999999999996, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.3908453514752477, -0.19999999999999996, 0.29999999999999999, ++ { 1.8983924169967099, -0.19999999999999996, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler074 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.6788709752760483e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3298410018355870e-16 ++// mean(f - f_Boost): 1.3877787807814457e-17 ++// variance(f - f_Boost): 9.4370567274974557e-32 ++// stddev(f - f_Boost): 3.0719792850046133e-16 + const testcase_ellint_3 + data075[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17386841301066674, -0.19999999999999996, 0.40000000000000002, ++ { 0.17527815368535152, -0.19999999999999996, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34395257914113253, -0.19999999999999996, 0.40000000000000002, ++ { 0.35504762134297801, -0.19999999999999996, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50737088376869466, -0.19999999999999996, 0.40000000000000002, ++ { 0.54387742353211344, -0.19999999999999996, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66262801717277631, -0.19999999999999996, 0.40000000000000002, ++ { 0.74637910471804259, -0.19999999999999996, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.80958766645079094, -0.19999999999999996, 0.40000000000000002, ++ { 0.96690539714174639, -0.19999999999999996, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.94913754236162040, -0.19999999999999996, 0.40000000000000002, ++ { 1.2087859420184757, -0.19999999999999996, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0827985514222997, -0.19999999999999996, 0.40000000000000002, ++ { 1.4729799844168852, -0.19999999999999996, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2124212429050478, -0.19999999999999996, 0.40000000000000002, ++ { 1.7564445064596661, -0.19999999999999996, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3400002519661005, -0.19999999999999996, 0.40000000000000002, ++ { 2.0512956926676802, -0.19999999999999996, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler075 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7788201301356829e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16 ++// mean(f - f_Boost): 8.0491169285323847e-17 ++// variance(f - f_Boost): 8.0538110429953348e-32 ++// stddev(f - f_Boost): 2.8379237204328335e-16 + const testcase_ellint_3 + data076[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17369503942181799, -0.19999999999999996, 0.50000000000000000, ++ { 0.17545727725228877, -0.19999999999999996, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34265043534362660, -0.19999999999999996, 0.50000000000000000, ++ { 0.35652666242062175, -0.19999999999999996, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50338337208655415, -0.19999999999999996, 0.50000000000000000, ++ { 0.54913090549102406, -0.19999999999999996, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65426373297163609, -0.19999999999999996, 0.50000000000000000, ++ { 0.75970161209211551, -0.19999999999999996, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79536193036145808, -0.19999999999999996, 0.50000000000000000, ++ { 0.99504737401590326, -0.19999999999999996, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.92791875910061605, -0.19999999999999996, 0.50000000000000000, ++ { 1.2614666007124373, -0.19999999999999996, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0538145052725829, -0.19999999999999996, 0.50000000000000000, ++ { 1.5625255355205496, -0.19999999999999996, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1752060022875899, -0.19999999999999996, 0.50000000000000000, ++ { 1.8954460255613343, -0.19999999999999996, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.2943374404397372, -0.19999999999999996, 0.50000000000000000, ++ { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler076 = 2.5000000000000020e-13; + +-// Test data for k=-0.19999999999999996, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.8899223779598256e-16 ++// Test data for k=-0.19999999999999996, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 1.0045745697575397e-31 ++// stddev(f - f_Boost): 3.1695024369095219e-16 + const testcase_ellint_3 + data077[10] = + { +- { 0.0000000000000000, -0.19999999999999996, 0.59999999999999998, ++ { 0.0000000000000000, -0.19999999999999996, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17352228440746925, -0.19999999999999996, 0.59999999999999998, ++ { 0.17563706072900442, -0.19999999999999996, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34136562863713626, -0.19999999999999996, 0.59999999999999998, ++ { 0.35802800926807238, -0.19999999999999996, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.49950328177638481, -0.19999999999999996, 0.59999999999999998, ++ { 0.55456942250515051, -0.19999999999999996, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64625032705690799, -0.19999999999999996, 0.59999999999999998, ++ { 0.77390003828438203, -0.19999999999999996, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.78193941198403083, -0.19999999999999996, 0.59999999999999998, ++ { 1.0262441366366397, -0.19999999999999996, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.90817230934317128, -0.19999999999999996, 0.59999999999999998, ++ { 1.3228192988439669, -0.19999999999999996, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0271563751276462, -0.19999999999999996, 0.59999999999999998, ++ { 1.6728005754680795, -0.19999999999999996, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1412999379040518, -0.19999999999999996, 0.59999999999999998, ++ { 2.0761587107468511, -0.19999999999999996, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2530330675914556, -0.19999999999999996, 0.59999999999999998, ++ { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler077 = 2.5000000000000020e-13; + +-// Test data for k=-0.19999999999999996, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.9999318361775115e-16 ++// Test data for k=-0.19999999999999996, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.1818454249546518e-16 ++// mean(f - f_Boost): 3.6082248300317589e-17 ++// variance(f - f_Boost): 8.9638010532618564e-32 ++// stddev(f - f_Boost): 2.9939607634806868e-16 + const testcase_ellint_3 + data078[10] = + { +- { 0.0000000000000000, -0.19999999999999996, 0.69999999999999996, ++ { 0.0000000000000000, -0.19999999999999996, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17335014404233895, -0.19999999999999996, 0.69999999999999996, ++ { 0.17581750846781172, -0.19999999999999996, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34009775298617811, -0.19999999999999996, 0.69999999999999996, ++ { 0.35955226882028513, -0.19999999999999996, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49572560201923810, -0.19999999999999996, 0.69999999999999996, ++ { 0.56020489659466499, -0.19999999999999996, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.63856276669886503, -0.19999999999999996, 0.69999999999999996, ++ { 0.78908196988531487, -0.19999999999999996, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.76924438644867565, -0.19999999999999996, 0.69999999999999996, ++ { 1.0611336754143517, -0.19999999999999996, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.88973060843856466, -0.19999999999999996, 0.69999999999999996, ++ { 1.3956969951058884, -0.19999999999999996, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0025230471636377, -0.19999999999999996, 0.69999999999999996, ++ { 1.8138131612209609, -0.19999999999999996, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1102356376093103, -0.19999999999999996, 0.69999999999999996, ++ { 2.3256365528879561, -0.19999999999999996, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2154356555075863, -0.19999999999999996, 0.69999999999999996, ++ { 2.9058704854500963, -0.19999999999999996, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler078 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.0901276230707249e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9866614515542431e-16 ++// mean(f - f_Boost): 1.8318679906315082e-16 ++// variance(f - f_Boost): 3.1335688610218711e-31 ++// stddev(f - f_Boost): 5.5978289193417400e-16 + const testcase_ellint_3 + data079[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17317861443718538, -0.19999999999999996, 0.80000000000000004, ++ { 0.17599862486281712, -0.19999999999999996, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33884641598718701, -0.19999999999999996, 0.80000000000000004, ++ { 0.36110007227128776, -0.19999999999999996, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49204565281259494, -0.19999999999999996, 0.80000000000000004, ++ { 0.56605039658567224, -0.19999999999999996, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63117851188220320, -0.19999999999999996, 0.80000000000000004, ++ { 0.80537523874517691, -0.19999999999999996, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.75721095949544170, -0.19999999999999996, 0.80000000000000004, ++ { 1.1005662342414086, -0.19999999999999996, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.87245201443919118, -0.19999999999999996, 0.80000000000000004, ++ { 1.4845340298105778, -0.19999999999999996, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.97966584238831089, -0.19999999999999996, 0.80000000000000004, ++ { 2.0043332244969392, -0.19999999999999996, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0816336325174360, -0.19999999999999996, 0.80000000000000004, ++ { 2.7052856676744761, -0.19999999999999996, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1810223448909909, -0.19999999999999996, 0.80000000000000004, ++ { 3.5622166386422629, -0.19999999999999996, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler079 = 2.5000000000000020e-13; + + // Test data for k=-0.19999999999999996, nu=0.90000000000000002. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4833128442756722e-16 ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2817178727913890e-16 ++// mean(f - f_Boost): 3.4694469519536142e-16 ++// variance(f - f_Boost): 6.6311432369155086e-31 ++// stddev(f - f_Boost): 8.1431831840598485e-16 + const testcase_ellint_3 + data080[10] = + { + { 0.0000000000000000, -0.19999999999999996, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17300769173837277, -0.19999999999999996, 0.90000000000000002, ++ { 0.17618041435044951, -0.19999999999999996, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33761123827372508, -0.19999999999999996, 0.90000000000000002, ++ { 0.36267207636502929, -0.19999999999999996, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48845905690769426, -0.19999999999999996, 0.90000000000000002, ++ { 0.57212028758237743, -0.19999999999999996, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62407720017324952, -0.19999999999999996, 0.90000000000000002, ++ { 0.82293323876704483, -0.19999999999999996, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74578146525124289, -0.19999999999999996, 0.90000000000000002, ++ { 1.1457077279880385, -0.19999999999999996, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.85621583540073076, -0.19999999999999996, 0.90000000000000002, ++ { 1.5967346899325681, -0.19999999999999996, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.95837725988001199, -0.19999999999999996, 0.90000000000000002, ++ { 2.2856537353421724, -0.19999999999999996, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0551821412633928, -0.19999999999999996, 0.90000000000000002, ++ { 3.4034714304613902, -0.19999999999999996, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1493679916141861, -0.19999999999999996, 0.90000000000000002, ++ { 5.0448269356200361, -0.19999999999999996, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler080 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1735566504509650e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 8.2258607846939269e-33 ++// stddev(f - f_Boost): 9.0696531271564778e-17 + const testcase_ellint_3 + data081[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17454173353063659, -0.099999999999999978, 0.0000000000000000, ++ { 0.17454173353063662, -0.099999999999999978, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34913506721468091, -0.099999999999999978, 0.0000000000000000, ++ { 0.34913506721468096, -0.099999999999999978, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52382550016538942, -0.099999999999999978, 0.0000000000000000, ++ { 0.52382550016538953, -0.099999999999999978, 0.0000000000000000, + 0.52359877559829882 }, + { 0.69864700854177020, -0.099999999999999978, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.87361792586964870, -0.099999999999999978, 0.0000000000000000, ++ { 0.87361792586964859, -0.099999999999999978, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0487386319621683, -0.099999999999999978, 0.0000000000000000, ++ { 1.0487386319621685, -0.099999999999999978, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2239913752078757, -0.099999999999999978, 0.0000000000000000, ++ { 1.2239913752078759, -0.099999999999999978, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.3993423113684049, -0.099999999999999978, 0.0000000000000000, ++ { 1.3993423113684051, -0.099999999999999978, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000, ++ { 1.5747455615173558, -0.099999999999999978, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler081 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3097339877269682e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 + const testcase_ellint_3 + data082[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17436589347616613, -0.099999999999999978, 0.10000000000000001, ++ { 0.17471821213559732, -0.099999999999999978, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34776067871237359, -0.099999999999999978, 0.10000000000000001, ++ { 0.35052902610011138, -0.099999999999999978, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.51936064354727796, -0.099999999999999978, 0.10000000000000001, ++ { 0.52842865990255727, -0.099999999999999978, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.68860303749364349, -0.099999999999999978, 0.10000000000000001, ++ { 0.70921799731166713, -0.099999999999999978, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.85524561882332051, -0.099999999999999978, 0.10000000000000001, ++ { 0.89340330535868662, -0.099999999999999978, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0193708301908335, -0.099999999999999978, 0.10000000000000001, ++ { 1.0811075784236857, -0.099999999999999978, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1813474067123044, -0.099999999999999978, 0.10000000000000001, ++ { 1.2720133232666426, -0.099999999999999978, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3417670770424983, -0.099999999999999978, 0.10000000000000001, ++ { 1.4653630031861395, -0.099999999999999978, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001, ++ { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler082 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4399947764827574e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16 ++// mean(f - f_Boost): 5.5511151231257830e-18 ++// variance(f - f_Boost): 3.8043060629871325e-36 ++// stddev(f - f_Boost): 1.9504630380981673e-18 + const testcase_ellint_3 + data083[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17419068786141340, -0.099999999999999978, 0.20000000000000001, ++ { 0.17489533344059083, -0.099999999999999978, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34640537686230133, -0.099999999999999978, 0.20000000000000001, ++ { 0.35194305707815038, -0.099999999999999978, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51502689171753946, -0.099999999999999978, 0.20000000000000001, ++ { 0.53317790741512527, -0.099999999999999978, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.67904147863672715, -0.099999999999999978, 0.20000000000000001, ++ { 0.72036681615081222, -0.099999999999999978, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.83811885126105179, -0.099999999999999978, 0.20000000000000001, ++ { 0.91480372268244303, -0.099999999999999978, 0.20000000000000001, + 0.87266462599716477 }, +- { 0.99255278555742787, -0.099999999999999978, 0.20000000000000001, ++ { 1.1170528708071514, -0.099999999999999978, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1431260546194930, -0.099999999999999978, 0.20000000000000001, ++ { 1.3266916802718358, -0.099999999999999978, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.2909589656532101, -0.099999999999999978, 0.20000000000000001, ++ { 1.5421622241831547, -0.099999999999999978, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001, ++ { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler083 = 2.5000000000000020e-13; + +-// Test data for k=-0.099999999999999978, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5650492137236872e-16 ++// Test data for k=-0.099999999999999978, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16 ++// mean(f - f_Boost): -1.6653345369377347e-17 ++// variance(f - f_Boost): 3.4238754566884194e-35 ++// stddev(f - f_Boost): 5.8513891142945016e-18 + const testcase_ellint_3 + data084[10] = + { +- { 0.0000000000000000, -0.099999999999999978, 0.29999999999999999, ++ { 0.0000000000000000, -0.099999999999999978, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17401611261390104, -0.099999999999999978, 0.29999999999999999, ++ { 0.17507310163441189, -0.099999999999999978, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34506869507511773, -0.099999999999999978, 0.29999999999999999, ++ { 0.35337768072524217, -0.099999999999999978, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51081757604259859, -0.099999999999999978, 0.29999999999999999, ++ { 0.53808167801629170, -0.099999999999999978, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.66992297597712303, -0.099999999999999978, 0.29999999999999999, ++ { 0.73215166755955019, -0.099999999999999978, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82209722856174228, -0.099999999999999978, 0.29999999999999999, ++ { 0.93806546000201219, -0.099999999999999978, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.96792430487669590, -0.099999999999999978, 0.29999999999999999, ++ { 1.1573218723395986, -0.099999999999999978, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1085964108954092, -0.099999999999999978, 0.29999999999999999, ++ { 1.3897859679542097, -0.099999999999999978, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2456748370836999, -0.099999999999999978, 0.29999999999999999, ++ { 1.6331009404328622, -0.099999999999999978, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999, ++ { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler084 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.6854758534459740e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 9.5107651574678308e-35 ++// stddev(f - f_Boost): 9.7523151904908362e-18 + const testcase_ellint_3 + data085[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17384216369897931, -0.099999999999999978, 0.40000000000000002, ++ { 0.17525152094559704, -0.099999999999999978, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34375018311376787, -0.099999999999999978, 0.40000000000000002, ++ { 0.35483343742825979, -0.099999999999999978, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50672650758380455, -0.099999999999999978, 0.40000000000000002, ++ { 0.54314913099505446, -0.099999999999999978, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66121264213337616, -0.099999999999999978, 0.40000000000000002, ++ { 0.74463962034766862, -0.099999999999999978, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.80706202005774441, -0.099999999999999978, 0.40000000000000002, ++ { 0.96349276837570441, -0.099999999999999978, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.94519376138245870, -0.099999999999999978, 0.40000000000000002, ++ { 1.2029081382746343, -0.099999999999999978, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0771880300759584, -0.099999999999999978, 0.40000000000000002, ++ { 1.4638022887050806, -0.099999999999999978, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2049711557188272, -0.099999999999999978, 0.40000000000000002, ++ { 1.7432413830105224, -0.099999999999999978, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002, ++ { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler085 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8017534281650347e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 + const testcase_ellint_3 + data086[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17366883711936548, -0.099999999999999978, 0.50000000000000000, ++ { 0.17543059564292182, -0.099999999999999978, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34244940634881882, -0.099999999999999978, 0.50000000000000000, ++ { 0.35631088838721664, -0.099999999999999978, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50274793281634367, -0.099999999999999978, 0.50000000000000000, ++ { 0.54839023346436444, -0.099999999999999978, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65287941633275082, -0.099999999999999978, 0.50000000000000000, ++ { 0.75790846946088830, -0.099999999999999978, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79291198790315398, -0.099999999999999978, 0.50000000000000000, ++ { 0.99146713686720678, -0.099999999999999978, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.92412201537880323, -0.099999999999999978, 0.50000000000000000, ++ { 1.2551692247937198, -0.099999999999999978, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0484480076799372, -0.099999999999999978, 0.50000000000000000, ++ { 1.5524660788146873, -0.099999999999999978, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1681168130475206, -0.099999999999999978, 0.50000000000000000, ++ { 1.8806578570830670, -0.099999999999999978, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000, ++ { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler086 = 2.5000000000000020e-13; + +-// Test data for k=-0.099999999999999978, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.9142834151672032e-16 ++// Test data for k=-0.099999999999999978, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 1.6073193116120635e-34 ++// stddev(f - f_Boost): 1.2678009747638087e-17 + const testcase_ellint_3 + data087[10] = + { +- { 0.0000000000000000, -0.099999999999999978, 0.59999999999999998, ++ { 0.0000000000000000, -0.099999999999999978, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17349612891469013, -0.099999999999999978, 0.59999999999999998, ++ { 0.17561033003590576, -0.099999999999999978, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34116594505539444, -0.099999999999999978, 0.59999999999999998, ++ { 0.35781061668171932, -0.099999999999999978, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.49887649430466674, -0.099999999999999978, 0.59999999999999998, ++ { 0.55381585659629196, -0.099999999999999978, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64489553282165146, -0.099999999999999978, 0.59999999999999998, ++ { 0.77204910484575640, -0.099999999999999978, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.77956016553782437, -0.099999999999999978, 0.59999999999999998, ++ { 1.0224751740393108, -0.099999999999999978, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.90451074530096287, -0.099999999999999978, 0.59999999999999998, ++ { 1.3160230906351114, -0.099999999999999978, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0220113666961632, -0.099999999999999978, 0.59999999999999998, ++ { 1.6616282844233206, -0.099999999999999978, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1345351441065563, -0.099999999999999978, 0.59999999999999998, ++ { 2.0592555664850392, -0.099999999999999978, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998, ++ { 2.4913004919173822, -0.099999999999999978, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler087 = 2.5000000000000020e-13; + +-// Test data for k=-0.099999999999999978, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.5172091551439012e-16 ++// Test data for k=-0.099999999999999978, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 + const testcase_ellint_3 + data088[10] = + { +- { 0.0000000000000000, -0.099999999999999978, 0.69999999999999996, ++ { 0.0000000000000000, -0.099999999999999978, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17332403516105047, -0.099999999999999978, 0.69999999999999996, ++ { 0.17579072847532518, -0.099999999999999978, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.33989939374896883, -0.099999999999999978, 0.69999999999999996, ++ { 0.35933322840606297, -0.099999999999999978, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49510719568614070, -0.099999999999999978, 0.69999999999999996, ++ { 0.55943788649460324, -0.099999999999999978, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.63723607776354974, -0.099999999999999978, 0.69999999999999996, ++ { 0.78716856504031707, -0.099999999999999978, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.76693133887935327, -0.099999999999999978, 0.69999999999999996, ++ { 1.0571501305617423, -0.099999999999999978, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.88619382078823805, -0.099999999999999978, 0.69999999999999996, ++ { 1.3882948301743525, -0.099999999999999978, 0.70000000000000007, + 1.0471975511965976 }, +- { 0.99758012018676490, -0.099999999999999978, 0.69999999999999996, ++ { 1.8011785680114223, -0.099999999999999978, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1037642270814410, -0.099999999999999978, 0.69999999999999996, ++ { 2.3057268183616464, -0.099999999999999978, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2073745911083185, -0.099999999999999978, 0.69999999999999996, ++ { 2.8771910188009739, -0.099999999999999978, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler088 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1294144515772258e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 6.1843750436434569e-32 ++// stddev(f - f_Boost): 2.4868403735751633e-16 + const testcase_ellint_3 + data089[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17315255197057014, -0.099999999999999978, 0.80000000000000004, ++ { 0.17597179535373417, -0.099999999999999978, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33864936055747991, -0.099999999999999978, 0.80000000000000004, ++ { 0.36087935387831499, -0.099999999999999978, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49143537041117613, -0.099999999999999978, 0.80000000000000004, ++ { 0.56526935244526444, -0.099999999999999978, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.62987861760047492, -0.099999999999999978, 0.80000000000000004, ++ { 0.80339402590612397, -0.099999999999999978, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.75496005490917517, -0.099999999999999978, 0.80000000000000004, ++ { 1.0963358646374459, -0.099999999999999978, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.86903081862701881, -0.099999999999999978, 0.80000000000000004, ++ { 1.4763748483246868, -0.099999999999999978, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.97490814820725591, -0.099999999999999978, 0.80000000000000004, ++ { 1.9896610222794102, -0.099999999999999978, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0754290107171083, -0.099999999999999978, 0.80000000000000004, ++ { 2.6806423920122024, -0.099999999999999978, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004, ++ { 3.5246199613295612, -0.099999999999999978, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler089 = 2.5000000000000020e-13; + + // Test data for k=-0.099999999999999978, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2325599449457852e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16 ++// mean(f - f_Boost): 2.3314683517128288e-16 ++// variance(f - f_Boost): 2.9401198977189756e-31 ++// stddev(f - f_Boost): 5.4222872459129045e-16 + const testcase_ellint_3 + data090[10] = + { + { 0.0000000000000000, -0.099999999999999978, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17298167549096563, -0.099999999999999978, 0.90000000000000002, ++ { 0.17615353510599349, -0.099999999999999978, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33741546662741589, -0.099999999999999978, 0.90000000000000002, ++ { 0.36244964892922371, -0.099999999999999978, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48785665376856868, -0.099999999999999978, 0.90000000000000002, ++ { 0.57132457590110530, -0.099999999999999978, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62280288554518959, -0.099999999999999978, 0.90000000000000002, ++ { 0.82087808820385000, -0.099999999999999978, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74358903115455188, -0.099999999999999978, 0.90000000000000002, ++ { 1.1411894342144451, -0.099999999999999978, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.85290207679298335, -0.099999999999999978, 0.90000000000000002, ++ { 1.5875929286844597, -0.099999999999999978, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.95379006645397379, -0.099999999999999978, 0.90000000000000002, ++ { 2.2678622986596659, -0.099999999999999978, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0492213119872327, -0.099999999999999978, 0.90000000000000002, ++ { 3.3697528941897903, -0.099999999999999978, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002, ++ { 4.9862890417305499, -0.099999999999999978, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler090 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.0000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.1203697876423452e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.1203697876423447e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 + const testcase_ellint_3 + data091[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17453292519943292, 0.0000000000000000, 0.0000000000000000, ++ { 0.17453292519943295, 0.0000000000000000, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34906585039886584, 0.0000000000000000, 0.0000000000000000, ++ { 0.34906585039886590, 0.0000000000000000, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52359877559829870, 0.0000000000000000, 0.0000000000000000, ++ { 0.52359877559829882, 0.0000000000000000, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.69813170079773168, 0.0000000000000000, 0.0000000000000000, ++ { 0.69813170079773179, 0.0000000000000000, 0.0000000000000000, + 0.69813170079773179 }, + { 0.87266462599716477, 0.0000000000000000, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0471975511965974, 0.0000000000000000, 0.0000000000000000, ++ { 1.0471975511965976, 0.0000000000000000, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2217304763960304, 0.0000000000000000, 0.0000000000000000, ++ { 1.2217304763960306, 0.0000000000000000, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.3962634015954631, 0.0000000000000000, 0.0000000000000000, ++ { 1.3962634015954636, 0.0000000000000000, 0.0000000000000000, + 1.3962634015954636 }, + { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000, + 1.5707963267948966 }, +@@ -2678,849 +2950,939 @@ + const double toler091 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.10000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.1813975824747021e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.1019052604815601e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 9.5107651574678312e-37 ++// stddev(f - f_Boost): 9.7523151904908366e-19 + const testcase_ellint_3 + data092[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17435710107516605, 0.0000000000000000, 0.10000000000000001, ++ { 0.17470938780535167, 0.0000000000000000, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34769194715329604, 0.0000000000000000, 0.10000000000000001, ++ { 0.35045931581655582, 0.0000000000000000, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.51913731575866107, 0.0000000000000000, 0.10000000000000001, ++ { 0.52819841383849875, 0.0000000000000000, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.68810051897078450, 0.0000000000000000, 0.10000000000000001, ++ { 0.70868910807992958, 0.0000000000000000, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.85432615661706823, 0.0000000000000000, 0.10000000000000001, ++ { 0.89241311307249638, 0.0000000000000000, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0179006647340794, 0.0000000000000000, 0.10000000000000001, ++ { 1.0794871444666669, 0.0000000000000000, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1792120640746322, 0.0000000000000000, 0.10000000000000001, ++ { 1.2696086247356864, 0.0000000000000000, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3388834245070498, 0.0000000000000000, 0.10000000000000001, ++ { 1.4620562617494721, 0.0000000000000000, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001, ++ { 1.6557647109660167, 0.0000000000000000, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler092 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.20000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.2402804784409065e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0831888697465320e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 + const testcase_ellint_3 + data093[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17418191132226074, 0.0000000000000000, 0.20000000000000001, ++ { 0.17488649304197776, 0.0000000000000000, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34633712256943405, 0.0000000000000000, 0.20000000000000001, ++ { 0.35187284488675424, 0.0000000000000000, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51480684302043700, 0.0000000000000000, 0.20000000000000001, ++ { 0.53294400750146131, 0.0000000000000000, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.67855102942481937, 0.0000000000000000, 0.20000000000000001, ++ { 0.71982347021822823, 0.0000000000000000, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.83723056090326253, 0.0000000000000000, 0.20000000000000001, ++ { 0.91377311030258745, 0.0000000000000000, 0.20000000000000001, + 0.87266462599716477 }, +- { 0.99114645269578161, 0.0000000000000000, 0.20000000000000001, ++ { 1.1153429007215137, 0.0000000000000000, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1411014627915537, 0.0000000000000000, 0.20000000000000001, ++ { 1.3241202847784086, 0.0000000000000000, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.2882448138013969, 0.0000000000000000, 0.20000000000000001, ++ { 1.5385854914338242, 0.0000000000000000, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001, ++ { 1.7562036827601815, 0.0000000000000000, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler093 = 2.5000000000000020e-13; + +-// Test data for k=0.0000000000000000, nu=0.29999999999999999. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.2972291118632678e-16 ++// Test data for k=0.0000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0642101770923591e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 + const testcase_ellint_3 + data094[10] = + { +- { 0.0000000000000000, 0.0000000000000000, 0.29999999999999999, ++ { 0.0000000000000000, 0.0000000000000000, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17400735186871724, 0.0000000000000000, 0.29999999999999999, ++ { 0.17506424509761404, 0.0000000000000000, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34500091027020219, 0.0000000000000000, 0.29999999999999999, ++ { 0.35330695794774630, 0.0000000000000000, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51060069523901530, 0.0000000000000000, 0.29999999999999999, ++ { 0.53784398359522367, 0.0000000000000000, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.66944393961375448, 0.0000000000000000, 0.29999999999999999, ++ { 0.73159289408687844, 0.0000000000000000, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82123776744538157, 0.0000000000000000, 0.29999999999999999, ++ { 0.93699031797084975, 0.0000000000000000, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.96657579245516501, 0.0000000000000000, 0.29999999999999999, ++ { 1.1555098909390267, 0.0000000000000000, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1066703663542414, 0.0000000000000000, 0.29999999999999999, ++ { 1.3870184960144325, 0.0000000000000000, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2431094251944901, 0.0000000000000000, 0.29999999999999999, ++ { 1.6291980835772994, 0.0000000000000000, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999, ++ { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler094 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.40000000000000002. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.3524218164111537e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0449580089795878e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 + const testcase_ellint_3 + data095[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17383341868035862, 0.0000000000000000, 0.40000000000000002, ++ { 0.17524264820030025, 0.0000000000000000, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34368286022299821, 0.0000000000000000, 0.40000000000000002, ++ { 0.35476219513871499, 0.0000000000000000, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50651268947499395, 0.0000000000000000, 0.40000000000000002, ++ { 0.54290749235440094, 0.0000000000000000, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66074441806097539, 0.0000000000000000, 0.40000000000000002, ++ { 0.74406433757109913, 0.0000000000000000, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.80622931670113474, 0.0000000000000000, 0.40000000000000002, ++ { 0.96236826162553313, 0.0000000000000000, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.94389791565435210, 0.0000000000000000, 0.40000000000000002, ++ { 1.2009785880262487, 0.0000000000000000, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0753503387899728, 0.0000000000000000, 0.40000000000000002, ++ { 1.4608000106167567, 0.0000000000000000, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2025374759127518, 0.0000000000000000, 0.40000000000000002, ++ { 1.7389349574753439, 0.0000000000000000, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3275651989026320, 0.0000000000000000, 0.40000000000000002, ++ { 2.0278893379868057, 0.0000000000000000, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler095 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.50000000000000000. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.6090167266677240e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.0254203825026289e-16 ++// mean(f - f_Boost): -1.9428902930940238e-17 ++// variance(f - f_Boost): 4.6602749271592373e-35 ++// stddev(f - f_Boost): 6.8266206333435850e-18 + const testcase_ellint_3 + data096[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17366010776037044, 0.0000000000000000, 0.50000000000000000, ++ { 0.17542170661831016, 0.0000000000000000, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34238253799539309, 0.0000000000000000, 0.50000000000000000, ++ { 0.35623911740195419, 0.0000000000000000, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50253707775976397, 0.0000000000000000, 0.50000000000000000, ++ { 0.54814449099863127, 0.0000000000000000, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65242145347295766, 0.0000000000000000, 0.50000000000000000, ++ { 0.75731546607718081, 0.0000000000000000, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79210420018698058, 0.0000000000000000, 0.50000000000000000, ++ { 0.99028751188233310, 0.0000000000000000, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.92287437995632171, 0.0000000000000000, 0.50000000000000000, ++ { 1.2531022857760581, 0.0000000000000000, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0466900550798659, 0.0000000000000000, 0.50000000000000000, ++ { 1.5491761777615785, 0.0000000000000000, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1658007366618623, 0.0000000000000000, 0.50000000000000000, ++ { 1.8758359693666533, 0.0000000000000000, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000, ++ { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler096 = 2.5000000000000020e-13; + +-// Test data for k=0.0000000000000000, nu=0.59999999999999998. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.4581288258006758e-16 ++// Test data for k=0.0000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.1742785192400269e-16 ++// mean(f - f_Boost): 1.3877787807814457e-17 ++// variance(f - f_Boost): 2.3776912893669577e-35 ++// stddev(f - f_Boost): 4.8761575952454181e-18 + const testcase_ellint_3 + data097[10] = + { +- { 0.0000000000000000, 0.0000000000000000, 0.59999999999999998, ++ { 0.0000000000000000, 0.0000000000000000, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17348741514884700, 0.0000000000000000, 0.59999999999999998, ++ { 0.17560142466065651, 0.0000000000000000, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34109952405241289, 0.0000000000000000, 0.59999999999999998, ++ { 0.35773830754879005, 0.0000000000000000, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.49866850781226285, 0.0000000000000000, 0.59999999999999998, ++ { 0.55356583986445973, 0.0000000000000000, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64444732407062499, 0.0000000000000000, 0.59999999999999998, ++ { 0.77143701715151514, 0.0000000000000000, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.77877564686544720, 0.0000000000000000, 0.59999999999999998, ++ { 1.0212334940541210, 0.0000000000000000, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.90330743691883475, 0.0000000000000000, 0.59999999999999998, ++ { 1.3137928444460387, 0.0000000000000000, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0203257987604104, 0.0000000000000000, 0.59999999999999998, ++ { 1.6579755004159076, 0.0000000000000000, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1323247918768629, 0.0000000000000000, 0.59999999999999998, ++ { 2.0537461418295506, 0.0000000000000000, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998, ++ { 2.4836470664490253, 0.0000000000000000, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler097 = 2.5000000000000020e-13; + +-// Test data for k=0.0000000000000000, nu=0.69999999999999996. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 2.5088894797856263e-16 ++// Test data for k=0.0000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 4 ++// max(|f - f_Boost| / |f_Boost|): 3.0903019454022601e-16 ++// mean(f - f_Boost): -6.9388939039072284e-17 ++// variance(f - f_Boost): 5.9442282234173945e-34 ++// stddev(f - f_Boost): 2.4380787976227090e-17 + const testcase_ellint_3 + data098[10] = + { +- { 0.0000000000000000, 0.0000000000000000, 0.69999999999999996, ++ { 0.0000000000000000, 0.0000000000000000, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17331533692234474, 0.0000000000000000, 0.69999999999999996, ++ { 0.17578180667760368, 0.0000000000000000, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.33983341309265935, 0.0000000000000000, 0.69999999999999996, ++ { 0.35926037139410999, 0.0000000000000000, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49490198805931979, 0.0000000000000000, 0.69999999999999996, ++ { 0.55918341315855080, 0.0000000000000000, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.63679715525145297, 0.0000000000000000, 0.69999999999999996, ++ { 0.78653584856932546, 0.0000000000000000, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.76616861049481944, 0.0000000000000000, 0.69999999999999996, ++ { 1.0558379029273324, 0.0000000000000000, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.88503143209004198, 0.0000000000000000, 0.69999999999999996, ++ { 1.3858662544850615, 0.0000000000000000, 0.70000000000000007, + 1.0471975511965976 }, +- { 0.99596060249112173, 0.0000000000000000, 0.69999999999999996, ++ { 1.7970491170359040, 0.0000000000000000, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1016495050260424, 0.0000000000000000, 0.69999999999999996, ++ { 2.2992404490153917, 0.0000000000000000, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996, ++ { 2.8678686047727382, 0.0000000000000000, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler098 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.80000000000000004. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8375904358197891e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.2373744057922657e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 + const testcase_ellint_3 + data099[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17314386919344210, 0.0000000000000000, 0.80000000000000004, ++ { 0.17596285706118869, 0.0000000000000000, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33858381342073240, 0.0000000000000000, 0.80000000000000004, ++ { 0.36080593896484231, 0.0000000000000000, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49123285640844727, 0.0000000000000000, 0.80000000000000004, ++ { 0.56501022706967863, 0.0000000000000000, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.62944854858904509, 0.0000000000000000, 0.80000000000000004, ++ { 0.80273891984116930, 0.0000000000000000, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.75421778305499343, 0.0000000000000000, 0.80000000000000004, ++ { 1.0949425007763358, 0.0000000000000000, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.86790634112156617, 0.0000000000000000, 0.80000000000000004, ++ { 1.4736985692253419, 0.0000000000000000, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.97334918087427558, 0.0000000000000000, 0.80000000000000004, ++ { 1.9848676587180696, 0.0000000000000000, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0734012615283985, 0.0000000000000000, 0.80000000000000004, ++ { 2.6726187823193546, 0.0000000000000000, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004, ++ { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler099 = 2.5000000000000020e-13; + + // Test data for k=0.0000000000000000, nu=0.90000000000000002. +-// max(|f - f_GSL|): 1.1102230246251565e-16 +-// max(|f - f_GSL| / |f_GSL|): 1.7838310376154469e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 6.6108624815885066e-16 ++// mean(f - f_Boost): 2.1371793224034264e-16 ++// variance(f - f_Boost): 5.6389326618626776e-33 ++// stddev(f - f_Boost): 7.5092826966779442e-17 + const testcase_ellint_3 + data100[10] = + { + { 0.0000000000000000, 0.0000000000000000, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17297300811030597, 0.0000000000000000, 0.90000000000000002, ++ { 0.17614458024574997, 0.0000000000000000, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33735034635360817, 0.0000000000000000, 0.90000000000000002, ++ { 0.36237566578821978, 0.0000000000000000, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48765675230233130, 0.0000000000000000, 0.90000000000000002, ++ { 0.57106058859196640, 0.0000000000000000, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62238126886123568, 0.0000000000000000, 0.90000000000000002, ++ { 0.82019857015755915, 0.0000000000000000, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74286600807269243, 0.0000000000000000, 0.90000000000000002, ++ { 1.1397014388908147, 0.0000000000000000, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.85181283909264949, 0.0000000000000000, 0.90000000000000002, ++ { 1.5845952415154960, 0.0000000000000000, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.95228683995371133, 0.0000000000000000, 0.90000000000000002, ++ { 2.2620531413370775, 0.0000000000000000, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0472730487412552, 0.0000000000000000, 0.90000000000000002, ++ { 3.3587842061975066, 0.0000000000000000, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002, ++ { 4.9672941328980507, 0.0000000000000000, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler100 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1735566504509650e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 + const testcase_ellint_3 + data101[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17454173353063659, 0.10000000000000009, 0.0000000000000000, ++ { 0.17454173353063662, 0.10000000000000009, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34913506721468091, 0.10000000000000009, 0.0000000000000000, ++ { 0.34913506721468096, 0.10000000000000009, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52382550016538942, 0.10000000000000009, 0.0000000000000000, ++ { 0.52382550016538953, 0.10000000000000009, 0.0000000000000000, + 0.52359877559829882 }, + { 0.69864700854177020, 0.10000000000000009, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.87361792586964870, 0.10000000000000009, 0.0000000000000000, ++ { 0.87361792586964859, 0.10000000000000009, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0487386319621683, 0.10000000000000009, 0.0000000000000000, ++ { 1.0487386319621685, 0.10000000000000009, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2239913752078757, 0.10000000000000009, 0.0000000000000000, ++ { 1.2239913752078759, 0.10000000000000009, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.3993423113684049, 0.10000000000000009, 0.0000000000000000, ++ { 1.3993423113684051, 0.10000000000000009, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000, ++ { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler101 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3097339877269682e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 + const testcase_ellint_3 + data102[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17436589347616613, 0.10000000000000009, 0.10000000000000001, ++ { 0.17471821213559732, 0.10000000000000009, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34776067871237359, 0.10000000000000009, 0.10000000000000001, ++ { 0.35052902610011138, 0.10000000000000009, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.51936064354727796, 0.10000000000000009, 0.10000000000000001, ++ { 0.52842865990255727, 0.10000000000000009, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.68860303749364349, 0.10000000000000009, 0.10000000000000001, ++ { 0.70921799731166713, 0.10000000000000009, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.85524561882332051, 0.10000000000000009, 0.10000000000000001, ++ { 0.89340330535868662, 0.10000000000000009, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0193708301908335, 0.10000000000000009, 0.10000000000000001, ++ { 1.0811075784236857, 0.10000000000000009, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1813474067123044, 0.10000000000000009, 0.10000000000000001, ++ { 1.2720133232666426, 0.10000000000000009, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3417670770424983, 0.10000000000000009, 0.10000000000000001, ++ { 1.4653630031861395, 0.10000000000000009, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001, ++ { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler102 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4399947764827574e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16 ++// mean(f - f_Boost): 5.5511151231257830e-18 ++// variance(f - f_Boost): 3.8043060629871325e-36 ++// stddev(f - f_Boost): 1.9504630380981673e-18 + const testcase_ellint_3 + data103[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17419068786141340, 0.10000000000000009, 0.20000000000000001, ++ { 0.17489533344059083, 0.10000000000000009, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34640537686230133, 0.10000000000000009, 0.20000000000000001, ++ { 0.35194305707815038, 0.10000000000000009, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51502689171753946, 0.10000000000000009, 0.20000000000000001, ++ { 0.53317790741512527, 0.10000000000000009, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.67904147863672715, 0.10000000000000009, 0.20000000000000001, ++ { 0.72036681615081222, 0.10000000000000009, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.83811885126105179, 0.10000000000000009, 0.20000000000000001, ++ { 0.91480372268244303, 0.10000000000000009, 0.20000000000000001, + 0.87266462599716477 }, +- { 0.99255278555742787, 0.10000000000000009, 0.20000000000000001, ++ { 1.1170528708071514, 0.10000000000000009, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1431260546194930, 0.10000000000000009, 0.20000000000000001, ++ { 1.3266916802718358, 0.10000000000000009, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.2909589656532101, 0.10000000000000009, 0.20000000000000001, ++ { 1.5421622241831547, 0.10000000000000009, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001, ++ { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler103 = 2.5000000000000020e-13; + +-// Test data for k=0.10000000000000009, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5650492137236872e-16 ++// Test data for k=0.10000000000000009, nu=0.30000000000000004. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16 ++// mean(f - f_Boost): -1.6653345369377347e-17 ++// variance(f - f_Boost): 3.4238754566884194e-35 ++// stddev(f - f_Boost): 5.8513891142945016e-18 + const testcase_ellint_3 + data104[10] = + { +- { 0.0000000000000000, 0.10000000000000009, 0.29999999999999999, ++ { 0.0000000000000000, 0.10000000000000009, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17401611261390104, 0.10000000000000009, 0.29999999999999999, ++ { 0.17507310163441189, 0.10000000000000009, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34506869507511773, 0.10000000000000009, 0.29999999999999999, ++ { 0.35337768072524217, 0.10000000000000009, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51081757604259859, 0.10000000000000009, 0.29999999999999999, ++ { 0.53808167801629170, 0.10000000000000009, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.66992297597712303, 0.10000000000000009, 0.29999999999999999, ++ { 0.73215166755955019, 0.10000000000000009, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82209722856174228, 0.10000000000000009, 0.29999999999999999, ++ { 0.93806546000201219, 0.10000000000000009, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.96792430487669590, 0.10000000000000009, 0.29999999999999999, ++ { 1.1573218723395986, 0.10000000000000009, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1085964108954092, 0.10000000000000009, 0.29999999999999999, ++ { 1.3897859679542097, 0.10000000000000009, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2456748370836999, 0.10000000000000009, 0.29999999999999999, ++ { 1.6331009404328622, 0.10000000000000009, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999, ++ { 1.8826015946315438, 0.10000000000000009, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler104 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.6854758534459740e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 9.5107651574678308e-35 ++// stddev(f - f_Boost): 9.7523151904908362e-18 + const testcase_ellint_3 + data105[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17384216369897931, 0.10000000000000009, 0.40000000000000002, ++ { 0.17525152094559704, 0.10000000000000009, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34375018311376787, 0.10000000000000009, 0.40000000000000002, ++ { 0.35483343742825979, 0.10000000000000009, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50672650758380455, 0.10000000000000009, 0.40000000000000002, ++ { 0.54314913099505446, 0.10000000000000009, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66121264213337616, 0.10000000000000009, 0.40000000000000002, ++ { 0.74463962034766862, 0.10000000000000009, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.80706202005774441, 0.10000000000000009, 0.40000000000000002, ++ { 0.96349276837570441, 0.10000000000000009, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.94519376138245870, 0.10000000000000009, 0.40000000000000002, ++ { 1.2029081382746343, 0.10000000000000009, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0771880300759584, 0.10000000000000009, 0.40000000000000002, ++ { 1.4638022887050806, 0.10000000000000009, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2049711557188272, 0.10000000000000009, 0.40000000000000002, ++ { 1.7432413830105224, 0.10000000000000009, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002, ++ { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler105 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8017534281650347e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 + const testcase_ellint_3 + data106[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17366883711936548, 0.10000000000000009, 0.50000000000000000, ++ { 0.17543059564292182, 0.10000000000000009, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34244940634881882, 0.10000000000000009, 0.50000000000000000, ++ { 0.35631088838721664, 0.10000000000000009, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50274793281634367, 0.10000000000000009, 0.50000000000000000, ++ { 0.54839023346436455, 0.10000000000000009, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65287941633275082, 0.10000000000000009, 0.50000000000000000, ++ { 0.75790846946088830, 0.10000000000000009, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79291198790315398, 0.10000000000000009, 0.50000000000000000, ++ { 0.99146713686720678, 0.10000000000000009, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.92412201537880323, 0.10000000000000009, 0.50000000000000000, ++ { 1.2551692247937198, 0.10000000000000009, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0484480076799372, 0.10000000000000009, 0.50000000000000000, ++ { 1.5524660788146873, 0.10000000000000009, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1681168130475206, 0.10000000000000009, 0.50000000000000000, ++ { 1.8806578570830670, 0.10000000000000009, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000, ++ { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler106 = 2.5000000000000020e-13; + +-// Test data for k=0.10000000000000009, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.9142834151672032e-16 ++// Test data for k=0.10000000000000009, nu=0.60000000000000009. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16 ++// mean(f - f_Boost): -3.6082248300317589e-17 ++// variance(f - f_Boost): 1.6073193116120635e-34 ++// stddev(f - f_Boost): 1.2678009747638087e-17 + const testcase_ellint_3 + data107[10] = + { +- { 0.0000000000000000, 0.10000000000000009, 0.59999999999999998, ++ { 0.0000000000000000, 0.10000000000000009, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17349612891469013, 0.10000000000000009, 0.59999999999999998, ++ { 0.17561033003590576, 0.10000000000000009, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34116594505539444, 0.10000000000000009, 0.59999999999999998, ++ { 0.35781061668171932, 0.10000000000000009, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.49887649430466674, 0.10000000000000009, 0.59999999999999998, ++ { 0.55381585659629196, 0.10000000000000009, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64489553282165146, 0.10000000000000009, 0.59999999999999998, ++ { 0.77204910484575640, 0.10000000000000009, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.77956016553782437, 0.10000000000000009, 0.59999999999999998, ++ { 1.0224751740393108, 0.10000000000000009, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.90451074530096287, 0.10000000000000009, 0.59999999999999998, ++ { 1.3160230906351114, 0.10000000000000009, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0220113666961632, 0.10000000000000009, 0.59999999999999998, ++ { 1.6616282844233206, 0.10000000000000009, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1345351441065563, 0.10000000000000009, 0.59999999999999998, ++ { 2.0592555664850392, 0.10000000000000009, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998, ++ { 2.4913004919173822, 0.10000000000000009, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler107 = 2.5000000000000020e-13; + +-// Test data for k=0.10000000000000009, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.5172091551439012e-16 ++// Test data for k=0.10000000000000009, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-16 at index 5 ++// max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 + const testcase_ellint_3 + data108[10] = + { +- { 0.0000000000000000, 0.10000000000000009, 0.69999999999999996, ++ { 0.0000000000000000, 0.10000000000000009, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17332403516105047, 0.10000000000000009, 0.69999999999999996, ++ { 0.17579072847532518, 0.10000000000000009, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.33989939374896883, 0.10000000000000009, 0.69999999999999996, ++ { 0.35933322840606297, 0.10000000000000009, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49510719568614070, 0.10000000000000009, 0.69999999999999996, ++ { 0.55943788649460324, 0.10000000000000009, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.63723607776354974, 0.10000000000000009, 0.69999999999999996, ++ { 0.78716856504031707, 0.10000000000000009, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.76693133887935327, 0.10000000000000009, 0.69999999999999996, ++ { 1.0571501305617423, 0.10000000000000009, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.88619382078823805, 0.10000000000000009, 0.69999999999999996, ++ { 1.3882948301743525, 0.10000000000000009, 0.70000000000000007, + 1.0471975511965976 }, +- { 0.99758012018676490, 0.10000000000000009, 0.69999999999999996, ++ { 1.8011785680114223, 0.10000000000000009, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1037642270814410, 0.10000000000000009, 0.69999999999999996, ++ { 2.3057268183616464, 0.10000000000000009, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2073745911083185, 0.10000000000000009, 0.69999999999999996, ++ { 2.8771910188009739, 0.10000000000000009, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler108 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1294144515772258e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 6.1843750436434569e-32 ++// stddev(f - f_Boost): 2.4868403735751633e-16 + const testcase_ellint_3 + data109[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17315255197057014, 0.10000000000000009, 0.80000000000000004, ++ { 0.17597179535373417, 0.10000000000000009, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33864936055747991, 0.10000000000000009, 0.80000000000000004, ++ { 0.36087935387831499, 0.10000000000000009, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49143537041117613, 0.10000000000000009, 0.80000000000000004, ++ { 0.56526935244526444, 0.10000000000000009, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.62987861760047492, 0.10000000000000009, 0.80000000000000004, ++ { 0.80339402590612397, 0.10000000000000009, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.75496005490917517, 0.10000000000000009, 0.80000000000000004, ++ { 1.0963358646374459, 0.10000000000000009, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.86903081862701881, 0.10000000000000009, 0.80000000000000004, ++ { 1.4763748483246868, 0.10000000000000009, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.97490814820725591, 0.10000000000000009, 0.80000000000000004, ++ { 1.9896610222794102, 0.10000000000000009, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0754290107171083, 0.10000000000000009, 0.80000000000000004, ++ { 2.6806423920122024, 0.10000000000000009, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004, ++ { 3.5246199613295612, 0.10000000000000009, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler109 = 2.5000000000000020e-13; + + // Test data for k=0.10000000000000009, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2325599449457852e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16 ++// mean(f - f_Boost): 2.3314683517128288e-16 ++// variance(f - f_Boost): 2.9401198977189756e-31 ++// stddev(f - f_Boost): 5.4222872459129045e-16 + const testcase_ellint_3 + data110[10] = + { + { 0.0000000000000000, 0.10000000000000009, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17298167549096563, 0.10000000000000009, 0.90000000000000002, ++ { 0.17615353510599349, 0.10000000000000009, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33741546662741589, 0.10000000000000009, 0.90000000000000002, ++ { 0.36244964892922371, 0.10000000000000009, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48785665376856868, 0.10000000000000009, 0.90000000000000002, ++ { 0.57132457590110530, 0.10000000000000009, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62280288554518959, 0.10000000000000009, 0.90000000000000002, ++ { 0.82087808820385000, 0.10000000000000009, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74358903115455188, 0.10000000000000009, 0.90000000000000002, ++ { 1.1411894342144451, 0.10000000000000009, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.85290207679298335, 0.10000000000000009, 0.90000000000000002, ++ { 1.5875929286844597, 0.10000000000000009, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.95379006645397379, 0.10000000000000009, 0.90000000000000002, ++ { 2.2678622986596659, 0.10000000000000009, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0492213119872327, 0.10000000000000009, 0.90000000000000002, ++ { 3.3697528941897903, 0.10000000000000009, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002, ++ { 4.9862890417305499, 0.10000000000000009, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler110 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2156475739151676e-16 ++// Test data for k=0.20000000000000018, nu=0.0000000000000000. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16 ++// mean(f - f_Boost): -5.2735593669694933e-17 ++// variance(f - f_Boost): 3.0473442641042680e-32 ++// stddev(f - f_Boost): 1.7456644190978597e-16 + const testcase_ellint_3 + data111[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.0000000000000000, ++ { 0.0000000000000000, 0.20000000000000018, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17456817290292809, 0.19999999999999996, 0.0000000000000000, ++ { 0.17456817290292806, 0.20000000000000018, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34934315932086801, 0.19999999999999996, 0.0000000000000000, ++ { 0.34934315932086796, 0.20000000000000018, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52450880529443988, 0.19999999999999996, 0.0000000000000000, ++ { 0.52450880529443988, 0.20000000000000018, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70020491009844876, 0.19999999999999996, 0.0000000000000000, ++ { 0.70020491009844887, 0.20000000000000018, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.87651006649967955, 0.19999999999999996, 0.0000000000000000, ++ { 0.87651006649967977, 0.20000000000000018, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0534305870298994, 0.19999999999999996, 0.0000000000000000, ++ { 1.0534305870298994, 0.20000000000000018, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2308975521670784, 0.19999999999999996, 0.0000000000000000, ++ { 1.2308975521670789, 0.20000000000000018, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4087733584990738, 0.19999999999999996, 0.0000000000000000, ++ { 1.4087733584990738, 0.20000000000000018, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.5868678474541660, 0.19999999999999996, 0.0000000000000000, ++ { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler111 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3374593253183472e-16 ++// Test data for k=0.20000000000000018, nu=0.10000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16 ++// mean(f - f_Boost): -3.8857805861880476e-17 ++// variance(f - f_Boost): 2.8794792590749608e-32 ++// stddev(f - f_Boost): 1.6969028431454054e-16 + const testcase_ellint_3 + data112[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.10000000000000001, ++ { 0.0000000000000000, 0.20000000000000018, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17439228502691748, 0.19999999999999996, 0.10000000000000001, ++ { 0.17474469953608965, 0.20000000000000018, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34796731137565740, 0.19999999999999996, 0.10000000000000001, ++ { 0.35073860234984255, 0.20000000000000018, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52003370294544848, 0.19999999999999996, 0.10000000000000001, ++ { 0.52912258712951521, 0.20000000000000018, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69012222258631462, 0.19999999999999996, 0.10000000000000001, ++ { 0.71081701558898069, 0.20000000000000018, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.85803491465566772, 0.19999999999999996, 0.10000000000000001, ++ { 0.89640758521169384, 0.20000000000000018, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0238463961099364, 0.19999999999999996, 0.10000000000000001, ++ { 1.0860417038089853, 0.20000000000000018, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1878691059202153, 0.19999999999999996, 0.10000000000000001, ++ { 1.2793599255528623, 0.20000000000000018, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3505985031831940, 0.19999999999999996, 0.10000000000000001, ++ { 1.4754938544089076, 0.20000000000000018, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5126513474261087, 0.19999999999999996, 0.10000000000000001, ++ { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler112 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4549984059502760e-16 ++// Test data for k=0.20000000000000018, nu=0.20000000000000001. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16 ++// mean(f - f_Boost): -5.8286708792820721e-17 ++// variance(f - f_Boost): 3.1158217732380362e-32 ++// stddev(f - f_Boost): 1.7651690494788412e-16 + const testcase_ellint_3 + data113[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.20000000000000001, ++ { 0.0000000000000000, 0.20000000000000018, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17421703179583747, 0.19999999999999996, 0.20000000000000001, ++ { 0.17492186907740698, 0.20000000000000018, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34661057411998791, 0.19999999999999996, 0.20000000000000001, ++ { 0.35215414286134267, 0.20000000000000018, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51569006052647393, 0.19999999999999996, 0.20000000000000001, ++ { 0.53388285615182440, 0.20000000000000018, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68052412821107244, 0.19999999999999996, 0.20000000000000001, ++ { 0.72200960282688265, 0.20000000000000018, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.84081341263313825, 0.19999999999999996, 0.20000000000000001, ++ { 0.91793087614428526, 0.20000000000000018, 0.20000000000000001, + 0.87266462599716477 }, +- { 0.99683359988842890, 0.19999999999999996, 0.20000000000000001, ++ { 1.1222602841587976, 0.20000000000000018, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1493086715118852, 0.19999999999999996, 0.20000000000000001, ++ { 1.3345489407496247, 0.20000000000000018, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.2992699693957541, 0.19999999999999996, 0.20000000000000001, ++ { 1.5531225705475502, 0.20000000000000018, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4479323932249564, 0.19999999999999996, 0.20000000000000001, ++ { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler113 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.29999999999999999. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.3140668101543467e-16 ++// Test data for k=0.20000000000000018, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16 ++// mean(f - f_Boost): -1.1102230246251566e-17 ++// variance(f - f_Boost): 9.9840208317034302e-32 ++// stddev(f - f_Boost): 3.1597501217190311e-16 + const testcase_ellint_3 + data114[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.29999999999999999, ++ { 0.0000000000000000, 0.20000000000000018, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17404240913577704, 0.19999999999999996, 0.29999999999999999, ++ { 0.17509968571715159, 0.20000000000000018, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34527248032587193, 0.19999999999999996, 0.29999999999999999, ++ { 0.35359030214835629, 0.20000000000000018, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51147118981668416, 0.19999999999999996, 0.29999999999999999, ++ { 0.53879807274537084, 0.20000000000000018, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67137107867777601, 0.19999999999999996, 0.29999999999999999, ++ { 0.73384116418059731, 0.20000000000000018, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82470418188668893, 0.19999999999999996, 0.29999999999999999, ++ { 0.94132799329524031, 0.20000000000000018, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.97202873223594299, 0.19999999999999996, 0.29999999999999999, ++ { 1.1628407021801439, 0.20000000000000018, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1144773569375266, 0.19999999999999996, 0.29999999999999999, ++ { 1.3982440216739438, 0.20000000000000018, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2535292433701000, 0.19999999999999996, 0.29999999999999999, ++ { 1.6450634983653640, 0.20000000000000018, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.3908453514752477, 0.19999999999999996, 0.29999999999999999, ++ { 1.8983924169967099, 0.20000000000000018, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler114 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.6788709752760483e-16 ++// Test data for k=0.20000000000000018, nu=0.40000000000000002. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 6 ++// max(|f - f_Boost| / |f_Boost|): 3.6738449250038925e-16 ++// mean(f - f_Boost): -3.0531133177191807e-17 ++// variance(f - f_Boost): 2.7810428396951687e-32 ++// stddev(f - f_Boost): 1.6676458975739331e-16 + const testcase_ellint_3 + data115[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.40000000000000002, ++ { 0.0000000000000000, 0.20000000000000018, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17386841301066674, 0.19999999999999996, 0.40000000000000002, ++ { 0.17527815368535152, 0.20000000000000018, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34395257914113253, 0.19999999999999996, 0.40000000000000002, ++ { 0.35504762134297801, 0.20000000000000018, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50737088376869466, 0.19999999999999996, 0.40000000000000002, ++ { 0.54387742353211344, 0.20000000000000018, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66262801717277631, 0.19999999999999996, 0.40000000000000002, ++ { 0.74637910471804259, 0.20000000000000018, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.80958766645079094, 0.19999999999999996, 0.40000000000000002, ++ { 0.96690539714174639, 0.20000000000000018, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.94913754236162040, 0.19999999999999996, 0.40000000000000002, ++ { 1.2087859420184757, 0.20000000000000018, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0827985514222997, 0.19999999999999996, 0.40000000000000002, ++ { 1.4729799844168852, 0.20000000000000018, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2124212429050478, 0.19999999999999996, 0.40000000000000002, ++ { 1.7564445064596661, 0.20000000000000018, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3400002519661005, 0.19999999999999996, 0.40000000000000002, ++ { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler115 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7788201301356829e-16 ++// Test data for k=0.20000000000000018, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16 ++// mean(f - f_Boost): 3.6082248300317589e-17 ++// variance(f - f_Boost): 8.9638010532618564e-32 ++// stddev(f - f_Boost): 2.9939607634806868e-16 + const testcase_ellint_3 + data116[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.50000000000000000, ++ { 0.0000000000000000, 0.20000000000000018, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17369503942181799, 0.19999999999999996, 0.50000000000000000, ++ { 0.17545727725228877, 0.20000000000000018, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34265043534362660, 0.19999999999999996, 0.50000000000000000, ++ { 0.35652666242062175, 0.20000000000000018, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50338337208655415, 0.19999999999999996, 0.50000000000000000, ++ { 0.54913090549102406, 0.20000000000000018, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65426373297163609, 0.19999999999999996, 0.50000000000000000, ++ { 0.75970161209211551, 0.20000000000000018, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79536193036145808, 0.19999999999999996, 0.50000000000000000, ++ { 0.99504737401590326, 0.20000000000000018, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.92791875910061605, 0.19999999999999996, 0.50000000000000000, ++ { 1.2614666007124373, 0.20000000000000018, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0538145052725829, 0.19999999999999996, 0.50000000000000000, ++ { 1.5625255355205498, 0.20000000000000018, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1752060022875899, 0.19999999999999996, 0.50000000000000000, ++ { 1.8954460255613346, 0.20000000000000018, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.2943374404397372, 0.19999999999999996, 0.50000000000000000, ++ { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler116 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.8899223779598256e-16 ++// Test data for k=0.20000000000000018, nu=0.60000000000000009. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 1.0045745697575397e-31 ++// stddev(f - f_Boost): 3.1695024369095219e-16 + const testcase_ellint_3 + data117[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.59999999999999998, ++ { 0.0000000000000000, 0.20000000000000018, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17352228440746925, 0.19999999999999996, 0.59999999999999998, ++ { 0.17563706072900442, 0.20000000000000018, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34136562863713626, 0.19999999999999996, 0.59999999999999998, ++ { 0.35802800926807238, 0.20000000000000018, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.49950328177638481, 0.19999999999999996, 0.59999999999999998, ++ { 0.55456942250515051, 0.20000000000000018, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64625032705690799, 0.19999999999999996, 0.59999999999999998, ++ { 0.77390003828438203, 0.20000000000000018, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.78193941198403083, 0.19999999999999996, 0.59999999999999998, ++ { 1.0262441366366397, 0.20000000000000018, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.90817230934317128, 0.19999999999999996, 0.59999999999999998, ++ { 1.3228192988439669, 0.20000000000000018, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0271563751276462, 0.19999999999999996, 0.59999999999999998, ++ { 1.6728005754680795, 0.20000000000000018, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1412999379040518, 0.19999999999999996, 0.59999999999999998, ++ { 2.0761587107468511, 0.20000000000000018, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2530330675914556, 0.19999999999999996, 0.59999999999999998, ++ { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler117 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.69999999999999996. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.9999318361775115e-16 ++// Test data for k=0.20000000000000018, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2209418045118284e-16 ++// mean(f - f_Boost): 2.4980018054066023e-17 ++// variance(f - f_Boost): 9.1989071679544611e-32 ++// stddev(f - f_Boost): 3.0329700242426498e-16 + const testcase_ellint_3 + data118[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.69999999999999996, ++ { 0.0000000000000000, 0.20000000000000018, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17335014404233895, 0.19999999999999996, 0.69999999999999996, ++ { 0.17581750846781172, 0.20000000000000018, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34009775298617811, 0.19999999999999996, 0.69999999999999996, ++ { 0.35955226882028513, 0.20000000000000018, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49572560201923810, 0.19999999999999996, 0.69999999999999996, ++ { 0.56020489659466499, 0.20000000000000018, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.63856276669886503, 0.19999999999999996, 0.69999999999999996, ++ { 0.78908196988531498, 0.20000000000000018, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.76924438644867565, 0.19999999999999996, 0.69999999999999996, ++ { 1.0611336754143517, 0.20000000000000018, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.88973060843856466, 0.19999999999999996, 0.69999999999999996, ++ { 1.3956969951058884, 0.20000000000000018, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0025230471636377, 0.19999999999999996, 0.69999999999999996, ++ { 1.8138131612209609, 0.20000000000000018, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1102356376093103, 0.19999999999999996, 0.69999999999999996, ++ { 2.3256365528879561, 0.20000000000000018, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2154356555075863, 0.19999999999999996, 0.69999999999999996, ++ { 2.9058704854500963, 0.20000000000000018, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler118 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.0901276230707249e-16 ++// Test data for k=0.20000000000000018, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7399960886656824e-16 ++// mean(f - f_Boost): 1.3877787807814457e-16 ++// variance(f - f_Boost): 1.7585404776158019e-31 ++// stddev(f - f_Boost): 4.1934955319110593e-16 + const testcase_ellint_3 + data119[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.80000000000000004, ++ { 0.0000000000000000, 0.20000000000000018, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17317861443718538, 0.19999999999999996, 0.80000000000000004, ++ { 0.17599862486281712, 0.20000000000000018, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33884641598718701, 0.19999999999999996, 0.80000000000000004, ++ { 0.36110007227128776, 0.20000000000000018, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49204565281259494, 0.19999999999999996, 0.80000000000000004, ++ { 0.56605039658567224, 0.20000000000000018, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63117851188220320, 0.19999999999999996, 0.80000000000000004, ++ { 0.80537523874517691, 0.20000000000000018, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.75721095949544170, 0.19999999999999996, 0.80000000000000004, ++ { 1.1005662342414086, 0.20000000000000018, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.87245201443919118, 0.19999999999999996, 0.80000000000000004, ++ { 1.4845340298105778, 0.20000000000000018, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.97966584238831089, 0.19999999999999996, 0.80000000000000004, ++ { 2.0043332244969392, 0.20000000000000018, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0816336325174360, 0.19999999999999996, 0.80000000000000004, ++ { 2.7052856676744761, 0.20000000000000018, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1810223448909909, 0.19999999999999996, 0.80000000000000004, ++ { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler119 = 2.5000000000000020e-13; + +-// Test data for k=0.19999999999999996, nu=0.90000000000000002. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4833128442756722e-16 ++// Test data for k=0.20000000000000018, nu=0.90000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1718503329017390e-16 ++// mean(f - f_Boost): 2.3592239273284576e-16 ++// variance(f - f_Boost): 2.9295534376290287e-31 ++// stddev(f - f_Boost): 5.4125349307224141e-16 + const testcase_ellint_3 + data120[10] = + { +- { 0.0000000000000000, 0.19999999999999996, 0.90000000000000002, ++ { 0.0000000000000000, 0.20000000000000018, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17300769173837277, 0.19999999999999996, 0.90000000000000002, ++ { 0.17618041435044951, 0.20000000000000018, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33761123827372508, 0.19999999999999996, 0.90000000000000002, ++ { 0.36267207636502929, 0.20000000000000018, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48845905690769426, 0.19999999999999996, 0.90000000000000002, ++ { 0.57212028758237743, 0.20000000000000018, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62407720017324952, 0.19999999999999996, 0.90000000000000002, ++ { 0.82293323876704483, 0.20000000000000018, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74578146525124289, 0.19999999999999996, 0.90000000000000002, ++ { 1.1457077279880388, 0.20000000000000018, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.85621583540073076, 0.19999999999999996, 0.90000000000000002, ++ { 1.5967346899325681, 0.20000000000000018, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.95837725988001199, 0.19999999999999996, 0.90000000000000002, ++ { 2.2856537353421724, 0.20000000000000018, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0551821412633928, 0.19999999999999996, 0.90000000000000002, ++ { 3.4034714304613902, 0.20000000000000018, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1493679916141861, 0.19999999999999996, 0.90000000000000002, ++ { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler120 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.0000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.3361874537309281e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 2.1399221604302621e-32 ++// stddev(f - f_Boost): 1.4628472785736254e-16 + const testcase_ellint_3 + data121[10] = + { +@@ -3528,19 +3890,19 @@ + 0.0000000000000000 }, + { 0.17461228653000099, 0.30000000000000004, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.34969146102798415, 0.30000000000000004, 0.0000000000000000, ++ { 0.34969146102798421, 0.30000000000000004, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52565822873726320, 0.30000000000000004, 0.0000000000000000, ++ { 0.52565822873726309, 0.30000000000000004, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70284226512408532, 0.30000000000000004, 0.0000000000000000, ++ { 0.70284226512408543, 0.30000000000000004, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.88144139195111182, 0.30000000000000004, 0.0000000000000000, ++ { 0.88144139195111171, 0.30000000000000004, 0.0000000000000000, + 0.87266462599716477 }, + { 1.0614897067260520, 0.30000000000000004, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2428416824174218, 0.30000000000000004, 0.0000000000000000, ++ { 1.2428416824174220, 0.30000000000000004, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4251795877015927, 0.30000000000000004, 0.0000000000000000, ++ { 1.4251795877015929, 0.30000000000000004, 0.0000000000000000, + 1.3962634015954636 }, + { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000, + 1.5707963267948966 }, +@@ -3548,559 +3910,619 @@ + const double toler121 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.10000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.3908043711907203e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16 ++// mean(f - f_Boost): 7.2164496600635178e-17 ++// variance(f - f_Boost): 4.3555500115139682e-32 ++// stddev(f - f_Boost): 2.0869954507650391e-16 + const testcase_ellint_3 + data122[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17443631884814376, 0.30000000000000004, 0.10000000000000001, ++ { 0.17478889331392972, 0.30000000000000004, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34831316835124926, 0.30000000000000004, 0.10000000000000001, ++ { 0.35108939018329183, 0.30000000000000004, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52116586276523857, 0.30000000000000004, 0.10000000000000001, ++ { 0.53028990896115835, 0.30000000000000004, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69269385837910036, 0.30000000000000004, 0.10000000000000001, ++ { 0.71352417052371409, 0.30000000000000004, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.86279023163070856, 0.30000000000000004, 0.10000000000000001, ++ { 0.90153086032405894, 0.30000000000000004, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0315321461438263, 0.30000000000000004, 0.10000000000000001, ++ { 1.0945187977283313, 0.30000000000000004, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.1991449111869024, 0.30000000000000004, 0.10000000000000001, ++ { 1.2920699268385683, 0.30000000000000004, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3659561780923213, 0.30000000000000004, 0.10000000000000001, ++ { 1.4931243665896394, 0.30000000000000004, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5323534693557528, 0.30000000000000004, 0.10000000000000001, ++ { 1.6960848815118226, 0.30000000000000004, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler122 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.20000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4447238179454079e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16 ++// mean(f - f_Boost): 6.6613381477509390e-17 ++// variance(f - f_Boost): 1.7591111235252501e-32 ++// stddev(f - f_Boost): 1.3263148659067538e-16 + const testcase_ellint_3 + data123[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17426098615372088, 0.30000000000000004, 0.20000000000000001, ++ { 0.17496614335337535, 0.30000000000000004, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34695402664689923, 0.30000000000000004, 0.20000000000000001, ++ { 0.35250745937139372, 0.30000000000000004, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51680555567038933, 0.30000000000000004, 0.20000000000000001, ++ { 0.53506875002836884, 0.30000000000000004, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68303375225260210, 0.30000000000000004, 0.20000000000000001, ++ { 0.72479106622248191, 0.30000000000000004, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.84540662891295026, 0.30000000000000004, 0.20000000000000001, ++ { 0.92326451535891607, 0.30000000000000004, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0041834051646927, 0.30000000000000004, 0.20000000000000001, ++ { 1.1312092060698349, 0.30000000000000004, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1599952702345711, 0.30000000000000004, 0.20000000000000001, ++ { 1.3481473154592321, 0.30000000000000004, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3137179520499165, 0.30000000000000004, 0.20000000000000001, ++ { 1.5722049569662750, 0.30000000000000004, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4663658145259877, 0.30000000000000004, 0.20000000000000001, ++ { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler123 = 2.5000000000000020e-13; + +-// Test data for k=0.30000000000000004, nu=0.29999999999999999. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4979715256503266e-16 ++// Test data for k=0.30000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16 ++// mean(f - f_Boost): 1.0547118733938987e-16 ++// variance(f - f_Boost): 7.5633408838247182e-32 ++// stddev(f - f_Boost): 2.7501528837184157e-16 + const testcase_ellint_3 + data124[10] = + { +- { 0.0000000000000000, 0.30000000000000004, 0.29999999999999999, ++ { 0.0000000000000000, 0.30000000000000004, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17408628437042842, 0.30000000000000004, 0.29999999999999999, ++ { 0.17514404084107435, 0.30000000000000004, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34561356761638401, 0.30000000000000004, 0.29999999999999999, ++ { 0.35394619108645647, 0.30000000000000004, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51257058617875850, 0.30000000000000004, 0.29999999999999999, ++ { 0.54000325463372689, 0.30000000000000004, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67382207124602878, 0.30000000000000004, 0.29999999999999999, ++ { 0.73670193794067651, 0.30000000000000004, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.82914751587825131, 0.30000000000000004, 0.29999999999999999, ++ { 0.94689345491722177, 0.30000000000000004, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.97907434814374938, 0.30000000000000004, 0.29999999999999999, ++ { 1.1723274608389140, 0.30000000000000004, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1246399297351584, 0.30000000000000004, 0.29999999999999999, ++ { 1.4128880552936287, 0.30000000000000004, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2671793970398149, 0.30000000000000004, 0.29999999999999999, ++ { 1.6659010047449661, 0.30000000000000004, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4081767433479091, 0.30000000000000004, 0.29999999999999999, ++ { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler124 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.40000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.5505716921759864e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16 ++// mean(f - f_Boost): 1.1657341758564144e-16 ++// variance(f - f_Boost): 1.8245832308692586e-31 ++// stddev(f - f_Boost): 4.2715140534349863e-16 + const testcase_ellint_3 + data125[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17391220945982727, 0.30000000000000004, 0.40000000000000002, ++ { 0.17532259000954434, 0.30000000000000004, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34429133937639689, 0.30000000000000004, 0.40000000000000002, ++ { 0.35540612770983693, 0.30000000000000004, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50845471668581632, 0.30000000000000004, 0.40000000000000002, ++ { 0.54510265552938919, 0.30000000000000004, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66502347027873854, 0.30000000000000004, 0.40000000000000002, ++ { 0.74932476310965057, 0.30000000000000004, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.81389191978012254, 0.30000000000000004, 0.40000000000000002, ++ { 0.97272793583093109, 0.30000000000000004, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.95590618002140570, 0.30000000000000004, 0.40000000000000002, ++ { 1.2188928987074241, 0.30000000000000004, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.0924915195213121, 0.30000000000000004, 0.40000000000000002, ++ { 1.4888771674085941, 0.30000000000000004, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2253651604038061, 0.30000000000000004, 0.40000000000000002, ++ { 1.7794558498219191, 0.30000000000000004, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3563643538969763, 0.30000000000000004, 0.40000000000000002, ++ { 2.0822121773175528, 0.30000000000000004, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler125 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.50000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.7807908859023716e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16 ++// mean(f - f_Boost): 4.7184478546569152e-17 ++// variance(f - f_Boost): 1.9448563670505968e-32 ++// stddev(f - f_Boost): 1.3945810722401896e-16 + const testcase_ellint_3 + data126[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17373875742088232, 0.30000000000000004, 0.50000000000000000, ++ { 0.17550179513158179, 0.30000000000000004, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34298690571124157, 0.30000000000000004, 0.50000000000000000, ++ { 0.35688783251681200, 0.30000000000000004, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50445214859646936, 0.30000000000000004, 0.50000000000000000, ++ { 0.55037700010142798, 0.30000000000000004, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65660648352418516, 0.30000000000000004, 0.50000000000000000, ++ { 0.76273839789895992, 0.30000000000000004, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.79953670639287289, 0.30000000000000004, 0.50000000000000000, ++ { 1.0011570518830419, 0.30000000000000004, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.93443393926588536, 0.30000000000000004, 0.50000000000000000, ++ { 1.2722987414055109, 0.30000000000000004, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0630838369016911, 0.30000000000000004, 0.50000000000000000, ++ { 1.5799590511080066, 0.30000000000000004, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.1875197325653029, 0.30000000000000004, 0.50000000000000000, ++ { 1.9212367220124293, 0.30000000000000004, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3098448759814962, 0.30000000000000004, 0.50000000000000000, ++ { 2.2833505881933971, 0.30000000000000004, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler126 = 2.5000000000000020e-13; + +-// Test data for k=0.30000000000000004, nu=0.59999999999999998. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.0057999499931649e-16 ++// Test data for k=0.30000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16 ++// mean(f - f_Boost): 1.9428902930940239e-16 ++// variance(f - f_Boost): 1.5987596229703424e-31 ++// stddev(f - f_Boost): 3.9984492281012430e-16 + const testcase_ellint_3 + data127[10] = + { +- { 0.0000000000000000, 0.30000000000000004, 0.59999999999999998, ++ { 0.0000000000000000, 0.30000000000000004, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17356592428950823, 0.30000000000000004, 0.59999999999999998, ++ { 0.17568166052076745, 0.30000000000000004, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34169984536697379, 0.30000000000000004, 0.59999999999999998, ++ { 0.35839189074731181, 0.30000000000000004, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50055748266498457, 0.30000000000000004, 0.59999999999999998, ++ { 0.55583724744367558, 0.30000000000000004, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.64854298527106768, 0.30000000000000004, 0.59999999999999998, ++ { 0.77703498090888223, 0.30000000000000004, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.78599329284207431, 0.30000000000000004, 0.59999999999999998, ++ { 1.0326772113675962, 0.30000000000000004, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.91445452089128199, 0.30000000000000004, 0.59999999999999998, ++ { 1.3345139983717369, 0.30000000000000004, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0360412952290587, 0.30000000000000004, 0.59999999999999998, ++ { 1.6921742922838403, 0.30000000000000004, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1530473919778641, 0.30000000000000004, 0.59999999999999998, ++ { 2.1056608968472186, 0.30000000000000004, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2677758800420669, 0.30000000000000004, 0.59999999999999998, ++ { 2.5560975528589061, 0.30000000000000004, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler127 = 2.5000000000000020e-13; + +-// Test data for k=0.30000000000000004, nu=0.69999999999999996. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.2239502844122443e-16 ++// Test data for k=0.30000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16 ++// mean(f - f_Boost): 2.1094237467877973e-16 ++// variance(f - f_Boost): 3.0253363535298873e-31 ++// stddev(f - f_Boost): 5.5003057674368314e-16 + const testcase_ellint_3 + data128[10] = + { +- { 0.0000000000000000, 0.30000000000000004, 0.69999999999999996, ++ { 0.0000000000000000, 0.30000000000000004, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17339370613812224, 0.30000000000000004, 0.69999999999999996, ++ { 0.17586219053197988, 0.30000000000000004, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34042975138455933, 0.30000000000000004, 0.69999999999999996, ++ { 0.35991891074557669, 0.30000000000000004, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49676568368075985, 0.30000000000000004, 0.69999999999999996, ++ { 0.56149538019961731, 0.30000000000000004, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64080774055753720, 0.30000000000000004, 0.69999999999999996, ++ { 0.79232303189667685, 0.30000000000000004, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.77318507779667278, 0.30000000000000004, 0.69999999999999996, ++ { 1.0679345542878826, 0.30000000000000004, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.89579782346548609, 0.30000000000000004, 0.69999999999999996, ++ { 1.4084400085913955, 0.30000000000000004, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0110573286052202, 0.30000000000000004, 0.69999999999999996, ++ { 1.8357382859296454, 0.30000000000000004, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1214710972949635, 0.30000000000000004, 0.69999999999999996, ++ { 2.3604197996171519, 0.30000000000000004, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2294913236274982, 0.30000000000000004, 0.69999999999999996, ++ { 2.9562123549913872, 0.30000000000000004, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler128 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.80000000000000004. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.4358357000101250e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16 ++// mean(f - f_Boost): 3.4416913763379854e-16 ++// variance(f - f_Boost): 4.3461914185990199e-31 ++// stddev(f - f_Boost): 6.5925650687718054e-16 + const testcase_ellint_3 + data129[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17322209907520358, 0.30000000000000004, 0.80000000000000004, ++ { 0.17604338956191670, 0.30000000000000004, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33917623046949996, 0.30000000000000004, 0.80000000000000004, ++ { 0.36146952517410791, 0.30000000000000004, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49307204894329176, 0.30000000000000004, 0.80000000000000004, ++ { 0.56736453393774644, 0.30000000000000004, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63337802830291734, 0.30000000000000004, 0.80000000000000004, ++ { 0.80873149979001091, 0.30000000000000004, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.76104540997689407, 0.30000000000000004, 0.80000000000000004, ++ { 1.1077903069860620, 0.30000000000000004, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.87832009635450714, 0.30000000000000004, 0.80000000000000004, ++ { 1.4985874311132998, 0.30000000000000004, 0.80000000000000004, + 1.0471975511965976 }, +- { 0.98787879723171790, 0.30000000000000004, 0.80000000000000004, ++ { 2.0298167266724954, 0.30000000000000004, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.0924036340069339, 0.30000000000000004, 0.80000000000000004, ++ { 2.7483929054985432, 0.30000000000000004, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.1944567571590048, 0.30000000000000004, 0.80000000000000004, ++ { 3.6283050484567170, 0.30000000000000004, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler129 = 2.5000000000000020e-13; + + // Test data for k=0.30000000000000004, nu=0.90000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.6419688299804087e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16 ++// mean(f - f_Boost): 4.1633363423443370e-16 ++// variance(f - f_Boost): 2.2835347143080263e-31 ++// stddev(f - f_Boost): 4.7786344433405093e-16 + const testcase_ellint_3 + data130[10] = + { + { 0.0000000000000000, 0.30000000000000004, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17305109924485945, 0.30000000000000004, 0.90000000000000002, ++ { 0.17622526204962433, 0.30000000000000004, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33793890239556984, 0.30000000000000004, 0.90000000000000002, ++ { 0.36304439230777141, 0.30000000000000004, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.48947218005089738, 0.30000000000000004, 0.90000000000000002, ++ { 0.57345914744719195, 0.30000000000000004, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62623332340775151, 0.30000000000000004, 0.90000000000000002, ++ { 0.82641512928845162, 0.30000000000000004, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.74951596581511148, 0.30000000000000004, 0.90000000000000002, ++ { 1.1534256210757743, 0.30000000000000004, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.86189886597755994, 0.30000000000000004, 0.90000000000000002, ++ { 1.6124900353411677, 0.30000000000000004, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.96629451153092005, 0.30000000000000004, 0.90000000000000002, ++ { 2.3165905514845089, 0.30000000000000004, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0655269133492682, 0.30000000000000004, 0.90000000000000002, ++ { 3.4625619526539824, 0.30000000000000004, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1622376896064914, 0.30000000000000004, 0.90000000000000002, ++ { 5.1479514944016787, 0.30000000000000004, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler130 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.0000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.4157225142938039e-16 ++// Test data for k=0.40000000000000013, nu=0.0000000000000000. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0831445028587608e-15 ++// mean(f - f_Boost): 1.7486012637846215e-16 ++// variance(f - f_Boost): 3.1664095331106078e-31 ++// stddev(f - f_Boost): 5.6270858649132121e-16 + const testcase_ellint_3 + data131[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.0000000000000000, ++ { 0.0000000000000000, 0.40000000000000013, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17467414669441528, 0.39999999999999991, 0.0000000000000000, ++ { 0.17467414669441528, 0.40000000000000013, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35018222772483443, 0.39999999999999991, 0.0000000000000000, ++ { 0.35018222772483443, 0.40000000000000013, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.52729015917508737, 0.39999999999999991, 0.0000000000000000, ++ { 0.52729015917508748, 0.40000000000000013, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.70662374407341244, 0.39999999999999991, 0.0000000000000000, ++ { 0.70662374407341244, 0.40000000000000013, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.88859210497602170, 0.39999999999999991, 0.0000000000000000, ++ { 0.88859210497602159, 0.40000000000000013, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0733136290471379, 0.39999999999999991, 0.0000000000000000, ++ { 1.0733136290471381, 0.40000000000000013, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2605612170157061, 0.39999999999999991, 0.0000000000000000, ++ { 1.2605612170157066, 0.40000000000000013, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4497513956433439, 0.39999999999999991, 0.0000000000000000, ++ { 1.4497513956433439, 0.40000000000000013, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000, ++ { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler131 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.10000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.6859551010103832e-16 ++// Test data for k=0.40000000000000013, nu=0.10000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0263824105456986e-15 ++// mean(f - f_Boost): 1.7486012637846215e-16 ++// variance(f - f_Boost): 3.1664095331106078e-31 ++// stddev(f - f_Boost): 5.6270858649132121e-16 + const testcase_ellint_3 + data132[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.10000000000000001, ++ { 0.0000000000000000, 0.40000000000000013, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17449806706684670, 0.39999999999999991, 0.10000000000000001, ++ { 0.17485086590796767, 0.40000000000000013, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34880048623856075, 0.39999999999999991, 0.10000000000000001, ++ { 0.35158366412506992, 0.40000000000000013, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52277322065757392, 0.39999999999999991, 0.10000000000000001, ++ { 0.53194731675711726, 0.40000000000000013, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.69638072056918365, 0.39999999999999991, 0.10000000000000001, ++ { 0.71740615528010931, 0.40000000000000013, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.86968426619831540, 0.39999999999999991, 0.10000000000000001, ++ { 0.90896157773487030, 0.40000000000000013, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0428044206578095, 0.39999999999999991, 0.10000000000000001, ++ { 1.1069605483834348, 0.40000000000000013, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2158651158274378, 0.39999999999999991, 0.10000000000000001, ++ { 1.3109353428823001, 0.40000000000000013, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.3889447129893324, 0.39999999999999991, 0.10000000000000001, ++ { 1.5195460789903450, 0.40000000000000013, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001, ++ { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler132 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.20000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.9444065952225719e-16 ++// Test data for k=0.40000000000000013, nu=0.20000000000000001. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.6644296021947179e-16 ++// mean(f - f_Boost): 2.0816681711721685e-16 ++// variance(f - f_Boost): 3.0360740073926687e-31 ++// stddev(f - f_Boost): 5.5100580826273227e-16 + const testcase_ellint_3 + data133[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.20000000000000001, ++ { 0.0000000000000000, 0.40000000000000013, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17432262290723397, 0.39999999999999991, 0.20000000000000001, ++ { 0.17502822886437389, 0.40000000000000013, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34743795258968596, 0.39999999999999991, 0.20000000000000001, ++ { 0.35300530062530805, 0.40000000000000013, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.51838919472805112, 0.39999999999999991, 0.20000000000000001, ++ { 0.53675259548210896, 0.40000000000000013, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.68663134739057907, 0.39999999999999991, 0.20000000000000001, ++ { 0.72878006428676934, 0.40000000000000013, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.85206432981833979, 0.39999999999999991, 0.20000000000000001, ++ { 0.93100219010583574, 0.40000000000000013, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0149595349004430, 0.39999999999999991, 0.20000000000000001, ++ { 1.1443487271187611, 0.40000000000000013, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1758349405464676, 0.39999999999999991, 0.20000000000000001, ++ { 1.3683427764108813, 0.40000000000000013, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3353337673882637, 0.39999999999999991, 0.20000000000000001, ++ { 1.6008221459300933, 0.40000000000000013, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001, ++ { 1.8380358826317627, 0.40000000000000013, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler133 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.29999999999999999. +-// max(|f - f_GSL|): 1.1102230246251565e-15 +-// max(|f - f_GSL| / |f_GSL|): 7.7406350888907249e-16 ++// Test data for k=0.40000000000000013, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0271556462838835e-16 ++// mean(f - f_Boost): 2.0816681711721685e-16 ++// variance(f - f_Boost): 3.0360740073926687e-31 ++// stddev(f - f_Boost): 5.5100580826273227e-16 + const testcase_ellint_3 + data134[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.29999999999999999, ++ { 0.0000000000000000, 0.40000000000000013, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17414781013591540, 0.39999999999999991, 0.29999999999999999, ++ { 0.17520623975982899, 0.40000000000000013, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34609415696777285, 0.39999999999999991, 0.29999999999999999, ++ { 0.35444766141612105, 0.40000000000000013, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51413131295862535, 0.39999999999999991, 0.29999999999999999, ++ { 0.54171455841536009, 0.40000000000000013, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.67733527622935630, 0.39999999999999991, 0.29999999999999999, ++ { 0.74080517001084012, 0.40000000000000013, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.83558675182733266, 0.39999999999999991, 0.29999999999999999, ++ { 0.95496950509296574, 0.40000000000000013, 0.30000000000000004, + 0.87266462599716477 }, +- { 0.98940140808865906, 0.39999999999999991, 0.29999999999999999, ++ { 1.1862627879844718, 0.40000000000000013, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1396968797728058, 0.39999999999999991, 0.29999999999999999, ++ { 1.4346501803799458, 0.40000000000000013, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.2875920037865090, 0.39999999999999991, 0.29999999999999999, ++ { 1.6971744798077699, 0.40000000000000013, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999, ++ { 1.9677924132520139, 0.40000000000000013, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler134 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.40000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.4314214811441816e-16 ++// Test data for k=0.40000000000000013, nu=0.40000000000000002. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3436329231972794e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 2.9507053793392374e-31 ++// stddev(f - f_Boost): 5.4320395611033958e-16 + const testcase_ellint_3 + data135[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.40000000000000002, ++ { 0.0000000000000000, 0.40000000000000013, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17397362471112707, 0.39999999999999991, 0.40000000000000002, ++ { 0.17538490283034375, 0.40000000000000013, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34476864603333196, 0.39999999999999991, 0.40000000000000002, ++ { 0.35591129064319948, 0.40000000000000013, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.50999329415379346, 0.39999999999999991, 0.40000000000000002, ++ { 0.54684250413264535, 0.40000000000000013, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.66845674551396006, 0.39999999999999991, 0.40000000000000002, ++ { 0.75355027742668290, 0.40000000000000013, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.82012848346231748, 0.39999999999999991, 0.40000000000000002, ++ { 0.98117935026780634, 0.40000000000000013, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.96582449258349057, 0.39999999999999991, 0.40000000000000002, ++ { 1.2337464222030736, 0.40000000000000013, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1068473749476286, 0.39999999999999991, 0.40000000000000002, ++ { 1.5125183419289221, 0.40000000000000013, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2447132729159989, 0.39999999999999991, 0.40000000000000002, ++ { 1.8140224451130313, 0.40000000000000013, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002, ++ { 2.1289968719280026, 0.40000000000000013, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler135 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.50000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.6621057007519435e-16 ++// Test data for k=0.40000000000000013, nu=0.50000000000000000. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.7013794022122431e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 + const testcase_ellint_3 + data136[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.50000000000000000, ++ { 0.0000000000000000, 0.40000000000000013, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17380006262854136, 0.39999999999999991, 0.50000000000000000, ++ { 0.17556422235224273, 0.40000000000000013, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34346098216756610, 0.39999999999999991, 0.50000000000000000, ++ { 0.35739675341763921, 0.40000000000000013, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50596929935059420, 0.39999999999999991, 0.50000000000000000, ++ { 0.55214655195037188, 0.40000000000000013, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.65996392089131251, 0.39999999999999991, 0.50000000000000000, ++ { 0.76709520942047438, 0.40000000000000013, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.80558463511364786, 0.39999999999999991, 0.50000000000000000, ++ { 1.0100278761577499, 0.40000000000000013, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.94397834522857704, 0.39999999999999991, 0.50000000000000000, ++ { 1.2882265661384342, 0.40000000000000013, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0768075114108115, 0.39999999999999991, 0.50000000000000000, ++ { 1.6059059780051876, 0.40000000000000013, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2059184624251333, 0.39999999999999991, 0.50000000000000000, ++ { 1.9600182740224081, 0.40000000000000013, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000, ++ { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler136 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.59999999999999998. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 6.8853630717730749e-16 ++// Test data for k=0.40000000000000013, nu=0.60000000000000009. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.4792115132836117e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 4.8893797490374802e-31 ++// stddev(f - f_Boost): 6.9924099915819294e-16 + const testcase_ellint_3 + data137[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.59999999999999998, ++ { 0.0000000000000000, 0.40000000000000013, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17362711992081245, 0.39999999999999991, 0.59999999999999998, ++ { 0.17574420264267029, 0.40000000000000013, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34217074276403953, 0.39999999999999991, 0.59999999999999998, ++ { 0.35890463689046265, 0.40000000000000013, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50205389185761606, 0.39999999999999991, 0.59999999999999998, ++ { 0.55763773975194486, 0.40000000000000013, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.65182834920372734, 0.39999999999999991, 0.59999999999999998, ++ { 0.78153324227761267, 0.40000000000000013, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.79186512820565136, 0.39999999999999991, 0.59999999999999998, ++ { 1.0420205885765887, 0.40000000000000013, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.92365535916287134, 0.39999999999999991, 0.59999999999999998, ++ { 1.3517205230381770, 0.40000000000000013, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0491915663957907, 0.39999999999999991, 0.59999999999999998, ++ { 1.7210360970313896, 0.40000000000000013, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1705934291745106, 0.39999999999999991, 0.59999999999999998, ++ { 2.1500780510169246, 0.40000000000000013, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998, ++ { 2.6186940209850191, 0.40000000000000013, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler137 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.69999999999999996. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.1018730557776469e-16 ++// Test data for k=0.40000000000000013, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.8573292020719759e-16 ++// mean(f - f_Boost): 2.2759572004815707e-16 ++// variance(f - f_Boost): 2.9613098824898137e-31 ++// stddev(f - f_Boost): 5.4417918762938862e-16 + const testcase_ellint_3 + data138[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.69999999999999996, ++ { 0.0000000000000000, 0.40000000000000013, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17345479265712868, 0.39999999999999991, 0.69999999999999996, ++ { 0.17592484806010436, 0.40000000000000013, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34089751955950354, 0.39999999999999991, 0.69999999999999996, ++ { 0.36043555139631439, 0.40000000000000013, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.49824200167361332, 0.39999999999999991, 0.69999999999999996, ++ { 0.56332813669944881, 0.40000000000000013, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64402450341199402, 0.39999999999999991, 0.69999999999999996, ++ { 0.79697424562157548, 0.40000000000000013, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.77889207804122873, 0.39999999999999991, 0.69999999999999996, ++ { 1.0778155987523672, 0.40000000000000013, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.90468169720957992, 0.39999999999999991, 0.69999999999999996, ++ { 1.4272018169896268, 0.40000000000000013, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0236847823692916, 0.39999999999999991, 0.69999999999999996, ++ { 1.8684377907453382, 0.40000000000000013, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1382465247425166, 0.39999999999999991, 0.69999999999999996, ++ { 2.4128677409207473, 0.40000000000000013, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996, ++ { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler138 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.80000000000000004. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.3122171115555478e-16 ++// Test data for k=0.40000000000000013, nu=0.80000000000000004. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.5273712585384737e-16 ++// mean(f - f_Boost): 4.5241588253475131e-16 ++// variance(f - f_Boost): 1.1866477068555882e-30 ++// stddev(f - f_Boost): 1.0893336067778265e-15 + const testcase_ellint_3 + data139[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.80000000000000004, ++ { 0.0000000000000000, 0.40000000000000013, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17328307694277154, 0.39999999999999991, 0.80000000000000004, ++ { 0.17610616300487833, 0.40000000000000013, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.33964091800132007, 0.39999999999999991, 0.80000000000000004, ++ { 0.36199013167171978, 0.40000000000000013, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49452889372467440, 0.39999999999999991, 0.80000000000000004, ++ { 0.56923097361842434, 0.40000000000000013, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.63652940095937316, 0.39999999999999991, 0.80000000000000004, ++ { 0.81354878456624347, 0.40000000000000013, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.76659772511159097, 0.39999999999999991, 0.80000000000000004, ++ { 1.1182902719261825, 0.40000000000000013, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.88691047977338111, 0.39999999999999991, 0.80000000000000004, ++ { 1.5192950589409022, 0.40000000000000013, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0000273200611638, 0.39999999999999991, 0.80000000000000004, ++ { 2.0678761710223981, 0.40000000000000013, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1084787902188009, 0.39999999999999991, 0.80000000000000004, ++ { 2.8135222249879788, 0.40000000000000013, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004, ++ { 3.7289548002199902, 0.40000000000000013, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler139 = 2.5000000000000020e-13; + +-// Test data for k=0.39999999999999991, nu=0.90000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 7.5168974431077345e-16 ++// Test data for k=0.40000000000000013, nu=0.90000000000000002. ++// max(|f - f_Boost|): 6.2172489379008766e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.1718379478872251e-15 ++// mean(f - f_Boost): 8.4099394115355610e-16 ++// variance(f - f_Boost): 3.5684096037099424e-30 ++// stddev(f - f_Boost): 1.8890234523980751e-15 + const testcase_ellint_3 + data140[10] = + { +- { 0.0000000000000000, 0.39999999999999991, 0.90000000000000002, ++ { 0.0000000000000000, 0.40000000000000013, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17311196891868127, 0.39999999999999991, 0.90000000000000002, ++ { 0.17628815191971123, 0.40000000000000013, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33840055664911906, 0.39999999999999991, 0.90000000000000002, ++ { 0.36356903815378772, 0.40000000000000013, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49091013944075329, 0.39999999999999991, 0.90000000000000002, ++ { 0.57536079447000310, 0.40000000000000013, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.62932228186809580, 0.39999999999999991, 0.90000000000000002, ++ { 0.83141355850172571, 0.40000000000000013, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.75492278323019801, 0.39999999999999991, 0.90000000000000002, ++ { 1.1646481598721361, 0.40000000000000013, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.87021659043854294, 0.39999999999999991, 0.90000000000000002, ++ { 1.6357275034001995, 0.40000000000000013, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.97800245228239246, 0.39999999999999991, 0.90000000000000002, ++ { 2.3628787566572402, 0.40000000000000013, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.0809625773173697, 0.39999999999999991, 0.90000000000000002, ++ { 3.5521010369134962, 0.40000000000000013, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002, ++ { 5.3055535102872513, 0.40000000000000013, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler140 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.0000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1201497220602069e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.5893058141206173e-32 ++// stddev(f - f_Boost): 1.6091320064309879e-16 + const testcase_ellint_3 + data141[10] = + { +@@ -4108,289 +4530,319 @@ + 0.0000000000000000 }, + { 0.17475385514035785, 0.50000000000000000, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35081868470101585, 0.50000000000000000, 0.0000000000000000, ++ { 0.35081868470101579, 0.50000000000000000, 0.0000000000000000, + 0.34906585039886590 }, + { 0.52942862705190574, 0.50000000000000000, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.71164727562630314, 0.50000000000000000, 0.0000000000000000, ++ { 0.71164727562630326, 0.50000000000000000, 0.0000000000000000, + 0.69813170079773179 }, + { 0.89824523594227768, 0.50000000000000000, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.0895506700518851, 0.50000000000000000, 0.0000000000000000, ++ { 1.0895506700518853, 0.50000000000000000, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.2853005857432931, 0.50000000000000000, 0.0000000000000000, ++ { 1.2853005857432933, 0.50000000000000000, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.4845545520549484, 0.50000000000000000, 0.0000000000000000, ++ { 1.4845545520549488, 0.50000000000000000, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000, ++ { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler141 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.10000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.1662857256911530e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16 ++// mean(f - f_Boost): 2.7755575615628915e-18 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 + const testcase_ellint_3 + data142[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17457763120814676, 0.50000000000000000, 0.10000000000000001, ++ { 0.17493071928248824, 0.50000000000000000, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.34943246340849154, 0.50000000000000000, 0.10000000000000001, ++ { 0.35222467688034798, 0.50000000000000000, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52487937869610790, 0.50000000000000000, 0.10000000000000001, ++ { 0.53411928652008112, 0.50000000000000000, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.70127785096388384, 0.50000000000000000, 0.10000000000000001, ++ { 0.72256398117177589, 0.50000000000000000, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.87898815988624479, 0.50000000000000000, 0.10000000000000001, ++ { 0.91899583232771009, 0.50000000000000000, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0582764576094172, 0.50000000000000000, 0.10000000000000001, ++ { 1.1240549163055360, 0.50000000000000000, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2391936844060205, 0.50000000000000000, 0.10000000000000001, ++ { 1.3372938086286021, 0.50000000000000000, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.4214793542995841, 0.50000000000000000, 0.10000000000000001, ++ { 1.5570024469132429, 0.50000000000000000, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001, ++ { 1.7803034946545480, 0.50000000000000000, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler142 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.20000000000000001. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2114786773102175e-16 ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16 ++// mean(f - f_Boost): 2.7755575615628914e-17 ++// variance(f - f_Boost): 5.0311947683004831e-32 ++// stddev(f - f_Boost): 2.2430324938128922e-16 + const testcase_ellint_3 + data143[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17440204336345433, 0.50000000000000000, 0.20000000000000001, ++ { 0.17510822779582402, 0.50000000000000000, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34806552388338824, 0.50000000000000000, 0.20000000000000001, ++ { 0.35365094725531487, 0.50000000000000000, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52046416757129810, 0.50000000000000000, 0.20000000000000001, ++ { 0.53895933237328697, 0.50000000000000000, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.69140924550993865, 0.50000000000000000, 0.20000000000000001, ++ { 0.73408090840070794, 0.50000000000000000, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.86104678636125520, 0.50000000000000000, 0.20000000000000001, ++ { 0.94145442818535396, 0.50000000000000000, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0297439459053981, 0.50000000000000000, 0.20000000000000001, ++ { 1.1624120186296487, 0.50000000000000000, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.1979214112912033, 0.50000000000000000, 0.20000000000000001, ++ { 1.3965823372867114, 0.50000000000000000, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.3659033858648930, 0.50000000000000000, 0.20000000000000001, ++ { 1.6414308440430099, 0.50000000000000000, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001, ++ { 1.8922947612264018, 0.50000000000000000, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler143 = 2.5000000000000020e-13; + +-// Test data for k=0.50000000000000000, nu=0.29999999999999999. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2557837230041312e-16 ++// Test data for k=0.50000000000000000, nu=0.30000000000000004. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 8.5027191584278157e-32 ++// stddev(f - f_Boost): 2.9159422419567599e-16 + const testcase_ellint_3 + data144[10] = + { +- { 0.0000000000000000, 0.50000000000000000, 0.29999999999999999, ++ { 0.0000000000000000, 0.50000000000000000, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17422708752228896, 0.50000000000000000, 0.29999999999999999, ++ { 0.17528638488102041, 0.50000000000000000, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34671739434855858, 0.50000000000000000, 0.29999999999999999, ++ { 0.35509802222332720, 0.50000000000000000, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51617616305641878, 0.50000000000000000, 0.29999999999999999, ++ { 0.54395740731866193, 0.50000000000000000, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.68200047612545167, 0.50000000000000000, 0.29999999999999999, ++ { 0.74625871438752667, 0.50000000000000000, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.84427217869498372, 0.50000000000000000, 0.29999999999999999, ++ { 0.96588271186092023, 0.50000000000000000, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0035637821389782, 0.50000000000000000, 0.29999999999999999, ++ { 1.2054319584357329, 0.50000000000000000, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1606800483933111, 0.50000000000000000, 0.29999999999999999, ++ { 1.4651077994832871, 0.50000000000000000, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.3164407134643459, 0.50000000000000000, 0.29999999999999999, ++ { 1.7416018368052644, 0.50000000000000000, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999, ++ { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler144 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.40000000000000002. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.2992508582900068e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 9.0809736800018602e-32 ++// stddev(f - f_Boost): 3.0134653938616686e-16 + const testcase_ellint_3 + data145[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17405275963859917, 0.50000000000000000, 0.40000000000000002, ++ { 0.17546519477859268, 0.50000000000000000, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34538761957029329, 0.50000000000000000, 0.40000000000000002, ++ { 0.35656644822531680, 0.50000000000000000, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51200902646603907, 0.50000000000000000, 0.40000000000000002, ++ { 0.54912289677411319, 0.50000000000000000, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.67301522212868792, 0.50000000000000000, 0.40000000000000002, ++ { 0.75916731611690047, 0.50000000000000000, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.82853844466313320, 0.50000000000000000, 0.40000000000000002, ++ { 0.99260415631328214, 0.50000000000000000, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.97942097862681488, 0.50000000000000000, 0.40000000000000002, ++ { 1.2541925856918670, 0.50000000000000000, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1268429801220614, 0.50000000000000000, 0.40000000000000002, ++ { 1.5456393705347609, 0.50000000000000000, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.2720406704533922, 0.50000000000000000, 0.40000000000000002, ++ { 1.8631904972952076, 0.50000000000000000, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002, ++ { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler145 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.50000000000000000. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3419255755184137e-16 ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16 ++// mean(f - f_Boost): 9.4368957093138303e-17 ++// variance(f - f_Boost): 7.7794254682023874e-32 ++// stddev(f - f_Boost): 2.7891621444803792e-16 + const testcase_ellint_3 + data146[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17387905570381157, 0.50000000000000000, 0.50000000000000000, ++ { 0.17564466176941509, 0.50000000000000000, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34407576010465207, 0.50000000000000000, 0.50000000000000000, ++ { 0.35805679276065394, 0.50000000000000000, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.50795686560160824, 0.50000000000000000, 0.50000000000000000, ++ { 0.55446601496200032, 0.50000000000000000, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.66442115453330164, 0.50000000000000000, 0.50000000000000000, ++ { 0.77288783578259013, 0.50000000000000000, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.81373829119355345, 0.50000000000000000, 0.50000000000000000, ++ { 1.0220246013918972, 0.50000000000000000, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.95705743313235825, 0.50000000000000000, 0.50000000000000000, ++ { 1.3101681612463965, 0.50000000000000000, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.0959131991362554, 0.50000000000000000, 0.50000000000000000, ++ { 1.6422994881851025, 0.50000000000000000, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2318900529754597, 0.50000000000000000, 0.50000000000000000, ++ { 2.0152636030998816, 0.50000000000000000, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000, ++ { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler146 = 2.5000000000000020e-13; + +-// Test data for k=0.50000000000000000, nu=0.59999999999999998. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3838494104749599e-16 ++// Test data for k=0.50000000000000000, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16 ++// mean(f - f_Boost): 1.3322676295501878e-16 ++// variance(f - f_Boost): 1.7749370367472766e-31 ++// stddev(f - f_Boost): 4.2130001622920411e-16 + const testcase_ellint_3 + data147[10] = + { +- { 0.0000000000000000, 0.50000000000000000, 0.59999999999999998, ++ { 0.0000000000000000, 0.50000000000000000, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17370597174637581, 0.50000000000000000, 0.59999999999999998, ++ { 0.17582479017522740, 0.50000000000000000, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34278139158591414, 0.50000000000000000, 0.59999999999999998, ++ { 0.35956964546660036, 0.50000000000000000, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50401419439302708, 0.50000000000000000, 0.59999999999999998, ++ { 0.55999790372984193, 0.50000000000000000, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.65618938076167210, 0.50000000000000000, 0.59999999999999998, ++ { 0.78751507911209895, 0.50000000000000000, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.79977959248855424, 0.50000000000000000, 0.59999999999999998, ++ { 1.0546620505035220, 0.50000000000000000, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.93625925190753545, 0.50000000000000000, 0.59999999999999998, ++ { 1.3754438357425935, 0.50000000000000000, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0674905658379708, 0.50000000000000000, 0.59999999999999998, ++ { 1.7615727400820127, 0.50000000000000000, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.1953481298023050, 0.50000000000000000, 0.59999999999999998, ++ { 2.2134638067565242, 0.50000000000000000, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998, ++ { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler147 = 2.5000000000000020e-13; + +-// Test data for k=0.50000000000000000, nu=0.69999999999999996. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4250604066951477e-16 ++// Test data for k=0.50000000000000000, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16 ++// mean(f - f_Boost): 4.1633363423443370e-17 ++// variance(f - f_Boost): 1.9996383743576116e-32 ++// stddev(f - f_Boost): 1.4140857026211713e-16 + const testcase_ellint_3 + data148[10] = + { +- { 0.0000000000000000, 0.50000000000000000, 0.69999999999999996, ++ { 0.0000000000000000, 0.50000000000000000, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17353350383131641, 0.50000000000000000, 0.69999999999999996, ++ { 0.17600558435914915, 0.50000000000000000, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34150410405436771, 0.50000000000000000, 0.69999999999999996, ++ { 0.36110561926726259, 0.50000000000000000, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50017589696443487, 0.50000000000000000, 0.69999999999999996, ++ { 0.56573074641137111, 0.50000000000000000, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.64829398188419951, 0.50000000000000000, 0.69999999999999996, ++ { 0.80316073084237205, 0.50000000000000000, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.78658270782402073, 0.50000000000000000, 0.69999999999999996, ++ { 1.0911910688131461, 0.50000000000000000, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.91684738336675053, 0.50000000000000000, 0.69999999999999996, ++ { 1.4530946406380640, 0.50000000000000000, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0412486789555935, 0.50000000000000000, 0.69999999999999996, ++ { 1.9144386536785372, 0.50000000000000000, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1619021847612001, 0.50000000000000000, 0.69999999999999996, ++ { 2.4878788958234970, 0.50000000000000000, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996, ++ { 3.1433945297859225, 0.50000000000000000, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler148 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5715240651179632e-16 ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16 ++// mean(f - f_Boost): 2.3037127760972000e-16 ++// variance(f - f_Boost): 1.4989821857033475e-31 ++// stddev(f - f_Boost): 3.8716691306248618e-16 + const testcase_ellint_3 + data149[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17336164805979126, 0.50000000000000000, 0.80000000000000004, ++ { 0.17618704872620228, 0.50000000000000000, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34024350132086773, 0.50000000000000000, 0.80000000000000004, ++ { 0.36266535159745827, 0.50000000000000000, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49643719555734073, 0.50000000000000000, 0.80000000000000004, ++ { 0.57167789954529158, 0.50000000000000000, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.64071162456976150, 0.50000000000000000, 0.80000000000000004, ++ { 0.81995752984315018, 0.50000000000000000, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.77407836177211908, 0.50000000000000000, 0.80000000000000004, ++ { 1.1325112162158122, 0.50000000000000000, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.89867058251905652, 0.50000000000000000, 0.80000000000000004, ++ { 1.5479055930718042, 0.50000000000000000, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0169181822134910, 0.50000000000000000, 0.80000000000000004, ++ { 2.1215243941010486, 0.50000000000000000, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1311363312779448, 0.50000000000000000, 0.80000000000000004, ++ { 2.9069405767650132, 0.50000000000000000, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004, ++ { 3.8750701888108066, 0.50000000000000000, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler149 = 2.5000000000000020e-13; + + // Test data for k=0.50000000000000000, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4664649039489274e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16 ++// mean(f - f_Boost): 3.5249581031848718e-16 ++// variance(f - f_Boost): 2.5029385557256515e-31 ++// stddev(f - f_Boost): 5.0029376927217987e-16 + const testcase_ellint_3 + data150[10] = + { + { 0.0000000000000000, 0.50000000000000000, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17319040056865681, 0.50000000000000000, 0.90000000000000002, ++ { 0.17636918772384180, 0.50000000000000000, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33899920036578557, 0.50000000000000000, 0.90000000000000002, ++ { 0.36424950570740700, 0.50000000000000000, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49279362182695174, 0.50000000000000000, 0.90000000000000002, ++ { 0.57785404590231426, 0.50000000000000000, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.63342123379746151, 0.50000000000000000, 0.90000000000000002, ++ { 0.83806480521716531, 0.50000000000000000, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.76220595179550321, 0.50000000000000000, 0.90000000000000002, ++ { 1.1798568683069752, 0.50000000000000000, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.88160004743532294, 0.50000000000000000, 0.90000000000000002, ++ { 1.6678766243739607, 0.50000000000000000, 0.90000000000000002, + 1.0471975511965976 }, +- { 0.99427448642310123, 0.50000000000000000, 0.90000000000000002, ++ { 2.4282976450693483, 0.50000000000000000, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1027091512470095, 0.50000000000000000, 0.90000000000000002, ++ { 3.6810787666126656, 0.50000000000000000, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002, ++ { 5.5355132096026454, 0.50000000000000000, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler150 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3664899092028927e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 7.8758646268991113e-33 ++// stddev(f - f_Boost): 8.8746068233466605e-17 + const testcase_ellint_3 + data151[10] = + { +@@ -4398,19 +4850,19 @@ + 0.0000000000000000 }, + { 0.17485154362988359, 0.60000000000000009, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35160509865544326, 0.60000000000000009, 0.0000000000000000, ++ { 0.35160509865544320, 0.60000000000000009, 0.0000000000000000, + 0.34906585039886590 }, + { 0.53210652578446138, 0.60000000000000009, 0.0000000000000000, + 0.52359877559829882 }, + { 0.71805304664485659, 0.60000000000000009, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.91082759030195970, 0.60000000000000009, 0.0000000000000000, ++ { 0.91082759030195981, 0.60000000000000009, 0.0000000000000000, + 0.87266462599716477 }, + { 1.1112333229323361, 0.60000000000000009, 0.0000000000000000, + 1.0471975511965976 }, + { 1.3191461190365270, 0.60000000000000009, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.5332022105084775, 0.60000000000000009, 0.0000000000000000, ++ { 1.5332022105084779, 0.60000000000000009, 0.0000000000000000, + 1.3962634015954636 }, + { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000, + 1.5707963267948966 }, +@@ -4418,559 +4870,619 @@ + const double toler151 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.4937942733669112e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16 ++// mean(f - f_Boost): 8.6042284408449634e-17 ++// variance(f - f_Boost): 2.2835347143080263e-33 ++// stddev(f - f_Boost): 4.7786344433405099e-17 + const testcase_ellint_3 + data152[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17467514275022011, 0.60000000000000009, 0.10000000000000001, ++ { 0.17502858548476194, 0.60000000000000009, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35021333086258255, 0.60000000000000009, 0.10000000000000001, ++ { 0.35301673150537388, 0.60000000000000009, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.52751664092962691, 0.60000000000000009, 0.10000000000000001, ++ { 0.53683932476326812, 0.60000000000000009, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.70752126971957874, 0.60000000000000009, 0.10000000000000001, ++ { 0.72914228589586771, 0.60000000000000009, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.89111058756112871, 0.60000000000000009, 0.10000000000000001, ++ { 0.93208036718354692, 0.60000000000000009, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.0789241202877768, 0.60000000000000009, 0.10000000000000001, ++ { 1.1468984688863377, 0.60000000000000009, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.2710800210399946, 0.60000000000000009, 0.10000000000000001, ++ { 1.3733904977062528, 0.60000000000000009, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.4669060574440276, 0.60000000000000009, 0.10000000000000001, ++ { 1.6094225663372157, 0.60000000000000009, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001, ++ { 1.8508766487100685, 0.60000000000000009, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler152 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.20000000000000001. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1891472451898755e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16 ++// mean(f - f_Boost): -2.4980018054066023e-17 ++// variance(f - f_Boost): 2.1685495635542404e-32 ++// stddev(f - f_Boost): 1.4725995937641163e-16 + const testcase_ellint_3 + data153[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17449937871800650, 0.60000000000000009, 0.20000000000000001, ++ { 0.17520627248155893, 0.60000000000000009, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34884093647346553, 0.60000000000000009, 0.20000000000000001, ++ { 0.35444873935437748, 0.60000000000000009, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52306221119844087, 0.60000000000000009, 0.20000000000000001, ++ { 0.54172310557682524, 0.60000000000000009, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.69749955678982223, 0.60000000000000009, 0.20000000000000001, ++ { 0.74084300280734672, 0.60000000000000009, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.87274610682416853, 0.60000000000000009, 0.20000000000000001, ++ { 0.95509001527006121, 0.60000000000000009, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0494620540750792, 0.60000000000000009, 0.20000000000000001, ++ { 1.1865688084431796, 0.60000000000000009, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.2280847305507339, 0.60000000000000009, 0.20000000000000001, ++ { 1.4352978868932600, 0.60000000000000009, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.4085436279696888, 0.60000000000000009, 0.20000000000000001, ++ { 1.6983400371331818, 0.60000000000000009, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001, ++ { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler153 = 2.5000000000000020e-13; + +-// Test data for k=0.60000000000000009, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7339932380431439e-16 ++// Test data for k=0.60000000000000009, nu=0.30000000000000004. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16 ++// mean(f - f_Boost): 3.0531133177191807e-17 ++// variance(f - f_Boost): 1.1508025840536076e-34 ++// stddev(f - f_Boost): 1.0727546709539920e-17 + const testcase_ellint_3 + data154[10] = + { +- { 0.0000000000000000, 0.60000000000000009, 0.29999999999999999, ++ { 0.0000000000000000, 0.60000000000000009, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17432424744393932, 0.60000000000000009, 0.29999999999999999, ++ { 0.17538460882640122, 0.60000000000000009, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34748744127146447, 0.60000000000000009, 0.29999999999999999, ++ { 0.35590165133735557, 0.60000000000000009, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.51873632743924825, 0.60000000000000009, 0.29999999999999999, ++ { 0.54676661152254535, 0.60000000000000009, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.68794610396313116, 0.60000000000000009, 0.29999999999999999, ++ { 0.75321709418305305, 0.60000000000000009, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.85558070175468726, 0.60000000000000009, 0.29999999999999999, ++ { 0.98012637808992920, 0.60000000000000009, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0224416343605653, 0.60000000000000009, 0.29999999999999999, ++ { 1.2310891277158875, 0.60000000000000009, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.1893144457936788, 0.60000000000000009, 0.29999999999999999, ++ { 1.5069157924585623, 0.60000000000000009, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.3566435377982575, 0.60000000000000009, 0.29999999999999999, ++ { 1.8039583598337940, 0.60000000000000009, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999, ++ { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler154 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.40000000000000002. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.5440898085101625e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 2.8974839914337670e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.2849613290816465e-32 ++// stddev(f - f_Boost): 1.5116088545260797e-16 + const testcase_ellint_3 + data155[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17414974487670717, 0.60000000000000009, 0.40000000000000002, ++ { 0.17556359876533037, 0.60000000000000009, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34615238767335027, 0.60000000000000009, 0.40000000000000002, ++ { 0.35737601674244679, 0.60000000000000009, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51453257838108557, 0.60000000000000009, 0.40000000000000002, ++ { 0.55197933771320218, 0.60000000000000009, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.67882386787534399, 0.60000000000000009, 0.40000000000000002, ++ { 0.76633591620002905, 0.60000000000000009, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.83948470233173578, 0.60000000000000009, 0.40000000000000002, ++ { 1.0075231136019616, 0.60000000000000009, 0.40000000000000002, + 0.87266462599716477 }, +- { 0.99753496200073977, 0.60000000000000009, 0.40000000000000002, ++ { 1.2815842073813450, 0.60000000000000009, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1541101404388487, 0.60000000000000009, 0.40000000000000002, ++ { 1.5911666941449827, 0.60000000000000009, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.3100911323398816, 0.60000000000000009, 0.40000000000000002, ++ { 1.9323227566025762, 0.60000000000000009, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002, ++ { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler155 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.50000000000000000. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.7124937590522226e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 2.1397785842303966e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.5339913122479866e-32 ++// stddev(f - f_Boost): 1.2385440291923362e-16 + const testcase_ellint_3 + data156[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17397586700252807, 0.60000000000000009, 0.50000000000000000, ++ { 0.17574324658480217, 0.60000000000000009, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34483533397138516, 0.60000000000000009, 0.50000000000000000, ++ { 0.35887240603169313, 0.60000000000000009, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51044500461706477, 0.60000000000000009, 0.50000000000000000, ++ { 0.55737161826345261, 0.60000000000000009, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.67009988034712664, 0.60000000000000009, 0.50000000000000000, ++ { 0.78028227313077458, 0.60000000000000009, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.82434762375735193, 0.60000000000000009, 0.50000000000000000, ++ { 1.0376989776486290, 0.60000000000000009, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.97447346702798998, 0.60000000000000009, 0.50000000000000000, ++ { 1.3395933991042928, 0.60000000000000009, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.1219494000522143, 0.60000000000000009, 0.50000000000000000, ++ { 1.6924049626591784, 0.60000000000000009, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.2680242605954486, 0.60000000000000009, 0.50000000000000000, ++ { 2.0931011856518920, 0.60000000000000009, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000, ++ { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler156 = 2.5000000000000020e-13; + +-// Test data for k=0.60000000000000009, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.0652177678695900e-16 ++// Test data for k=0.60000000000000009, nu=0.60000000000000009. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16 ++// mean(f - f_Boost): 1.1934897514720432e-16 ++// variance(f - f_Boost): 1.7585404776158019e-33 ++// stddev(f - f_Boost): 4.1934955319110598e-17 + const testcase_ellint_3 + data157[10] = + { +- { 0.0000000000000000, 0.60000000000000009, 0.59999999999999998, ++ { 0.0000000000000000, 0.60000000000000009, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17380260984469353, 0.60000000000000009, 0.59999999999999998, ++ { 0.17592355661219386, 0.60000000000000009, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34353585361777839, 0.60000000000000009, 0.59999999999999998, ++ { 0.36039141192661606, 0.60000000000000009, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50646805774321380, 0.60000000000000009, 0.59999999999999998, ++ { 0.56295472636903854, 0.60000000000000009, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.66174468108625506, 0.60000000000000009, 0.59999999999999998, ++ { 0.79515295130165986, 0.60000000000000009, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.81007462280278408, 0.60000000000000009, 0.59999999999999998, ++ { 1.0711886441942242, 0.60000000000000009, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.95303466945718729, 0.60000000000000009, 0.59999999999999998, ++ { 1.4072952835139891, 0.60000000000000009, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.0924118588677505, 0.60000000000000009, 0.59999999999999998, ++ { 1.8174863977376825, 0.60000000000000009, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.2297640574847937, 0.60000000000000009, 0.59999999999999998, ++ { 2.3029921578542232, 0.60000000000000009, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998, ++ { 2.8388723099514972, 0.60000000000000009, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler157 = 2.5000000000000020e-13; + +-// Test data for k=0.60000000000000009, nu=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1692457486457856e-16 ++// Test data for k=0.60000000000000009, nu=0.70000000000000007. ++// max(|f - f_Boost|): 4.4408920985006262e-16 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 2.0027679235921772e-16 ++// mean(f - f_Boost): -1.3877787807814457e-17 ++// variance(f - f_Boost): 2.2849613290816465e-32 ++// stddev(f - f_Boost): 1.5116088545260797e-16 + const testcase_ellint_3 + data158[10] = + { +- { 0.0000000000000000, 0.60000000000000009, 0.69999999999999996, ++ { 0.0000000000000000, 0.60000000000000009, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17362996946312007, 0.60000000000000009, 0.69999999999999996, ++ { 0.17610453321631936, 0.60000000000000009, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34225353454870588, 0.60000000000000009, 0.69999999999999996, ++ { 0.36193365056369764, 0.60000000000000009, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50259656397799524, 0.60000000000000009, 0.69999999999999996, ++ { 0.56874098962268527, 0.60000000000000009, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.65373184496628933, 0.60000000000000009, 0.69999999999999996, ++ { 0.81106198671477181, 0.60000000000000009, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.79658372884056439, 0.60000000000000009, 0.69999999999999996, ++ { 1.1086886419010082, 0.60000000000000009, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.93303240100245421, 0.60000000000000009, 0.69999999999999996, ++ { 1.4879048567239257, 0.60000000000000009, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0651547944716557, 0.60000000000000009, 0.69999999999999996, ++ { 1.9780310073615925, 0.60000000000000009, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.1947676204853441, 0.60000000000000009, 0.69999999999999996, ++ { 2.5941545586772712, 0.60000000000000009, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.3232737468822813, 0.60000000000000009, 0.69999999999999996, ++ { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler158 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2705175719241326e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 7.3044933435043190e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 + const testcase_ellint_3 + data159[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17345794195390685, 0.60000000000000009, 0.80000000000000004, ++ { 0.17628618080795252, 0.60000000000000009, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34098797854531027, 0.60000000000000009, 0.80000000000000004, ++ { 0.36349976272521012, 0.60000000000000009, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.49882569168826213, 0.60000000000000009, 0.80000000000000004, ++ { 0.57474392342151914, 0.60000000000000009, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.64603758566475511, 0.60000000000000009, 0.80000000000000004, ++ { 0.82814493499158170, 0.60000000000000009, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.78380365594769730, 0.60000000000000009, 0.80000000000000004, ++ { 1.1511281795998280, 0.60000000000000009, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.91430946255611190, 0.60000000000000009, 0.80000000000000004, ++ { 1.5864286332503075, 0.60000000000000009, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0398955217270607, 0.60000000000000009, 0.80000000000000004, ++ { 2.1958944866494527, 0.60000000000000009, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.1625948314277679, 0.60000000000000009, 0.80000000000000004, ++ { 3.0398358172574604, 0.60000000000000009, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004, ++ { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler159 = 2.5000000000000020e-13; + + // Test data for k=0.60000000000000009, nu=0.90000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5585887739668036e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.5952142720718732e-16 ++// mean(f - f_Boost): 4.6351811278100284e-16 ++// variance(f - f_Boost): 2.1278339779151204e-31 ++// stddev(f - f_Boost): 4.6128450851021651e-16 + const testcase_ellint_3 + data160[10] = + { + { 0.0000000000000000, 0.60000000000000009, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17328652344890030, 0.60000000000000009, 0.90000000000000002, ++ { 0.17646850384035848, 0.60000000000000009, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.33973880062929018, 0.60000000000000009, 0.90000000000000002, ++ { 0.36509041515134105, 0.60000000000000009, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49515092233122743, 0.60000000000000009, 0.90000000000000002, ++ { 0.58097838596260631, 0.60000000000000009, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.63864042139737043, 0.60000000000000009, 0.90000000000000002, ++ { 0.84656453396163722, 0.60000000000000009, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.77167205646538850, 0.60000000000000009, 0.90000000000000002, ++ { 1.1997828426963724, 0.60000000000000009, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.89673202848034383, 0.60000000000000009, 0.90000000000000002, ++ { 1.7112436789225605, 0.60000000000000009, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0163984492661304, 0.60000000000000009, 0.90000000000000002, ++ { 2.5193168553672312, 0.60000000000000009, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1328845785162431, 0.60000000000000009, 0.90000000000000002, ++ { 3.8656670488606690, 0.60000000000000009, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.2479362973851873, 0.60000000000000009, 0.90000000000000002, ++ { 5.8709993116265604, 0.60000000000000009, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler160 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.0000000000000000. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.5930208052157665e-16 ++// Test data for k=0.70000000000000018, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1569224977685422e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 1.6571557210371951e-32 ++// stddev(f - f_Boost): 1.2873056051447903e-16 + const testcase_ellint_3 + data161[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.0000000000000000, ++ { 0.0000000000000000, 0.70000000000000018, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17496737466916723, 0.69999999999999996, 0.0000000000000000, ++ { 0.17496737466916723, 0.70000000000000018, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35254687535677925, 0.69999999999999996, 0.0000000000000000, ++ { 0.35254687535677931, 0.70000000000000018, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.53536740275997119, 0.69999999999999996, 0.0000000000000000, ++ { 0.53536740275997130, 0.70000000000000018, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.72603797651684454, 0.69999999999999996, 0.0000000000000000, ++ { 0.72603797651684454, 0.70000000000000018, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.92698296348313458, 0.69999999999999996, 0.0000000000000000, ++ { 0.92698296348313447, 0.70000000000000018, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.1400447527693316, 0.69999999999999996, 0.0000000000000000, ++ { 1.1400447527693318, 0.70000000000000018, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.3657668117194073, 0.69999999999999996, 0.0000000000000000, ++ { 1.3657668117194073, 0.70000000000000018, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.6024686895959159, 0.69999999999999996, 0.0000000000000000, ++ { 1.6024686895959164, 0.70000000000000018, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000, ++ { 1.8456939983747236, 0.70000000000000018, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler161 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.10000000000000001. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.6735282577377367e-16 ++// Test data for k=0.70000000000000018, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.9552278747527691e-16 ++// mean(f - f_Boost): 1.1102230246251565e-16 ++// variance(f - f_Boost): 1.3695501826753678e-32 ++// stddev(f - f_Boost): 1.1702778228589004e-16 + const testcase_ellint_3 + data162[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.10000000000000001, ++ { 0.0000000000000000, 0.70000000000000018, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17479076384884684, 0.69999999999999996, 0.10000000000000001, ++ { 0.17514462737300920, 0.70000000000000018, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35114844900396364, 0.69999999999999996, 0.10000000000000001, ++ { 0.35396527997470451, 0.70000000000000018, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53072776947527001, 0.69999999999999996, 0.10000000000000001, ++ { 0.54015179589433981, 0.70000000000000018, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.71530198262386235, 0.69999999999999996, 0.10000000000000001, ++ { 0.73734430854477728, 0.70000000000000018, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.90666760677828306, 0.69999999999999996, 0.10000000000000001, ++ { 0.94888950796697047, 0.70000000000000018, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1063366517438080, 0.69999999999999996, 0.10000000000000001, ++ { 1.1772807959736322, 0.70000000000000018, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.3149477243092149, 0.69999999999999996, 0.10000000000000001, ++ { 1.4231796401075834, 0.70000000000000018, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.5314886725038925, 0.69999999999999996, 0.10000000000000001, ++ { 1.6841856799887471, 0.70000000000000018, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001, ++ { 1.9541347343119564, 0.70000000000000018, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler162 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.20000000000000001. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.7517969287516802e-16 ++// Test data for k=0.70000000000000018, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.7430437016285820e-16 ++// mean(f - f_Boost): 3.3306690738754695e-17 ++// variance(f - f_Boost): 1.3695501826753678e-34 ++// stddev(f - f_Boost): 1.1702778228589003e-17 + const testcase_ellint_3 + data163[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.20000000000000001, ++ { 0.0000000000000000, 0.70000000000000018, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17461479077791475, 0.69999999999999996, 0.20000000000000001, ++ { 0.17532252613350796, 0.70000000000000018, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.34976950621407538, 0.69999999999999996, 0.20000000000000001, ++ { 0.35540417596807522, 0.70000000000000018, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.52622533231350177, 0.69999999999999996, 0.20000000000000001, ++ { 0.54508913033361928, 0.70000000000000018, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.70508774017895215, 0.69999999999999996, 0.20000000000000001, ++ { 0.74927635777718415, 0.70000000000000018, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.88775302531730294, 0.69999999999999996, 0.20000000000000001, ++ { 0.97261706337936338, 0.70000000000000018, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.0756195476149006, 0.69999999999999996, 0.20000000000000001, ++ { 1.2187303976209327, 0.70000000000000018, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.2695349716654374, 0.69999999999999996, 0.20000000000000001, ++ { 1.4887796709222487, 0.70000000000000018, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.4690814617070540, 0.69999999999999996, 0.20000000000000001, ++ { 1.7796581281839214, 0.70000000000000018, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.6721098780092145, 0.69999999999999996, 0.20000000000000001, ++ { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler163 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8280039841080712e-16 ++// Test data for k=0.70000000000000018, nu=0.30000000000000004. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.2570807706941696e-16 ++// mean(f - f_Boost): 8.8817841970012528e-17 ++// variance(f - f_Boost): 1.5582437633995295e-32 ++// stddev(f - f_Boost): 1.2482963443828271e-16 + const testcase_ellint_3 + data164[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.29999999999999999, ++ { 0.0000000000000000, 0.70000000000000018, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17443945136076175, 0.69999999999999996, 0.29999999999999999, ++ { 0.17550107516328570, 0.70000000000000018, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34840956983535287, 0.69999999999999996, 0.29999999999999999, ++ { 0.35686409576571965, 0.70000000000000018, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52185308551329168, 0.69999999999999996, 0.29999999999999999, ++ { 0.55018827316513352, 0.70000000000000018, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.69535240431168255, 0.69999999999999996, 0.29999999999999999, ++ { 0.76189759494390275, 0.70000000000000018, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.87007983473964923, 0.69999999999999996, 0.29999999999999999, ++ { 0.99844623430885626, 0.70000000000000018, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0474657975577066, 0.69999999999999996, 0.29999999999999999, ++ { 1.2652862989039833, 0.70000000000000018, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.2286225419931891, 0.69999999999999996, 0.29999999999999999, ++ { 1.5647666808691361, 0.70000000000000018, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.4136490671013271, 0.69999999999999996, 0.29999999999999999, ++ { 1.8932499694938165, 0.70000000000000018, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999, ++ { 2.2392290510988535, 0.70000000000000018, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler164 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3472957053482092e-16 ++// Test data for k=0.70000000000000018, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.3719045096496910e-16 ++// mean(f - f_Boost): 1.3600232051658169e-16 ++// variance(f - f_Boost): 1.1718213750516114e-32 ++// stddev(f - f_Boost): 1.0825069861444829e-16 + const testcase_ellint_3 + data165[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.40000000000000002, ++ { 0.0000000000000000, 0.70000000000000018, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17426474153983229, 0.69999999999999996, 0.40000000000000002, ++ { 0.17568027871494424, 0.70000000000000018, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34706817945773732, 0.69999999999999996, 0.40000000000000002, ++ { 0.35834559208180261, 0.70000000000000018, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.51760452851738148, 0.69999999999999996, 0.40000000000000002, ++ { 0.55545885451190613, 0.70000000000000018, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.68605801534722755, 0.69999999999999996, 0.40000000000000002, ++ { 0.77528120402568113, 0.70000000000000018, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.85351339387296532, 0.69999999999999996, 0.40000000000000002, ++ { 1.0267241287600322, 0.70000000000000018, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0215297967969539, 0.69999999999999996, 0.40000000000000002, ++ { 1.3181380338980246, 0.70000000000000018, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.1915051074460530, 0.69999999999999996, 0.40000000000000002, ++ { 1.6542840785132087, 0.70000000000000018, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.3639821911744707, 0.69999999999999996, 0.40000000000000002, ++ { 2.0315595131131823, 0.70000000000000018, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002, ++ { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler165 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.50000000000000000. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.9748346743390620e-16 ++// Test data for k=0.70000000000000018, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.0277361210295499e-16 ++// mean(f - f_Boost): 1.6930901125533636e-16 ++// variance(f - f_Boost): 6.3799163752809956e-32 ++// stddev(f - f_Boost): 2.5258496343371268e-16 + const testcase_ellint_3 + data166[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.50000000000000000, ++ { 0.0000000000000000, 0.70000000000000018, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17409065729516096, 0.69999999999999996, 0.50000000000000000, ++ { 0.17586014108156545, 0.70000000000000018, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34574489064986091, 0.69999999999999996, 0.50000000000000000, ++ { 0.35984923894341653, 0.70000000000000018, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51347361925579782, 0.69999999999999996, 0.50000000000000000, ++ { 0.56091135606739995, 0.70000000000000018, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.67717079489579279, 0.69999999999999996, 0.50000000000000000, ++ { 0.78951212635197054, 0.70000000000000018, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.83793902055292280, 0.69999999999999996, 0.50000000000000000, ++ { 1.0578865732938731, 0.70000000000000018, 0.50000000000000000, + 0.87266462599716477 }, +- { 0.99752863545289705, 0.69999999999999996, 0.50000000000000000, ++ { 1.3789149005151722, 0.70000000000000018, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.1576240080401501, 0.69999999999999996, 0.50000000000000000, ++ { 1.7620212286086228, 0.70000000000000018, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.3191464023923762, 0.69999999999999996, 0.50000000000000000, ++ { 2.2051554347435589, 0.70000000000000018, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000, ++ { 2.6868019968236996, 0.70000000000000018, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler166 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.59999999999999998. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.0457157538295173e-16 ++// Test data for k=0.70000000000000018, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.8597454441867134e-16 ++// mean(f - f_Boost): 2.5535129566378598e-16 ++// variance(f - f_Boost): 2.8561208198482198e-31 ++// stddev(f - f_Boost): 5.3442687243889785e-16 + const testcase_ellint_3 + data167[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.59999999999999998, ++ { 0.0000000000000000, 0.70000000000000018, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17391719464391614, 0.69999999999999996, 0.59999999999999998, ++ { 0.17604066659721918, 0.70000000000000018, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34443927423869031, 0.69999999999999996, 0.59999999999999998, ++ { 0.36137563278353424, 0.70000000000000018, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.50945473266486063, 0.69999999999999996, 0.59999999999999998, ++ { 0.56655721272747606, 0.70000000000000018, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.66866056326513812, 0.69999999999999996, 0.59999999999999998, ++ { 0.80468966552978305, 0.70000000000000018, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.82325830002337352, 0.69999999999999996, 0.59999999999999998, ++ { 1.0924902943683852, 0.70000000000000018, 0.60000000000000009, + 0.87266462599716477 }, +- { 0.97522808245669368, 0.69999999999999996, 0.59999999999999998, ++ { 1.4499247992499800, 0.70000000000000018, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.1265300613705285, 0.69999999999999996, 0.59999999999999998, ++ { 1.8953714382113818, 0.70000000000000018, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.2784066076152001, 0.69999999999999996, 0.59999999999999998, ++ { 2.4323229949248670, 0.70000000000000018, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998, ++ { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler167 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.4867405596732161e-16 ++// Test data for k=0.70000000000000018, nu=0.70000000000000007. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 3.2316852368580916e-16 ++// mean(f - f_Boost): 7.7715611723760953e-17 ++// variance(f - f_Boost): 7.4564398834547797e-34 ++// stddev(f - f_Boost): 2.7306482533374340e-17 + const testcase_ellint_3 + data168[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.69999999999999996, ++ { 0.0000000000000000, 0.70000000000000018, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17374434963995031, 0.69999999999999996, 0.69999999999999996, ++ { 0.17622185963747933, 0.70000000000000018, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34315091562900674, 0.69999999999999996, 0.69999999999999996, ++ { 0.36292539360435261, 0.70000000000000018, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50554262375653347, 0.69999999999999996, 0.69999999999999996, ++ { 0.57240892970150015, 0.70000000000000018, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.66050025406305801, 0.69999999999999996, 0.69999999999999996, ++ { 0.82093084713182629, 0.70000000000000018, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.80938620118847404, 0.69999999999999996, 0.69999999999999996, ++ { 1.1312609022179871, 0.70000000000000018, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.95443223855852144, 0.69999999999999996, 0.69999999999999996, ++ { 1.5345768067715795, 0.70000000000000018, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.0978573207128304, 0.69999999999999996, 0.69999999999999996, ++ { 2.0668847445934424, 0.70000000000000018, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.2411754575007123, 0.69999999999999996, 0.69999999999999996, ++ { 2.7483444537551245, 0.70000000000000018, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996, ++ { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler168 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1829502028913879e-16 ++// Test data for k=0.70000000000000018, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.3322676295501878e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.1198716111867353e-16 ++// mean(f - f_Boost): 2.2482016248659419e-16 ++// variance(f - f_Boost): 5.4326441655972001e-32 ++// stddev(f - f_Boost): 2.3308033305273100e-16 + const testcase_ellint_3 + data169[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.80000000000000004, ++ { 0.0000000000000000, 0.70000000000000018, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17357211837335740, 0.69999999999999996, 0.80000000000000004, ++ { 0.17640372461994805, 0.70000000000000018, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34187941416012108, 0.69999999999999996, 0.80000000000000004, ++ { 0.36449916621651091, 0.70000000000000018, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50173239465478259, 0.69999999999999996, 0.80000000000000004, ++ { 0.57848021800372584, 0.70000000000000018, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.65266550725988315, 0.69999999999999996, 0.80000000000000004, ++ { 0.83837480968392586, 0.70000000000000018, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.79624879865249298, 0.69999999999999996, 0.80000000000000004, ++ { 1.1751669030061143, 0.70000000000000018, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.93497577043296920, 0.69999999999999996, 0.80000000000000004, ++ { 1.6381851899173603, 0.70000000000000018, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.0713041566930750, 0.69999999999999996, 0.80000000000000004, ++ { 2.3002065924302197, 0.70000000000000018, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.2069772023255654, 0.69999999999999996, 0.80000000000000004, ++ { 3.2337600665337871, 0.70000000000000018, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.3427110650397531, 0.69999999999999996, 0.80000000000000004, ++ { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler169 = 2.5000000000000020e-13; + +-// Test data for k=0.69999999999999996, nu=0.90000000000000002. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2494869624129105e-16 ++// Test data for k=0.70000000000000018, nu=0.90000000000000002. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16 ++// mean(f - f_Boost): 7.4384942649885490e-16 ++// variance(f - f_Boost): 9.7403930714297352e-31 ++// stddev(f - f_Boost): 9.8693429727767263e-16 + const testcase_ellint_3 + data170[10] = + { +- { 0.0000000000000000, 0.69999999999999996, 0.90000000000000002, ++ { 0.0000000000000000, 0.70000000000000018, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17340049697003637, 0.69999999999999996, 0.90000000000000002, ++ { 0.17658626600478800, 0.70000000000000018, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34062438249741556, 0.69999999999999996, 0.90000000000000002, ++ { 0.36609762156017206, 0.70000000000000018, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.49801946510076867, 0.69999999999999996, 0.90000000000000002, ++ { 0.58478615187842409, 0.70000000000000018, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.64513432604750476, 0.69999999999999996, 0.90000000000000002, ++ { 0.85718862878291846, 0.70000000000000018, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.78378145487573758, 0.69999999999999996, 0.90000000000000002, ++ { 1.2255385617397643, 0.70000000000000018, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.91671799500854623, 0.69999999999999996, 0.90000000000000002, ++ { 1.7696521899992941, 0.70000000000000018, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0466193579463123, 0.69999999999999996, 0.90000000000000002, ++ { 2.6476314987883507, 0.70000000000000018, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.1754218079199146, 0.69999999999999996, 0.90000000000000002, ++ { 4.1373434902898083, 0.70000000000000018, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.3040500499695913, 0.69999999999999996, 0.90000000000000002, ++ { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler170 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.0000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1175183168766718e-16 ++// max(|f - f_Boost|): 1.5543122344752192e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.1368406725192426e-31 ++// stddev(f - f_Boost): 4.6225974002926564e-16 + const testcase_ellint_3 + data171[10] = + { +@@ -4978,596 +5490,654 @@ + 0.0000000000000000 }, + { 0.17510154241338899, 0.80000000000000004, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35365068839779390, 0.80000000000000004, 0.0000000000000000, ++ { 0.35365068839779396, 0.80000000000000004, 0.0000000000000000, + 0.34906585039886590 }, + { 0.53926804409084550, 0.80000000000000004, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.73587926028070361, 0.80000000000000004, 0.0000000000000000, ++ { 0.73587926028070372, 0.80000000000000004, 0.0000000000000000, + 0.69813170079773179 }, + { 0.94770942970071170, 0.80000000000000004, 0.0000000000000000, + 0.87266462599716477 }, + { 1.1789022995388236, 0.80000000000000004, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.4323027881876009, 0.80000000000000004, 0.0000000000000000, ++ { 1.4323027881876012, 0.80000000000000004, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.7069629739121674, 0.80000000000000004, 0.0000000000000000, ++ { 1.7069629739121677, 0.80000000000000004, 0.0000000000000000, + 1.3962634015954636 }, +- { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000, ++ { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler171 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.10000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1537164503193145e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16 ++// mean(f - f_Boost): 2.3869795029440865e-16 ++// variance(f - f_Boost): 2.9190059990693968e-31 ++// stddev(f - f_Boost): 5.4027826155319237e-16 + const testcase_ellint_3 + data172[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17492468824017163, 0.80000000000000004, 0.10000000000000001, ++ { 0.17527903952342144, 0.80000000000000004, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35224443521476911, 0.80000000000000004, 0.10000000000000001, ++ { 0.35507705313548549, 0.80000000000000004, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53456851853226950, 0.80000000000000004, 0.10000000000000001, ++ { 0.54411455987643553, 0.80000000000000004, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.72488875602364922, 0.80000000000000004, 0.10000000000000001, ++ { 0.74745625666804383, 0.80000000000000004, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.92661354274638952, 0.80000000000000004, 0.10000000000000001, ++ { 0.97046953684238557, 0.80000000000000004, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1432651144499075, 0.80000000000000004, 0.10000000000000001, ++ { 1.2183080025184605, 0.80000000000000004, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.3774479927211429, 0.80000000000000004, 0.10000000000000001, ++ { 1.4943711151994405, 0.80000000000000004, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.6287092337196041, 0.80000000000000004, 0.10000000000000001, ++ { 1.7972401309544201, 0.80000000000000004, 0.10000000000000001, + 1.3962634015954636 }, +- { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001, ++ { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler172 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.20000000000000001. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1894552974436829e-16 ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16 ++// mean(f - f_Boost): 2.8310687127941490e-16 ++// variance(f - f_Boost): 2.7528339102381189e-31 ++// stddev(f - f_Boost): 5.2467455724840699e-16 + const testcase_ellint_3 + data173[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17474847286224940, 0.80000000000000004, 0.20000000000000001, ++ { 0.17545718375086419, 0.80000000000000004, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.35085779529084682, 0.80000000000000004, 0.20000000000000001, ++ { 0.35652404627248163, 0.80000000000000004, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.53000829263059146, 0.80000000000000004, 0.20000000000000001, ++ { 0.54911638512920913, 0.80000000000000004, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.71443466027453384, 0.80000000000000004, 0.20000000000000001, ++ { 0.75967684282131176, 0.80000000000000004, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.90698196872715420, 0.80000000000000004, 0.20000000000000001, ++ { 0.99513526893543769, 0.80000000000000004, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.1108198200558579, 0.80000000000000004, 0.20000000000000001, ++ { 1.2622192109995993, 0.80000000000000004, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.3284988909963957, 0.80000000000000004, 0.20000000000000001, ++ { 1.5654106676347741, 0.80000000000000004, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.5600369318140328, 0.80000000000000004, 0.20000000000000001, ++ { 1.9029531718534984, 0.80000000000000004, 0.20000000000000001, + 1.3962634015954636 }, +- { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001, ++ { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler173 = 2.5000000000000020e-13; + +-// Test data for k=0.80000000000000004, nu=0.29999999999999999. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2247517409029886e-16 ++// Test data for k=0.80000000000000004, nu=0.30000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16 ++// mean(f - f_Boost): 2.6367796834847468e-16 ++// variance(f - f_Boost): 2.8249350208968825e-31 ++// stddev(f - f_Boost): 5.3150117788175054e-16 + const testcase_ellint_3 + data174[10] = + { +- { 0.0000000000000000, 0.80000000000000004, 0.29999999999999999, ++ { 0.0000000000000000, 0.80000000000000004, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17457289217669889, 0.80000000000000004, 0.29999999999999999, ++ { 0.17563597931587369, 0.80000000000000004, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.34949028801501258, 0.80000000000000004, 0.29999999999999999, ++ { 0.35799220412005128, 0.80000000000000004, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52558024362769307, 0.80000000000000004, 0.29999999999999999, ++ { 0.55428253691111318, 0.80000000000000004, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.70447281740094891, 0.80000000000000004, 0.29999999999999999, ++ { 0.77260647376977365, 0.80000000000000004, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.88864745641528986, 0.80000000000000004, 0.29999999999999999, ++ { 1.0220015271210958, 0.80000000000000004, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.0811075819341462, 0.80000000000000004, 0.29999999999999999, ++ { 1.3115965312302671, 0.80000000000000004, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.2844589654082377, 0.80000000000000004, 0.29999999999999999, ++ { 1.6478518468813512, 0.80000000000000004, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.4991461361277847, 0.80000000000000004, 0.29999999999999999, ++ { 2.0290458414203481, 0.80000000000000004, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999, ++ { 2.4392042002725693, 0.80000000000000004, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler174 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.40000000000000002. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2596216594752862e-16 ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16 ++// mean(f - f_Boost): 3.3861802251067273e-16 ++// variance(f - f_Boost): 4.3719465706454422e-31 ++// stddev(f - f_Boost): 6.6120696991527871e-16 + const testcase_ellint_3 + data175[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17439794211872175, 0.80000000000000004, 0.40000000000000002, ++ { 0.17581543047866136, 0.80000000000000004, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34814144964568972, 0.80000000000000004, 0.40000000000000002, ++ { 0.35948208343061633, 0.80000000000000004, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.52127776285273064, 0.80000000000000004, 0.40000000000000002, ++ { 0.55962280893702021, 0.80000000000000004, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.69496411438966588, 0.80000000000000004, 0.40000000000000002, ++ { 0.78632063889234116, 0.80000000000000004, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.87146878427509589, 0.80000000000000004, 0.40000000000000002, ++ { 1.0514333069550323, 0.80000000000000004, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0537579024937762, 0.80000000000000004, 0.40000000000000002, ++ { 1.3677213138838757, 0.80000000000000004, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.2445534387922637, 0.80000000000000004, 0.40000000000000002, ++ { 1.7451736773665165, 0.80000000000000004, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.4446769766361993, 0.80000000000000004, 0.40000000000000002, ++ { 2.1830100424586831, 0.80000000000000004, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002, ++ { 2.6604037035529724, 0.80000000000000004, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler175 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.50000000000000000. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.2940800093915668e-16 ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16 ++// mean(f - f_Boost): 3.8580250105724191e-16 ++// variance(f - f_Boost): 6.4106456575047741e-31 ++// stddev(f - f_Boost): 8.0066507713929764e-16 + const testcase_ellint_3 + data176[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17422361866118044, 0.80000000000000004, 0.50000000000000000, ++ { 0.17599554153999472, 0.80000000000000004, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34681083254170475, 0.80000000000000004, 0.50000000000000000, ++ { 0.36099426243351540, 0.80000000000000004, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.51709470815494440, 0.80000000000000004, 0.50000000000000000, ++ { 0.56514786174780673, 0.80000000000000004, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.68587375344080237, 0.80000000000000004, 0.50000000000000000, ++ { 0.80090697622371010, 0.80000000000000004, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.85532571852810624, 0.80000000000000004, 0.50000000000000000, ++ { 1.0838891627679339, 0.80000000000000004, 0.50000000000000000, + 0.87266462599716477 }, +- { 1.0284677391874903, 0.80000000000000004, 0.50000000000000000, ++ { 1.4323506654466280, 0.80000000000000004, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.2081693942686225, 0.80000000000000004, 0.50000000000000000, ++ { 1.8625761085390575, 0.80000000000000004, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.3955803006426311, 0.80000000000000004, 0.50000000000000000, ++ { 2.3768757305654766, 0.80000000000000004, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000, ++ { 2.9478781158239746, 0.80000000000000004, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler176 = 2.5000000000000020e-13; + +-// Test data for k=0.80000000000000004, nu=0.59999999999999998. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3281408974056389e-16 ++// Test data for k=0.80000000000000004, nu=0.60000000000000009. ++// max(|f - f_Boost|): 3.5527136788005009e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15 ++// mean(f - f_Boost): 4.8294701571194306e-16 ++// variance(f - f_Boost): 1.1633910328160319e-30 ++// stddev(f - f_Boost): 1.0786060600682865e-15 + const testcase_ellint_3 + data177[10] = + { +- { 0.0000000000000000, 0.80000000000000004, 0.59999999999999998, ++ { 0.0000000000000000, 0.80000000000000004, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17404991781414089, 0.80000000000000004, 0.59999999999999998, ++ { 0.17617631684170665, 0.80000000000000004, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34549800443625167, 0.80000000000000004, 0.59999999999999998, ++ { 0.36252934193666231, 0.80000000000000004, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.51302536167001545, 0.80000000000000004, 0.59999999999999998, ++ { 0.57086932622945163, 0.80000000000000004, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.67717065003912236, 0.80000000000000004, 0.59999999999999998, ++ { 0.81646796740150973, 0.80000000000000004, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.84011512421134416, 0.80000000000000004, 0.59999999999999998, ++ { 1.1199552158519064, 0.80000000000000004, 0.60000000000000009, + 0.87266462599716477 }, +- { 1.0049863847088740, 0.80000000000000004, 0.59999999999999998, ++ { 1.5079766673336394, 0.80000000000000004, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.1748145941898920, 0.80000000000000004, 0.59999999999999998, ++ { 2.0082747447038165, 0.80000000000000004, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.3510319699755071, 0.80000000000000004, 0.59999999999999998, ++ { 2.6315146066775523, 0.80000000000000004, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998, ++ { 3.3418121892288051, 0.80000000000000004, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler177 = 2.5000000000000020e-13; + +-// Test data for k=0.80000000000000004, nu=0.69999999999999996. +-// max(|f - f_GSL|): 2.2204460492503131e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3618176466061808e-16 ++// Test data for k=0.80000000000000004, nu=0.70000000000000007. ++// max(|f - f_Boost|): 2.2204460492503131e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16 ++// mean(f - f_Boost): 3.2751579226442120e-16 ++// variance(f - f_Boost): 4.4236851331020672e-31 ++// stddev(f - f_Boost): 6.6510789599147505e-16 + const testcase_ellint_3 + data178[10] = + { +- { 0.0000000000000000, 0.80000000000000004, 0.69999999999999996, ++ { 0.0000000000000000, 0.80000000000000004, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17387683562442199, 0.80000000000000004, 0.69999999999999996, ++ { 0.17635776076721221, 0.80000000000000004, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34420254775101611, 0.80000000000000004, 0.69999999999999996, ++ { 0.36408794649916976, 0.80000000000000004, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.50906439222143673, 0.80000000000000004, 0.69999999999999996, ++ { 0.57679992290624138, 0.80000000000000004, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.66882693152688422, 0.80000000000000004, 0.69999999999999996, ++ { 0.83312441418142813, 0.80000000000000004, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.82574792844091316, 0.80000000000000004, 0.69999999999999996, ++ { 1.1603958891464856, 0.80000000000000004, 0.70000000000000007, + 0.87266462599716477 }, +- { 0.98310431309490931, 0.80000000000000004, 0.69999999999999996, ++ { 1.5982855143796213, 0.80000000000000004, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.1440884535113258, 0.80000000000000004, 0.69999999999999996, ++ { 2.1962484408371821, 0.80000000000000004, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.3103743938952537, 0.80000000000000004, 0.69999999999999996, ++ { 2.9873281786111869, 0.80000000000000004, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996, ++ { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler178 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3951228558314112e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16 ++// mean(f - f_Boost): 7.0499162063697436e-16 ++// variance(f - f_Boost): 1.7230805408026989e-30 ++// stddev(f - f_Boost): 1.3126616246400665e-15 + const testcase_ellint_3 + data179[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17370436817515203, 0.80000000000000004, 0.80000000000000004, ++ { 0.17653987774203392, 0.80000000000000004, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34292405894783395, 0.80000000000000004, 0.80000000000000004, ++ { 0.36567072568046877, 0.80000000000000004, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50520682176250076, 0.80000000000000004, 0.80000000000000004, ++ { 0.58295359996558616, 0.80000000000000004, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.66081751679736178, 0.80000000000000004, 0.80000000000000004, ++ { 0.85101998309176108, 0.80000000000000004, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.81214672249355102, 0.80000000000000004, 0.80000000000000004, ++ { 1.2062322059736537, 0.80000000000000004, 0.80000000000000004, + 0.87266462599716477 }, +- { 0.96264481387685552, 0.80000000000000004, 0.80000000000000004, ++ { 1.7090321420917429, 0.80000000000000004, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.1156611352656258, 0.80000000000000004, 0.80000000000000004, ++ { 2.4529058049405066, 0.80000000000000004, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.2730756225143889, 0.80000000000000004, 0.80000000000000004, ++ { 3.5368893360106948, 0.80000000000000004, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.4339837018309471, 0.80000000000000004, 0.80000000000000004, ++ { 4.9246422058196062, 0.80000000000000004, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler179 = 2.5000000000000020e-13; + + // Test data for k=0.80000000000000004, nu=0.90000000000000002. +-// max(|f - f_GSL|): 3.3306690738754696e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.4280684534289690e-16 ++// max(|f - f_Boost|): 4.4408920985006262e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16 ++// mean(f - f_Boost): 8.9928064994637676e-16 ++// variance(f - f_Boost): 1.5485199571025344e-30 ++// stddev(f - f_Boost): 1.2443954183066307e-15 + const testcase_ellint_3 + data180[10] = + { + { 0.0000000000000000, 0.80000000000000004, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17353251158533151, 0.80000000000000004, 0.90000000000000002, ++ { 0.17672267223433513, 0.80000000000000004, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34166214791545768, 0.80000000000000004, 0.90000000000000002, ++ { 0.36727835537196063, 0.80000000000000004, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.50144799535130569, 0.80000000000000004, 0.90000000000000002, ++ { 0.58934569363716649, 0.80000000000000004, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.65311976193814425, 0.80000000000000004, 0.90000000000000002, ++ { 0.87032723471138851, 0.80000000000000004, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.79924384892320866, 0.80000000000000004, 0.90000000000000002, ++ { 1.2588676111323349, 0.80000000000000004, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.94345762353365603, 0.80000000000000004, 0.90000000000000002, ++ { 1.8498731900660019, 0.80000000000000004, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.0892582069219161, 0.80000000000000004, 0.90000000000000002, ++ { 2.8368381299300420, 0.80000000000000004, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.2387000876610268, 0.80000000000000004, 0.90000000000000002, ++ { 4.5674844191654058, 0.80000000000000004, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002, ++ { 7.2263259298637115, 0.80000000000000004, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler180 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.0000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8945813740035884e-16 ++// Test data for k=0.90000000000000013, nu=0.0000000000000000. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.3381508715713360e-16 ++// mean(f - f_Boost): 5.8286708792820721e-17 ++// variance(f - f_Boost): 4.1942474344433133e-34 ++// stddev(f - f_Boost): 2.0479861900030756e-17 + const testcase_ellint_3 + data181[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.0000000000000000, ++ { 0.0000000000000000, 0.90000000000000013, 0.0000000000000000, + 0.0000000000000000 }, +- { 0.17525427376115024, 0.89999999999999991, 0.0000000000000000, ++ { 0.17525427376115027, 0.90000000000000013, 0.0000000000000000, + 0.17453292519943295 }, +- { 0.35492464591297446, 0.89999999999999991, 0.0000000000000000, ++ { 0.35492464591297446, 0.90000000000000013, 0.0000000000000000, + 0.34906585039886590 }, +- { 0.54388221416157112, 0.89999999999999991, 0.0000000000000000, ++ { 0.54388221416157123, 0.90000000000000013, 0.0000000000000000, + 0.52359877559829882 }, +- { 0.74797400423532490, 0.89999999999999991, 0.0000000000000000, ++ { 0.74797400423532512, 0.90000000000000013, 0.0000000000000000, + 0.69813170079773179 }, +- { 0.97463898451966458, 0.89999999999999991, 0.0000000000000000, ++ { 0.97463898451966446, 0.90000000000000013, 0.0000000000000000, + 0.87266462599716477 }, +- { 1.2334463254523440, 0.89999999999999991, 0.0000000000000000, ++ { 1.2334463254523440, 0.90000000000000013, 0.0000000000000000, + 1.0471975511965976 }, +- { 1.5355247765594910, 0.89999999999999991, 0.0000000000000000, ++ { 1.5355247765594915, 0.90000000000000013, 0.0000000000000000, + 1.2217304763960306 }, +- { 1.8882928567775117, 0.89999999999999991, 0.0000000000000000, ++ { 1.8882928567775128, 0.90000000000000013, 0.0000000000000000, + 1.3962634015954636 }, +- { 2.2805491384227703, 0.89999999999999991, 0.0000000000000000, ++ { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000, + 1.5707963267948966 }, + }; + const double toler181 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.10000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.1237990617685137e-16 ++// Test data for k=0.90000000000000013, nu=0.10000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16 ++// mean(f - f_Boost): 9.1593399531575410e-17 ++// variance(f - f_Boost): 1.0357223256482469e-33 ++// stddev(f - f_Boost): 3.2182640128619758e-17 + const testcase_ellint_3 + data182[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.10000000000000001, ++ { 0.0000000000000000, 0.90000000000000013, 0.10000000000000001, + 0.0000000000000000 }, +- { 0.17507714233254656, 0.89999999999999991, 0.10000000000000001, ++ { 0.17543204932716244, 0.90000000000000013, 0.10000000000000001, + 0.17453292519943295 }, +- { 0.35350932904326521, 0.89999999999999991, 0.10000000000000001, ++ { 0.35636022898551184, 0.90000000000000013, 0.10000000000000001, + 0.34906585039886590 }, +- { 0.53911129989870976, 0.89999999999999991, 0.10000000000000001, ++ { 0.54880278898382595, 0.90000000000000013, 0.10000000000000001, + 0.52359877559829882 }, +- { 0.73666644254508395, 0.89999999999999991, 0.10000000000000001, ++ { 0.75988834774529268, 0.90000000000000013, 0.10000000000000001, + 0.69813170079773179 }, +- { 0.95250736612100195, 0.89999999999999991, 0.10000000000000001, ++ { 0.99853303003568117, 0.90000000000000013, 0.10000000000000001, + 0.87266462599716477 }, +- { 1.1950199550905594, 0.89999999999999991, 0.10000000000000001, ++ { 1.2759958823999022, 0.90000000000000013, 0.10000000000000001, + 1.0471975511965976 }, +- { 1.4741687286340848, 0.89999999999999991, 0.10000000000000001, ++ { 1.6051187364639401, 0.90000000000000013, 0.10000000000000001, + 1.2217304763960306 }, +- { 1.7968678183506053, 0.89999999999999991, 0.10000000000000001, ++ { 1.9941406879519474, 0.90000000000000013, 0.10000000000000001, + 1.3962634015954636 }, +- { 2.1537868513875287, 0.89999999999999991, 0.10000000000000001, ++ { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001, + 1.5707963267948966 }, + }; + const double toler182 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.20000000000000001. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3446165733924066e-16 ++// Test data for k=0.90000000000000013, nu=0.20000000000000001. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.9533518431433547e-16 ++// mean(f - f_Boost): 1.0269562977782698e-16 ++// variance(f - f_Boost): 1.4388836606733082e-32 ++// stddev(f - f_Boost): 1.1995347684303728e-16 + const testcase_ellint_3 + data183[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.20000000000000001, ++ { 0.0000000000000000, 0.90000000000000013, 0.20000000000000001, + 0.0000000000000000 }, +- { 0.17490065089140927, 0.89999999999999991, 0.20000000000000001, ++ { 0.17561047321968409, 0.90000000000000013, 0.20000000000000001, + 0.17453292519943295 }, +- { 0.35211377590661436, 0.89999999999999991, 0.20000000000000001, ++ { 0.35781659944356109, 0.90000000000000013, 0.20000000000000001, + 0.34906585039886590 }, +- { 0.53448220334204100, 0.89999999999999991, 0.20000000000000001, ++ { 0.55388150905215283, 0.90000000000000013, 0.20000000000000001, + 0.52359877559829882 }, +- { 0.72591368943179579, 0.89999999999999991, 0.20000000000000001, ++ { 0.77246874123251441, 0.90000000000000013, 0.20000000000000001, + 0.69813170079773179 }, +- { 0.93192539780038763, 0.89999999999999991, 0.20000000000000001, ++ { 1.0244466254771925, 0.90000000000000013, 0.20000000000000001, + 0.87266462599716477 }, +- { 1.1600809679692683, 0.89999999999999991, 0.20000000000000001, ++ { 1.3234824077640801, 0.90000000000000013, 0.20000000000000001, + 1.0471975511965976 }, +- { 1.4195407225882508, 0.89999999999999991, 0.20000000000000001, ++ { 1.6849848968804240, 0.90000000000000013, 0.20000000000000001, + 1.2217304763960306 }, +- { 1.7168966476424521, 0.89999999999999991, 0.20000000000000001, ++ { 2.1185749045502278, 0.90000000000000013, 0.20000000000000001, + 1.3962634015954636 }, +- { 2.0443194576468895, 0.89999999999999991, 0.20000000000000001, ++ { 2.6076835743348417, 0.90000000000000013, 0.20000000000000001, + 1.5707963267948966 }, + }; + const double toler183 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.29999999999999999. +-// max(|f - f_GSL|): 1.1102230246251565e-15 +-// max(|f - f_GSL| / |f_GSL|): 5.6974600067013622e-16 ++// Test data for k=0.90000000000000013, nu=0.30000000000000004. ++// max(|f - f_Boost|): 6.6613381477509392e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 3.9712691025502371e-16 ++// mean(f - f_Boost): 6.9388939039072284e-17 ++// variance(f - f_Boost): 5.9442282234173945e-34 ++// stddev(f - f_Boost): 2.4380787976227090e-17 + const testcase_ellint_3 + data184[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.29999999999999999, ++ { 0.0000000000000000, 0.90000000000000013, 0.30000000000000004, + 0.0000000000000000 }, +- { 0.17472479532647531, 0.89999999999999991, 0.29999999999999999, ++ { 0.17578954966746221, 0.90000000000000013, 0.30000000000000004, + 0.17453292519943295 }, +- { 0.35073750187374114, 0.89999999999999991, 0.29999999999999999, ++ { 0.35929429810867447, 0.90000000000000013, 0.30000000000000004, + 0.34906585039886590 }, +- { 0.52998766129466957, 0.89999999999999991, 0.29999999999999999, ++ { 0.55912757154240822, 0.90000000000000013, 0.30000000000000004, + 0.52359877559829882 }, +- { 0.71566993548699553, 0.89999999999999991, 0.29999999999999999, ++ { 0.78578314722025389, 0.90000000000000013, 0.30000000000000004, + 0.69813170079773179 }, +- { 0.91271517762560195, 0.89999999999999991, 0.29999999999999999, ++ { 1.0526941001131365, 0.90000000000000013, 0.30000000000000004, + 0.87266462599716477 }, +- { 1.1281241199843370, 0.89999999999999991, 0.29999999999999999, ++ { 1.3769682234538601, 0.90000000000000013, 0.30000000000000004, + 1.0471975511965976 }, +- { 1.3704929576917448, 0.89999999999999991, 0.29999999999999999, ++ { 1.7779437432911240, 0.90000000000000013, 0.30000000000000004, + 1.2217304763960306 }, +- { 1.6461981511487711, 0.89999999999999991, 0.29999999999999999, ++ { 2.2676509341813635, 0.90000000000000013, 0.30000000000000004, + 1.3962634015954636 }, +- { 1.9486280260314426, 0.89999999999999991, 0.29999999999999999, ++ { 2.8256506968858517, 0.90000000000000013, 0.30000000000000004, + 1.5707963267948966 }, + }; + const double toler184 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.40000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.7646208744449464e-16 ++// Test data for k=0.90000000000000013, nu=0.40000000000000002. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16 ++// mean(f - f_Boost): 1.8041124150158794e-16 ++// variance(f - f_Boost): 8.5834655546147173e-33 ++// stddev(f - f_Boost): 9.2646994309662939e-17 + const testcase_ellint_3 + data185[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.40000000000000002, ++ { 0.0000000000000000, 0.90000000000000013, 0.40000000000000002, + 0.0000000000000000 }, +- { 0.17454957156468837, 0.89999999999999991, 0.40000000000000002, ++ { 0.17596928293938452, 0.90000000000000013, 0.40000000000000002, + 0.17453292519943295 }, +- { 0.34938003933330430, 0.89999999999999991, 0.40000000000000002, ++ { 0.36079388642472821, 0.90000000000000013, 0.40000000000000002, + 0.34906585039886590 }, +- { 0.52562093533067433, 0.89999999999999991, 0.40000000000000002, ++ { 0.56455096667115612, 0.90000000000000013, 0.40000000000000002, + 0.52359877559829882 }, +- { 0.70589461324915670, 0.89999999999999991, 0.40000000000000002, ++ { 0.79990996997869435, 0.90000000000000013, 0.40000000000000002, + 0.69813170079773179 }, +- { 0.89472658511942849, 0.89999999999999991, 0.40000000000000002, ++ { 1.0836647913872215, 0.90000000000000013, 0.40000000000000002, + 0.87266462599716477 }, +- { 1.0987419542323440, 0.89999999999999991, 0.40000000000000002, ++ { 1.4378726836091849, 0.90000000000000013, 0.40000000000000002, + 1.0471975511965976 }, +- { 1.3261349565496301, 0.89999999999999991, 0.40000000000000002, ++ { 1.8880446720682853, 0.90000000000000013, 0.40000000000000002, + 1.2217304763960306 }, +- { 1.5831293909853763, 0.89999999999999991, 0.40000000000000002, ++ { 2.4505848932025232, 0.90000000000000013, 0.40000000000000002, + 1.3962634015954636 }, +- { 1.8641114227238351, 0.89999999999999991, 0.40000000000000002, ++ { 3.1000689868578624, 0.90000000000000013, 0.40000000000000002, + 1.5707963267948966 }, + }; + const double toler185 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.50000000000000000. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.9652155758573562e-16 ++// Test data for k=0.90000000000000013, nu=0.50000000000000000. ++// max(|f - f_Boost|): 8.8817841970012523e-16 at index 7 ++// max(|f - f_Boost| / |f_Boost|): 4.3939646155354115e-16 ++// mean(f - f_Boost): 1.5820678100908481e-16 ++// variance(f - f_Boost): 1.0089970755557622e-32 ++// stddev(f - f_Boost): 1.0044884646205561e-16 + const testcase_ellint_3 + data186[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.50000000000000000, ++ { 0.0000000000000000, 0.90000000000000013, 0.50000000000000000, + 0.0000000000000000 }, +- { 0.17437497557073334, 0.89999999999999991, 0.50000000000000000, ++ { 0.17614967734498183, 0.90000000000000013, 0.50000000000000000, + 0.17453292519943295 }, +- { 0.34804093691586013, 0.89999999999999991, 0.50000000000000000, ++ { 0.36231594750319435, 0.90000000000000013, 0.50000000000000000, + 0.34906585039886590 }, +- { 0.52137576320372891, 0.89999999999999991, 0.50000000000000000, ++ { 0.57016256984349567, 0.90000000000000013, 0.50000000000000000, + 0.52359877559829882 }, +- { 0.69655163996912262, 0.89999999999999991, 0.50000000000000000, ++ { 0.81494025918293422, 0.90000000000000013, 0.50000000000000000, + 0.69813170079773179 }, +- { 0.87783188683054236, 0.89999999999999991, 0.50000000000000000, ++ { 1.1178482279283477, 0.90000000000000013, 0.50000000000000000, + 0.87266462599716477 }, +- { 1.0716015959755185, 0.89999999999999991, 0.50000000000000000, ++ { 1.5081455873012106, 0.90000000000000013, 0.50000000000000000, + 1.0471975511965976 }, +- { 1.2857636916026749, 0.89999999999999991, 0.50000000000000000, ++ { 2.0213599730863998, 0.90000000000000013, 0.50000000000000000, + 1.2217304763960306 }, +- { 1.5264263913252358, 0.89999999999999991, 0.50000000000000000, ++ { 2.6822467012926832, 0.90000000000000013, 0.50000000000000000, + 1.3962634015954636 }, +- { 1.7888013241937863, 0.89999999999999991, 0.50000000000000000, ++ { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000, + 1.5707963267948966 }, + }; + const double toler186 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.59999999999999998. +-// max(|f - f_GSL|): 6.6613381477509392e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.8702201113622378e-16 ++// Test data for k=0.90000000000000013, nu=0.60000000000000009. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 4.4914274070443813e-16 ++// mean(f - f_Boost): 3.4694469519536142e-16 ++// variance(f - f_Boost): 2.5224926888894056e-31 ++// stddev(f - f_Boost): 5.0224423231027804e-16 + const testcase_ellint_3 + data187[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.59999999999999998, ++ { 0.0000000000000000, 0.90000000000000013, 0.60000000000000009, + 0.0000000000000000 }, +- { 0.17420100334657812, 0.89999999999999991, 0.59999999999999998, ++ { 0.17633073723493825, 0.90000000000000013, 0.60000000000000009, + 0.17453292519943295 }, +- { 0.34671975876122157, 0.89999999999999991, 0.59999999999999998, ++ { 0.36386108723492810, 0.90000000000000013, 0.60000000000000009, + 0.34906585039886590 }, +- { 0.51724631570707946, 0.89999999999999991, 0.59999999999999998, ++ { 0.57597424744716241, 0.90000000000000013, 0.60000000000000009, + 0.52359877559829882 }, +- { 0.68760879113743023, 0.89999999999999991, 0.59999999999999998, ++ { 0.83098051948501150, 0.90000000000000013, 0.60000000000000009, + 0.69813170079773179 }, +- { 0.86192157779698364, 0.89999999999999991, 0.59999999999999998, ++ { 1.1558706545698916, 0.90000000000000013, 0.60000000000000009, + 0.87266462599716477 }, +- { 1.0464279696166354, 0.89999999999999991, 0.59999999999999998, ++ { 1.5905576379415669, 0.90000000000000013, 0.60000000000000009, + 1.0471975511965976 }, +- { 1.2488156247094004, 0.89999999999999991, 0.59999999999999998, ++ { 2.1875186010215084, 0.90000000000000013, 0.60000000000000009, + 1.2217304763960306 }, +- { 1.4750988777188470, 0.89999999999999991, 0.59999999999999998, ++ { 2.9885767771316853, 0.90000000000000013, 0.60000000000000009, + 1.3962634015954636 }, +- { 1.7211781128919525, 0.89999999999999991, 0.59999999999999998, ++ { 3.9549939883570238, 0.90000000000000013, 0.60000000000000009, + 1.5707963267948966 }, + }; + const double toler187 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.69999999999999996. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 4.3410843563834748e-16 ++// Test data for k=0.90000000000000013, nu=0.70000000000000007. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 9 ++// max(|f - f_Boost| / |f_Boost|): 5.5442489886293633e-16 ++// mean(f - f_Boost): 4.3576253716537392e-16 ++// variance(f - f_Boost): 2.2187568928205130e-31 ++// stddev(f - f_Boost): 4.7103682370070737e-16 + const testcase_ellint_3 + data188[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.69999999999999996, ++ { 0.0000000000000000, 0.90000000000000013, 0.70000000000000007, + 0.0000000000000000 }, +- { 0.17402765093102207, 0.89999999999999991, 0.69999999999999996, ++ { 0.17651246700160939, 0.90000000000000013, 0.70000000000000007, + 0.17453292519943295 }, +- { 0.34541608382635131, 0.89999999999999991, 0.69999999999999996, ++ { 0.36542993547358982, 0.90000000000000013, 0.70000000000000007, + 0.34906585039886590 }, +- { 0.51322715827061682, 0.89999999999999991, 0.69999999999999996, ++ { 0.58199897877674867, 0.90000000000000013, 0.70000000000000007, + 0.52359877559829882 }, +- { 0.67903717872440272, 0.89999999999999991, 0.69999999999999996, ++ { 0.84815633587352857, 0.90000000000000013, 0.70000000000000007, + 0.69813170079773179 }, +- { 0.84690113601682671, 0.89999999999999991, 0.69999999999999996, ++ { 1.1985495623872375, 0.90000000000000013, 0.70000000000000007, + 0.87266462599716477 }, +- { 1.0229914311548418, 0.89999999999999991, 0.69999999999999996, ++ { 1.6892158134027691, 0.90000000000000013, 0.70000000000000007, + 1.0471975511965976 }, +- { 1.2148329639709381, 0.89999999999999991, 0.69999999999999996, ++ { 2.4029722191094236, 0.90000000000000013, 0.70000000000000007, + 1.2217304763960306 }, +- { 1.4283586501307799, 0.89999999999999991, 0.69999999999999996, ++ { 3.4201084941340061, 0.90000000000000013, 0.70000000000000007, + 1.3962634015954636 }, +- { 1.6600480747670940, 0.89999999999999991, 0.69999999999999996, ++ { 4.6985482312992444, 0.90000000000000013, 0.70000000000000007, + 1.5707963267948966 }, + }; + const double toler188 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.80000000000000004. +-// max(|f - f_GSL|): 4.4408920985006262e-16 +-// max(|f - f_GSL| / |f_GSL|): 3.3100928058463168e-16 ++// Test data for k=0.90000000000000013, nu=0.80000000000000004. ++// max(|f - f_Boost|): 1.7763568394002505e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9362432595976420e-16 ++// mean(f - f_Boost): 3.0531133177191805e-16 ++// variance(f - f_Boost): 1.1508025840536076e-32 ++// stddev(f - f_Boost): 1.0727546709539920e-16 + const testcase_ellint_3 + data189[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.80000000000000004, ++ { 0.0000000000000000, 0.90000000000000013, 0.80000000000000004, + 0.0000000000000000 }, +- { 0.17385491439925146, 0.89999999999999991, 0.80000000000000004, ++ { 0.17669487107954862, 0.90000000000000013, 0.80000000000000004, + 0.17453292519943295 }, +- { 0.34412950523113928, 0.89999999999999991, 0.80000000000000004, ++ { 0.36702314729628421, 0.90000000000000013, 0.80000000000000004, + 0.34906585039886590 }, +- { 0.50931321668729590, 0.89999999999999991, 0.80000000000000004, ++ { 0.58825099711365492, 0.90000000000000013, 0.80000000000000004, + 0.52359877559829882 }, +- { 0.67081081392296327, 0.89999999999999991, 0.80000000000000004, ++ { 0.86661711422209031, 0.90000000000000013, 0.80000000000000004, + 0.69813170079773179 }, +- { 0.83268846097293259, 0.89999999999999991, 0.80000000000000004, ++ { 1.2469779109884802, 0.90000000000000013, 0.80000000000000004, + 0.87266462599716477 }, +- { 1.0010985015814027, 0.89999999999999991, 0.80000000000000004, ++ { 1.8105469760531578, 0.90000000000000013, 0.80000000000000004, + 1.0471975511965976 }, +- { 1.1834394045489678, 0.89999999999999991, 0.80000000000000004, ++ { 2.6989505165893752, 0.90000000000000013, 0.80000000000000004, + 1.2217304763960306 }, +- { 1.3855695891683182, 0.89999999999999991, 0.80000000000000004, ++ { 4.0935213267757433, 0.90000000000000013, 0.80000000000000004, + 1.3962634015954636 }, +- { 1.6044591960982202, 0.89999999999999991, 0.80000000000000004, ++ { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004, + 1.5707963267948966 }, + }; + const double toler189 = 2.5000000000000020e-13; + +-// Test data for k=0.89999999999999991, nu=0.90000000000000002. +-// max(|f - f_GSL|): 8.8817841970012523e-16 +-// max(|f - f_GSL| / |f_GSL|): 5.7167507456081732e-16 ++// Test data for k=0.90000000000000013, nu=0.90000000000000002. ++// max(|f - f_Boost|): 2.6645352591003757e-15 at index 8 ++// max(|f - f_Boost| / |f_Boost|): 4.9577148062669782e-16 ++// mean(f - f_Boost): 5.9119376061289588e-16 ++// variance(f - f_Boost): 1.7340883003959522e-31 ++// stddev(f - f_Boost): 4.1642385863395872e-16 + const testcase_ellint_3 + data190[10] = + { +- { 0.0000000000000000, 0.89999999999999991, 0.90000000000000002, ++ { 0.0000000000000000, 0.90000000000000013, 0.90000000000000002, + 0.0000000000000000 }, +- { 0.17368278986240135, 0.89999999999999991, 0.90000000000000002, ++ { 0.17687795394604169, 0.90000000000000013, 0.90000000000000002, + 0.17453292519943295 }, +- { 0.34285962963961397, 0.89999999999999991, 0.90000000000000002, ++ { 0.36864140434751286, 0.90000000000000013, 0.90000000000000002, + 0.34906585039886590 }, +- { 0.50549974644993312, 0.89999999999999991, 0.90000000000000002, ++ { 0.59474595366817051, 0.90000000000000013, 0.90000000000000002, + 0.52359877559829882 }, +- { 0.66290623857720876, 0.89999999999999991, 0.90000000000000002, ++ { 0.88654237226056665, 0.90000000000000013, 0.90000000000000002, + 0.69813170079773179 }, +- { 0.81921183128847175, 0.89999999999999991, 0.90000000000000002, ++ { 1.3026595810616726, 0.90000000000000013, 0.90000000000000002, + 0.87266462599716477 }, +- { 0.98058481956066390, 0.89999999999999991, 0.90000000000000002, ++ { 1.9653635459278080, 0.90000000000000013, 0.90000000000000002, + 1.0471975511965976 }, +- { 1.1543223520473569, 0.89999999999999991, 0.90000000000000002, ++ { 3.1451407527189468, 0.90000000000000013, 0.90000000000000002, + 1.2217304763960306 }, +- { 1.3462119782292934, 0.89999999999999991, 0.90000000000000002, ++ { 5.3745230680316132, 0.90000000000000013, 0.90000000000000002, + 1.3962634015954636 }, +- { 1.5536420236310948, 0.89999999999999991, 0.90000000000000002, ++ { 8.9942562031858717, 0.90000000000000013, 0.90000000000000002, + 1.5707963267948966 }, + }; + const double toler190 = 2.5000000000000020e-13; + +-template ++template + void +- test(const testcase_ellint_3 (&data)[Num], Tp toler) ++ test(const testcase_ellint_3 (&data)[Num], Ret toler) + { +- const Tp eps = std::numeric_limits::epsilon(); +- Tp max_abs_diff = -Tp(1); +- Tp max_abs_frac = -Tp(1); ++ bool test __attribute__((unused)) = true; ++ const Ret eps = std::numeric_limits::epsilon(); ++ Ret max_abs_diff = -Ret(1); ++ Ret max_abs_frac = -Ret(1); + unsigned int num_datum = Num; + for (unsigned int i = 0; i < num_datum; ++i) + { +- const Tp f = std::ellint_3(data[i].k, data[i].nu, ++ const Ret f = std::ellint_3(data[i].k, data[i].nu, + data[i].phi); +- const Tp f0 = data[i].f0; +- const Tp diff = f - f0; ++ const Ret f0 = data[i].f0; ++ const Ret diff = f - f0; + if (std::abs(diff) > max_abs_diff) + max_abs_diff = std::abs(diff); +- if (std::abs(f0) > Tp(10) * eps +- && std::abs(f) > Tp(10) * eps) ++ if (std::abs(f0) > Ret(10) * eps ++ && std::abs(f) > Ret(10) * eps) + { +- const Tp frac = diff / f0; ++ const Ret frac = diff / f0; + if (std::abs(frac) > max_abs_frac) + max_abs_frac = std::abs(frac); + } +Index: libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc =================================================================== ---- a/src/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc (.../tags/gcc_7_3_0_release) -+++ b/src/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc (.../branches/gcc-7-branch) -@@ -0,0 +1,42 @@ +--- a/src/libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,48 @@ +// Copyright (C) 2018 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free @@ -1078,114 +28242,34 @@ +// { dg-options "-std=gnu++17" } +// { dg-do run { target c++1z } } + -+#include -+#include ++#include +#include + +void +test01() +{ -+#ifdef _GLIBCXX_HAVE_ALIGNED_ALLOC -+ void* p = std::aligned_alloc(256, 1); -+ if (p) -+ { -+ VERIFY( (reinterpret_cast(p) % 256) == 0 ); -+ std::free(p); -+ } -+#endif ++ // PR libstdc++/82966 ++ std::set::node_type n1, n2; ++ n1.swap(n2); ++ VERIFY( n1.empty() ); ++ VERIFY( n2.empty() ); +} + -+int -+main() ++void ++test02() +{ -+ test01(); ++ std::set s{1, 2}; ++ std::set::node_type n1 = s.extract(1), n2; ++ swap(n1, n2); ++ VERIFY( n1.empty() ); ++ VERIFY( !n2.empty() ); +} -Index: libstdc++-v3/testsuite/30_threads/thread/84532.cc -=================================================================== ---- a/src/libstdc++-v3/testsuite/30_threads/thread/84532.cc (.../tags/gcc_7_3_0_release) -+++ b/src/libstdc++-v3/testsuite/30_threads/thread/84532.cc (.../branches/gcc-7-branch) -@@ -0,0 +1,38 @@ -+// { dg-do compile { target c++11 } } -+// { dg-require-cstdint "" } -+// { dg-require-gthreads "" } -+ -+// Copyright (C) 2018 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 3, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING3. If not see -+// . -+ -+#include -+ -+// PR libstdc++/84532 -+ -+struct F -+{ -+ template -+ void operator()(T, U, int&) -+ { -+ using std::is_same; -+ using std::reference_wrapper; -+ static_assert(is_same>::value, ""); -+ static_assert(is_same>::value, ""); -+ } -+}; -+int i = 0; -+std::thread t(F{}, std::ref(i), std::cref(i), std::ref(i)); -Index: libstdc++-v3/testsuite/30_threads/async/84532.cc -=================================================================== ---- a/src/libstdc++-v3/testsuite/30_threads/async/84532.cc (.../tags/gcc_7_3_0_release) -+++ b/src/libstdc++-v3/testsuite/30_threads/async/84532.cc (.../branches/gcc-7-branch) -@@ -0,0 +1,38 @@ -+// { dg-do compile { target c++11 } } -+// { dg-require-cstdint "" } -+// { dg-require-gthreads "" } -+ -+// Copyright (C) 2018 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 3, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING3. If not see -+// . -+ -+#include -+ -+// PR libstdc++/84532 + -+struct F ++int main() +{ -+ template -+ void operator()(T, U, int&) -+ { -+ using std::is_same; -+ using std::reference_wrapper; -+ static_assert(is_same>::value, ""); -+ static_assert(is_same>::value, ""); -+ } -+}; -+int i = 0; -+auto fut = std::async(F{}, std::ref(i), std::cref(i), std::ref(i)); ++ test01(); ++ test02(); ++} Index: libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc =================================================================== --- a/src/libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc (.../tags/gcc_7_3_0_release) @@ -1654,6 +28738,68 @@ // Copyright (C) 2016-2017 Free Software Foundation, Inc. // +Index: libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc (.../tags/gcc_7_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc (.../branches/gcc-7-branch) +@@ -0,0 +1,57 @@ ++// Copyright (C) 2017-2018 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-DUSE_FILESYSTEM_TS -lstdc++fs" } ++// { dg-do run { target c++11 } } ++// { dg-require-filesystem-ts "" } ++ ++// 30.10.14.3 Permissions [fs.op.space] ++ ++#include ++#include ++#include ++ ++namespace fs = std::experimental::filesystem; ++ ++void ++test01() ++{ ++ fs::space_info s = fs::space("/"); ++ std::error_code ec = make_error_code(std::errc::invalid_argument); ++ s = fs::space("/", ec); ++ VERIFY( !ec ); ++ ++ s = fs::space(__gnu_test::nonexistent_path(), ec); ++ VERIFY( ec ); ++ VERIFY( s.capacity == static_cast(-1) ); ++ VERIFY( s.free == static_cast(-1) ); ++ VERIFY( s.available == static_cast(-1) ); ++} ++ ++void ++test02() ++{ ++ fs::space_info s = fs::space("."); ++ VERIFY( s.capacity >= s.free ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} Index: libstdc++-v3/testsuite/20_util/duration/literals/84671.cc =================================================================== --- a/src/libstdc++-v3/testsuite/20_util/duration/literals/84671.cc (.../tags/gcc_7_3_0_release) @@ -2213,6 +29359,24 @@ continue; if (BB_CLUSTER (bb1) != NULL && BB_CLUSTER (bb1) == BB_CLUSTER (bb2)) +Index: gcc/tree-ssa-loop-niter.c +=================================================================== +--- a/src/gcc/tree-ssa-loop-niter.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-ssa-loop-niter.c (.../branches/gcc-7-branch) +@@ -2320,11 +2320,11 @@ + + tree iv0_niters = NULL_TREE; + if (!simple_iv_with_niters (loop, loop_containing_stmt (stmt), +- op0, &iv0, &iv0_niters, false)) ++ op0, &iv0, safe ? &iv0_niters : NULL, false)) + return false; + tree iv1_niters = NULL_TREE; + if (!simple_iv_with_niters (loop, loop_containing_stmt (stmt), +- op1, &iv1, &iv1_niters, false)) ++ op1, &iv1, safe ? &iv1_niters : NULL, false)) + return false; + /* Give up on complicated case. */ + if (iv0_niters && iv1_niters) Index: gcc/c-family/c-cppbuiltin.c =================================================================== --- a/src/gcc/c-family/c-cppbuiltin.c (.../tags/gcc_7_3_0_release) @@ -2251,11 +29415,40 @@ && flag_dump_macros == 0 && !cpp_get_options (parse_in)->traditional) { +Index: gcc/c-family/c-gimplify.c +=================================================================== +--- a/src/gcc/c-family/c-gimplify.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/c-family/c-gimplify.c (.../branches/gcc-7-branch) +@@ -244,7 +244,9 @@ + unsigned_type_node) + && !types_compatible_p (TYPE_MAIN_VARIANT (TREE_TYPE (*op1_p)), + integer_type_node)) +- *op1_p = convert (unsigned_type_node, *op1_p); ++ /* Make sure to unshare the result, tree sharing is invalid ++ during gimplification. */ ++ *op1_p = unshare_expr (convert (unsigned_type_node, *op1_p)); + break; + } + Index: gcc/c-family/ChangeLog =================================================================== --- a/src/gcc/c-family/ChangeLog (.../tags/gcc_7_3_0_release) +++ b/src/gcc/c-family/ChangeLog (.../branches/gcc-7-branch) -@@ -1,3 +1,15 @@ +@@ -1,3 +1,29 @@ ++2018-04-26 Richard Biener ++ ++ Backport from mainline ++ 2018-03-16 Richard Biener ++ ++ PR c/84873 ++ * c-gimplify.c (c_gimplify_expr): Revert previous change. Instead ++ unshare the possibly folded expression. ++ ++ 2018-03-15 Richard Biener ++ ++ PR c/84873 ++ * c-gimplify.c (c_gimplify_expr): Do not fold expressions. ++ +2018-03-03 Jakub Jelinek + + Backported from mainline @@ -2320,7 +29513,7 @@ +++ b/src/gcc/DATESTAMP (.../branches/gcc-7-branch) @@ -1 +1 @@ -20180125 -+20180419 ++20180531 Index: gcc/lra.c =================================================================== --- a/src/gcc/lra.c (.../tags/gcc_7_3_0_release) @@ -2390,6 +29583,17 @@ if (reason && dump_file && !node->alias && !node->thunk.thunk_p) fprintf (dump_file, "Function %s/%i is not versionable, reason: %s.\n", node->name (), node->order, reason); +@@ -4009,7 +4027,9 @@ + if (aglat->offset - offset == item->offset) + { + gcc_checking_assert (item->value); +- if (values_equal_for_ipcp_p (item->value, aglat->values->value)) ++ if (aglat->is_single_const () ++ && values_equal_for_ipcp_p (item->value, ++ aglat->values->value)) + found = true; + break; + } Index: gcc/ddg.c =================================================================== --- a/src/gcc/ddg.c (.../tags/gcc_7_3_0_release) @@ -2870,11 +30074,179 @@ update_block (pat->insn (1), insn); delete_from_delay_slot (pat->insn (1)); next = prev_active_insn (next); +Index: gcc/tree-ssa-sccvn.c +=================================================================== +--- a/src/gcc/tree-ssa-sccvn.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-ssa-sccvn.c (.../branches/gcc-7-branch) +@@ -1245,7 +1245,9 @@ + return true; + } + if (!addr_base +- || TREE_CODE (addr_base) != MEM_REF) ++ || TREE_CODE (addr_base) != MEM_REF ++ || (TREE_CODE (TREE_OPERAND (addr_base, 0)) == SSA_NAME ++ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (TREE_OPERAND (addr_base, 0)))) + return false; + + off += addr_offset; +@@ -1258,6 +1260,7 @@ + ptr = gimple_assign_rhs1 (def_stmt); + ptroff = gimple_assign_rhs2 (def_stmt); + if (TREE_CODE (ptr) != SSA_NAME ++ || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (ptr) + || TREE_CODE (ptroff) != INTEGER_CST) + return false; + Index: gcc/ChangeLog =================================================================== --- a/src/gcc/ChangeLog (.../tags/gcc_7_3_0_release) +++ b/src/gcc/ChangeLog (.../branches/gcc-7-branch) -@@ -1,3 +1,1132 @@ +@@ -1,3 +1,1277 @@ ++2018-05-24 Uros Bizjak ++ ++ * config/i386/sse.md (cvtusi264): ++ Add {q} suffix to insn mnemonic. ++ ++2018-05-24 Uros Bizjak ++ ++ PR target/85903 ++ * config/i386/sse.md (movdi_to_sse): Do not generate pseudo ++ when memory input operand is handled. ++ ++2018-05-21 Pat Haugen ++ ++ Backport from mainline ++ 2018-05-17 Pat Haugen ++ Segher Boessenkool ++ ++ PR target/85698 ++ * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check ++ dest operand. ++ ++2018-05-17 Martin Jambor ++ ++ Backport from mainline ++ 2018-05-11 Martin Jambor ++ ++ PR ipa/85655 ++ * ipa-cp.c (intersect_with_plats): Check that the lattice contains ++ single const. ++ ++2018-05-01 Tom de Vries ++ ++ backport from trunk: ++ 2018-04-16 Cesar Philippidis ++ Tom de Vries ++ ++ PR middle-end/84955 ++ * omp-expand.c (expand_oacc_for): Add dummy false branch for ++ tiled basic blocks without omp continue statements. ++ ++2018-04-26 Richard Biener ++ ++ Backport from mainline ++ 2018-04-09 Richard Biener ++ ++ PR tree-optimization/85284 ++ * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions): ++ Only use the niter constraining form of simple_iv when the exit ++ is always executed. ++ ++ 2018-04-06 Richard Biener ++ ++ PR middle-end/85244 ++ * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref ++ after seeing a component reference with an adjacent field. Treat ++ refs to arrays at struct end of external decls similar to ++ refs to unconstrained commons. ++ ++ 2018-04-04 Richard Biener ++ ++ PR tree-optimization/85168 ++ * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid ++ propagating abnormals. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-17 Martin Liska ++ ++ PR lto/85405 ++ * ipa-devirt.c (odr_types_equivalent_p): Remove trailing ++ in message, remote space in between '_G' and '('. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-17 Jan Hubicka ++ ++ PR lto/85405 ++ * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-28 Jakub Jelinek ++ Martin Liska ++ ++ PR sanitizer/85081 ++ * gimplify.c (asan_poison_variable): Don't do the check for ++ gimplify_omp_ctxp here. ++ (gimplify_decl_expr): Do it here. ++ (gimplify_target_expr): Likewise. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-21 Martin Liska ++ ++ PR ipa/84963 ++ * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove ++ not intended return statement. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-13 Martin Liska ++ ++ PR ipa/84658. ++ * (sem_item_optimizer::sem_item_optimizer): Initialize new ++ vector. ++ (sem_item_optimizer::~sem_item_optimizer): Release it. ++ (sem_item_optimizer::merge_classes): Register variable aliases. ++ (sem_item_optimizer::fixup_pt_set): New function. ++ (sem_item_optimizer::fixup_points_to_sets): Likewise. ++ * ipa-icf.h: Declare new variables and functions. ++ ++2018-04-23 Aaron Sawdey ++ ++ Backport from mainline ++ 2018-04-16 Aaron Sawdey ++ ++ PR target/83660 ++ * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark ++ vec_extract expression as having side effects to make sure it gets ++ a cleanup point. ++ ++2018-04-23 Eric Botcazou ++ ++ PR middle-end/85496 ++ * expr.c (store_field): In the bitfield case, if the value comes from ++ a function call and is returned in registers by means of a PARALLEL, ++ do not change the mode of the temporary unless BLKmode and VOIDmode. ++ ++2018-04-20 Peter Bergner ++ ++ Backport from mainline ++ 2018-03-09 Peter Bergner ++ ++ PR target/83969 ++ * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype. ++ Add strict argument and use it. ++ (rs6000_split_multireg_move): Update for new strict argument. ++ (mem_operand_gpr): Disallow all non-offsettable addresses. ++ * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint. ++ +2018-04-18 Thomas Preud'homme + + Backport from mainline @@ -4253,6 +31625,44 @@ -/* { dg-final { scan-assembler-times "\[ \t\]xsmulqp" 2 } } */ +/* { dg-final { scan-assembler-times {\mmulld\M} 4 } } */ +/* { dg-final { scan-assembler-times {\mmulhdu\M} 2 } } */ +Index: gcc/testsuite/gcc.target/powerpc/pr83969.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr83969.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr83969.c (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=G5" } } */ ++/* { dg-options "-O1 -mcpu=G5 -fno-split-wide-types -ftree-loop-vectorize" } */ ++ ++long long int ++n7 (int po, long long int r4) ++{ ++ while (po < 1) ++ { ++ r4 |= 1; ++ ++po; ++ } ++ return r4; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr83660.C +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr83660.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr83660.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++/* PR target/83660 */ ++/* { dg-do compile } */ ++/* { dg-options "-mcpu=power7" } */ ++ ++#include ++ ++typedef __vector unsigned int uvec32_t __attribute__((__aligned__(16))); ++ ++unsigned get_word(uvec32_t v) ++{ ++ return ({const unsigned _B1 = 32; ++ vec_extract((uvec32_t)v, 2);}); ++} ++ Index: gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c =================================================================== --- a/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c (.../tags/gcc_7_3_0_release) @@ -4322,6 +31732,90 @@ /* Test for deliberate misprediction of indirect calls. */ +Index: gcc/testsuite/gcc.target/powerpc/pr85698.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr85698.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr85698.c (.../branches/gcc-7-branch) +@@ -0,0 +1,79 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ ++/* { dg-options "-O3 -mcpu=power7" } */ ++ ++/* PR85698: Incorrect code generated on LE due to use of stxvw4x. */ ++ ++typedef unsigned char uint8_t; ++typedef short int16_t; ++extern void abort (void); ++extern int memcmp(const void *, const void *, __SIZE_TYPE__); ++ ++uint8_t expected[128] = ++{14, 0, 4, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, ++ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 28, 35, 33, 35, 36, 37, 38, 39, 40, ++ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, ++ 60, 61, 62, 63, 66, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, ++ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 96, ++ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, ++ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127}; ++ ++static uint8_t x264_clip_uint8( int x ) ++{ ++ return x&(~255) ? (-x)>>31 : x; ++} ++void add4x4_idct( uint8_t *p_dst, int16_t dct[16]) ++{ ++ int16_t d[16]; ++ int16_t tmp[16]; ++ int i, y, x; ++ for( i = 0; i < 4; i++ ) ++ { ++ int s02 = dct[0*4+i] + dct[2*4+i]; ++ int d02 = dct[0*4+i] - dct[2*4+i]; ++ int s13 = dct[1*4+i] + (dct[3*4+i]>>1); ++ int d13 = (dct[1*4+i]>>1) - dct[3*4+i]; ++ tmp[i*4+0] = s02 + s13; ++ tmp[i*4+1] = d02 + d13; ++ tmp[i*4+2] = d02 - d13; ++ tmp[i*4+3] = s02 - s13; ++ } ++ for( i = 0; i < 4; i++ ) ++ { ++ int s02 = tmp[0*4+i] + tmp[2*4+i]; ++ int d02 = tmp[0*4+i] - tmp[2*4+i]; ++ int s13 = tmp[1*4+i] + (tmp[3*4+i]>>1); ++ int d13 = (tmp[1*4+i]>>1) - tmp[3*4+i]; ++ d[0*4+i] = ( s02 + s13 + 32 ) >> 6; ++ d[1*4+i] = ( d02 + d13 + 32 ) >> 6; ++ d[2*4+i] = ( d02 - d13 + 32 ) >> 6; ++ d[3*4+i] = ( s02 - s13 + 32 ) >> 6; ++ } ++ for( y = 0; y < 4; y++ ) ++ { ++ for( x = 0; x < 4; x++ ) ++ p_dst[x] = x264_clip_uint8( p_dst[x] + d[y*4+x] ); ++ p_dst += 32; ++ } ++} ++ ++int main() ++{ ++ uint8_t dst[128]; ++ int16_t dct[16]; ++ int i; ++ ++ for (i = 0; i < 16; i++) ++ dct[i] = i*10 + i; ++ for (i = 0; i < 128; i++) ++ dst[i] = i; ++ ++ add4x4_idct(dst, dct); ++ ++ if (memcmp (dst, expected, 128)) ++ abort(); ++ ++ return 0; ++} ++ Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c =================================================================== --- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c (.../tags/gcc_7_3_0_release) @@ -6898,6 +34392,20 @@ /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c (.../branches/gcc-7-branch) +@@ -1,7 +1,7 @@ + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-options "-mavx512f -O2" } */ +-/* { dg-final { scan-assembler-times "vcvtusi2sd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +-/* { dg-final { scan-assembler-times "vcvtusi2sd\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvtusi2sdq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvtusi2sdq\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ + + #include + Index: gcc/testsuite/gcc.target/i386/pr85193.c =================================================================== --- a/src/gcc/testsuite/gcc.target/i386/pr85193.c (.../tags/gcc_7_3_0_release) @@ -7488,6 +34996,20 @@ MASK_ZERO (i_d) (res_ref, mask, SIZE); if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) +Index: gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c (.../branches/gcc-7-branch) +@@ -1,7 +1,7 @@ + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-options "-mavx512f -O2" } */ +-/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +-/* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvtusi2ssq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvtusi2ssq\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ + + #include + Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c =================================================================== --- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c (.../tags/gcc_7_3_0_release) @@ -7913,7 +35435,7 @@ set et_vect_load_lanes 0 - if { ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok]) + # We don't support load_lanes correctly on big-endian arm. -+ if { ([istarget arm-*-*] && [check_effective_target_arm_neon_ok]) ++ if { ([check_effective_target_arm_little_endian] && [check_effective_target_arm_neon_ok]) || [istarget aarch64*-*-*] } { set et_vect_load_lanes 1 } @@ -7994,6 +35516,32 @@ + integer, dimension(get_i()) :: x ! { dg-error "array with nonconstant bounds" } + print *, size (x) ! { dg-error "has no IMPLICIT type" } end +Index: gcc/testsuite/gfortran.dg/pr85521_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85521_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85521_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR fortran/85521 ++program p ++ character(3) :: c = 'abc' ++ character(3) :: z(1) ++ z = [ c(:-1) ] ++ print *, z ++end +Index: gcc/testsuite/gfortran.dg/pr85543.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85543.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85543.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR fortran/85543 ++program p ++ procedure(), pointer :: z ++contains ++ real(z()) function f() ! { dg-error "in initialization expression at" } ++ end ++end Index: gcc/testsuite/gfortran.dg/pr84117.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/pr84117.f90 (.../tags/gcc_7_3_0_release) @@ -8043,6 +35591,47 @@ + do j = 1, 2 + end do +end +Index: gcc/testsuite/gfortran.dg/pr85687.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85687.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85687.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR fortran/85687 ++! Code original contributed by Gerhard Steinmetz gscfq at t-oline dot de ++program p ++ type t ++ end type ++ print *, rank(t) ! { dg-error "must be a data object" } ++end +Index: gcc/testsuite/gfortran.dg/pr85779_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85779_3.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85779_3.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! PR fortran/85779 ++class(t) function f() ! { dg-error "must be dummy, allocatable or pointer" } ++ type f ! { dg-error "already has a basic type" } ++ end type ! { dg-error "END FUNCTION statement" } ++end ++ +Index: gcc/testsuite/gfortran.dg/pr83149_a.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr83149_a.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr83149_a.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++! Compiled with pr83149_b.f90 ++! ++module mod ++ character(8) string ++contains ++ function get_string() result(s) ++ character(len_trim(string)) s ++ s = string ++ end function ++end module ++ Index: gcc/testsuite/gfortran.dg/coarray_45.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/coarray_45.f90 (.../tags/gcc_7_3_0_release) @@ -8072,6 +35661,34 @@ + if (associated (x%z, ptr%z)) deallocate (x%z) + end +end +Index: gcc/testsuite/gfortran.dg/goacc/pr84963.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/goacc/pr84963.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/goacc/pr84963.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! PR ipa/84963 ++! { dg-options "-O2" } ++ ++program p ++ print *, sin([1.0, 2.0]) ++ print *, cos([1.0, 2.0]) ++end +Index: gcc/testsuite/gfortran.dg/associate_33.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/associate_33.f03 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/associate_33.f03 (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++! { dg-do run } ++! ++! Test the fix for PR83898.f90 ++! ++! Contributed by G Steinmetz ++! ++program p ++ associate (x => ['1','2']) ++ if (any (x .ne. ['1','2'])) call abort ++ end associate ++end Index: gcc/testsuite/gfortran.dg/select_type_40.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/select_type_40.f90 (.../tags/gcc_7_3_0_release) @@ -8102,6 +35719,18 @@ + y = (/ (1, i=1, n) /) + if (y(2) /= 1) stop 1 +end program test +Index: gcc/testsuite/gfortran.dg/pr85520.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85520.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85520.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do run } ++! PR fortran/85520 ++! Original code from Gerhard Steinmetz ++program p ++ character(-huge(1)) :: c = ' ' ++ if (len(c) /= 0) stop 1 ++end Index: gcc/testsuite/gfortran.dg/internal_references_1.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/internal_references_1.f90 (.../tags/gcc_7_3_0_release) @@ -8205,6 +35834,18 @@ + y = f() ! { dg-error "Missing actual argument" } +end subroutine t +! { dg-prune-output " Obsolescent feature" } +Index: gcc/testsuite/gfortran.dg/pr85542.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85542.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85542.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! PR fortran/85542 ++function f(x) ++ character(*), intent(in) :: x ++ character((len((x)))) :: f ++ f = x ++end Index: gcc/testsuite/gfortran.dg/shape_9.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/shape_9.f90 (.../tags/gcc_7_3_0_release) @@ -8226,6 +35867,18 @@ + if (any(shape(x,kind=4) /= [ 2, 5 ])) call abort + if (any(shape(x,kind=8) /= [ 2, 5 ])) call abort + end program test +Index: gcc/testsuite/gfortran.dg/pr85779_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85779_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85779_2.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! PR fortran/85779 ++type(t) function f() result(z) ! { dg-error "is not accessible" } ++ type z ! { dg-error "already has a basic type" } ++ end type ! { dg-error "END FUNCTION statement" } ++end ++ Index: gcc/testsuite/gfortran.dg/class_67.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/class_67.f90 (.../tags/gcc_7_3_0_release) @@ -8371,6 +36024,35 @@ integer, pointer :: p(:) integer, allocatable :: q(:) contains +Index: gcc/testsuite/gfortran.dg/pr83149_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr83149_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr83149_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,24 @@ ++! Compiled with pr83149.f90 ++! { dg-do run } ++! { dg-options "-fno-whole-file" } ++! { dg-compile-aux-modules "pr83149.f90" } ++! { dg-additional-sources pr83149.f90 } ++! ++! Contributed by Neil Carlson ++! ++subroutine sub(s) ++ use mod2 ++ real :: s ++ s = sum(get()) ++end ++ ++ use mod1 ++ real :: s ++ ncells = 2 ++ call sub (s) ++ if (int (s) .ne. ncells) stop 1 ++ ncells = 10 ++ call sub (s) ++ if (int (s) .ne. ncells) stop 2 ++end ++ Index: gcc/testsuite/gfortran.dg/pr65453.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/pr65453.f90 (.../tags/gcc_7_3_0_release) @@ -8496,6 +36178,17 @@ +integer i +data (string(i:i),i=1,1025)/1025*'?'/ ! { dg-error "Invalid substring" } +end +Index: gcc/testsuite/gfortran.dg/pr85779_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85779_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85779_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,6 @@ ++! { dg-do compile } ++! PR fortran/85779 ++type(t) function f() ! { dg-error "is not accessible" } ++ type f ! { dg-error "already has a basic type" } ++ end type ! { dg-error "END FUNCTION statement" } ++end Index: gcc/testsuite/gfortran.dg/dec_parameter_2.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/dec_parameter_2.f90 (.../tags/gcc_7_3_0_release) @@ -8508,6 +36201,177 @@ return end subroutine +Index: gcc/testsuite/gfortran.dg/temporary_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/temporary_3.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/temporary_3.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,121 @@ ++! { dg-do run } ++! ++! Tests the fix for PR68846 in which compiler generated temporaries were ++! receiving the attributes of dummy arguments. This test is the original. ++! The simplified versions by Gerhard Steinmetz are gratefully acknowledged. ++! ++! Contributed by Mirco Valentini ++! ++MODULE grid ++ IMPLICIT NONE ++ PRIVATE ++ REAL(KIND=8), DIMENSION(100,100), TARGET :: WORKSPACE ++ TYPE, PUBLIC :: grid_t ++ REAL(KIND=8), DIMENSION(:,:), POINTER :: P => NULL () ++ END TYPE ++ PUBLIC :: INIT ++CONTAINS ++ SUBROUTINE INIT (DAT) ++ IMPLICIT NONE ++ TYPE(grid_t), INTENT(INOUT) :: DAT ++ INTEGER :: I, J ++ DAT%P => WORKSPACE ++ DO I = 1, 100 ++ DO J = 1, 100 ++ DAT%P(I,J) = REAL ((I-1)*100+J-1) ++ END DO ++ ENDDO ++ END SUBROUTINE INIT ++END MODULE grid ++ ++MODULE subgrid ++ USE :: grid, ONLY: grid_t ++ IMPLICIT NONE ++ PRIVATE ++ TYPE, PUBLIC :: subgrid_t ++ INTEGER, DIMENSION(4) :: range ++ CLASS(grid_t), POINTER :: grd => NULL () ++ CONTAINS ++ PROCEDURE, PASS :: INIT => LVALUE_INIT ++ PROCEDURE, PASS :: JMP => LVALUE_JMP ++ END TYPE ++CONTAINS ++ SUBROUTINE LVALUE_INIT (HOBJ, P, D) ++ IMPLICIT NONE ++ CLASS(subgrid_t), INTENT(INOUT) :: HOBJ ++ TYPE(grid_t), POINTER, INTENT(INOUT) :: P ++ INTEGER, DIMENSION(4), INTENT(IN) :: D ++ HOBJ%range = D ++ HOBJ%grd => P ++ END SUBROUTINE LVALUE_INIT ++ ++ FUNCTION LVALUE_JMP(HOBJ, I, J) RESULT(P) ++ IMPLICIT NONE ++ CLASS(subgrid_t), INTENT(INOUT) :: HOBJ ++ INTEGER, INTENT(IN) :: I, J ++ REAL(KIND=8), POINTER :: P ++ P => HOBJ%grd%P(HOBJ%range(1)+I-1, HOBJ%range(3)+J-1) ++ END FUNCTION LVALUE_JMP ++END MODULE subgrid ++ ++MODULE geom ++ IMPLICIT NONE ++CONTAINS ++ SUBROUTINE fillgeom_03( subgrid, value ) ++ USE :: subgrid, ONLY: subgrid_t ++ IMPLICIT NONE ++ TYPE(subgrid_T), intent(inout) :: subgrid ++ REAL(kind=8), intent(in) :: value ++ INTEGER :: I, J ++ DO i = 1, 3 ++ DO J = 1, 4 ++ subgrid%jmp(i,j) = value ! Dummy argument '_F.DA0' with INTENT(IN) ++ ! in pointer association context or ICE ++ ! in trans_decl.c, depending on INTENT of ++ ! 'VALUE' ++ ENDDO ++ ENDDO ++ END SUBROUTINE fillgeom_03 ++END MODULE geom ++ ++PROGRAM test_lvalue ++ USE :: grid ++ USE :: subgrid ++ USE :: geom ++ IMPLICIT NONE ++ TYPE(grid_t), POINTER :: GRD => NULL() ++ TYPE(subgrid_t) :: STENCIL ++ REAL(KIND=8), POINTER :: real_tmp_ptr ++ REAL(KIND=8), DIMENSION(10,10), TARGET :: AA ++ REAL(KIND=8), DIMENSION(3,4) :: VAL ++ INTEGER :: I, J, chksum ++ integer, parameter :: r1 = 50 ++ integer, parameter :: r2 = 52 ++ integer, parameter :: r3 = 50 ++ integer, parameter :: r4 = 53 ++ DO I = 1, 3 ++ DO J = 1, 4 ++ VAL(I,J) = dble(I)*dble(J) ++ ENDDO ++ ENDDO ++ ++ ALLOCATE (GRD) ++ CALL INIT (GRD) ++ chksum = sum([([((i-1)*100 + j -1, j=1,100)], i = 1,100)]) ++ if (int(sum(grd%p)) .ne. chksum) stop 1 ++ ++ CALL STENCIL%INIT (GRD, [r1, r2, r3, r4]) ++ if (.not.associated (stencil%grd, grd)) stop 2 ++ if (int(sum(grd%p)) .ne. chksum) stop 3 ++ ++ CALL fillgeom_03(stencil, 42.0_8) ++ if (any (int (grd%p(r1:r2,r3:r4)) .ne. 42)) stop 4 ++ ++ chksum = chksum - sum([([((i - 1) * 100 + j -1, j=r3,r4)], i = r1,r2)]) & ++ + (r4 - r3 + 1) * (r2 - r1 +1) * 42 ++ if (int(sum(grd%p)) .ne. chksum) stop 5 ++ ++ deallocate (grd) ++END PROGRAM test_lvalue ++ ++ +Index: gcc/testsuite/gfortran.dg/coarray_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_3.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_3.f90 (.../branches/gcc-7-branch) +@@ -13,7 +13,7 @@ + + sync all (stat=1) ! { dg-error "Syntax error in SYNC ALL" } + sync all ( stat = n,stat=k) ! { dg-error "Redundant STAT" } +-sync memory (errmsg=str) ++sync memory (errmsg=str) ! { dg-error "must be a scalar CHARACTER variable" } + sync memory (errmsg=n) ! { dg-error "must be a scalar CHARACTER variable" } + sync images (*, stat=1.0) ! { dg-error "Syntax error in SYNC IMAGES" } + sync images (-1) ! { dg-error "must between 1 and num_images" } +Index: gcc/testsuite/gfortran.dg/pr85895.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85895.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85895.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,17 @@ ++! { dg-do compile } ++! { dg-options "-fcoarray=lib" } ++! PR fortran/85895 ++subroutine p ++ character(80) :: c(2) ++ sync memory (errmsg=c) ! { dg-error "scalar CHARACTER variable" } ++end subroutine p ++ ++subroutine q ++ character(80) :: c(2) ++ sync memory (errmsg=c(1:2)) ! { dg-error "scalar CHARACTER variable" } ++end subroutine q ++ ++subroutine r ++ character(80) :: c(2) ++ sync memory (errmsg=c(1)) ++end subroutine r +Index: gcc/testsuite/gfortran.dg/pr85780.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85780.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85780.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,5 @@ ++! { dg-do compile } ++! { dg-options "-std=legacy" } ++! PR fortran/85780 ++subroutine s(*) bind(c) ++end Index: gcc/testsuite/gfortran.dg/pr83939.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/pr83939.f90 (.../tags/gcc_7_3_0_release) @@ -8525,6 +36389,51 @@ + allocate(s) + s = 3.5 +end function +Index: gcc/testsuite/gfortran.dg/pr70870_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr70870_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr70870_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++! PR fortran/70870 ++! Contributed by Vittorio Zecca ++ type t ++ integer :: g=0 ! default initialization ++ end type ++ type(t) :: v2 ++ data v2/t(2)/ ! { dg-error "default initialization shall not" } ++ end +Index: gcc/testsuite/gfortran.dg/select_type_42.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/select_type_42.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/select_type_42.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,26 @@ ++! { dg-do run } ++! ++! Tests the fix for PR82275. ++! Associating a name with a reduced-dimension section of a ++! multidimensional array precluded subsequent use of the name ++! with the appropriately reduced dimensionality and instead ++! required use of the (invalid) full set of original dimensions. ++! ++! Contributed by Damian Rouson ++! ++ type component ++ integer :: i ++ end type ++ type container ++ class(component), allocatable :: component_array(:,:) ++ end type ++ type(container) bag ++ type(component) section_copy ++ allocate(bag%component_array, source = reshape ([component(10), component (100)], [1,2])) ++ select type(associate_name=>bag%component_array(1,:)) ++ type is (component) ++ section_copy = associate_name(2) ! gfortran rejected valid ++! section_copy = associate_name(1,1)! gfortran accepted invalid ++ end select ++ if (section_copy%i .ne. 100) stop 1 ++end Index: gcc/testsuite/gfortran.dg/pr84734.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/pr84734.f90 (.../tags/gcc_7_3_0_release) @@ -8534,6 +36443,109 @@ +! PR fortran/84734 + integer :: b(huge(1_8)+1_8) = 0 ! { dg-error "Arithmetic overflow" } + end +Index: gcc/testsuite/gfortran.dg/allocate_assumed_charlen_4.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/allocate_assumed_charlen_4.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/allocate_assumed_charlen_4.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,39 @@ ++! { dg-do run } ++! ++! Test the fix for PR82923, in which an ICE occurred because the ++! character length from 'getchars' scope was being used in the ++! automatic allocation of 'mine'. ++! ++! Contributed by "Werner Blokbuster" ++! ++module m ++ implicit none ++contains ++ function getchars(my_len,my_size) ++ integer, intent(in) :: my_len, my_size ++ character(my_len) :: getchars(my_size) ++ getchars = 'A-' ++ end function getchars ++ ++ function getchars2(my_len) ++ integer, intent(in) :: my_len ++ character(my_len) :: getchars2 ++ getchars2 = 'B--' ++ end function getchars2 ++end module m ++ ++program testca ++ use m, only: getchars, getchars2 ++ implicit none ++ character(:), allocatable :: mine(:) ++ character(:), allocatable :: mine2 ++ integer :: i ++ ++ ! ICE occured at this line: ++ mine = getchars(2,4) ++ if (any (mine .ne. [('A-', i = 1, 4)])) stop 1 ++ ++ ! The scalar version was fine and this will keep it so: ++ mine2 = getchars2(3) ++ if (mine2 .ne. 'B--') stop 2 ++end program testca +Index: gcc/testsuite/gfortran.dg/submodule_31.f08 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/submodule_31.f08 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/submodule_31.f08 (.../branches/gcc-7-branch) +@@ -0,0 +1,54 @@ ++! { dg-do run } ++! ++! Test the fix for PR82814 in which an ICE occurred for the submodule allocation. ++! ++! Contributed by "Werner Blokbuster" ++! ++module u ++ ++ implicit none ++ ++ interface unique ++ module function uniq_char(input) result(uniq) ++ character(*), intent(in) :: input(:) ++ character(size(input)), allocatable :: uniq(:) ++ end function uniq_char ++ end interface unique ++ ++contains ++ ++ module function uniq2(input) result(uniq) ++ character(*), intent(in) :: input(:) ++ character(size(input)), allocatable :: uniq(:) ++ allocate(uniq(1)) ++ uniq = 'A' ++ end function uniq2 ++ ++end module u ++ ++ ++submodule (u) z ++ ++ implicit none ++ ++contains ++ ++ module function uniq_char(input) result(uniq) ++ character(*), intent(in) :: input(:) ++ character(size(input)), allocatable :: uniq(:) ++ allocate(uniq(1)) ! This used to ICE ++ uniq = 'A' ++ end function uniq_char ++ ++end submodule z ++ ++ ++program test_uniq ++ use u ++ implicit none ++ character(1), dimension(4) :: chr = ['1','2','1','2'] ++ ++ write(*,*) unique(chr) ++ write(*,*) uniq2(chr) ++ ++end program test_uniq Index: gcc/testsuite/gfortran.dg/inquire_19.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/inquire_19.f90 (.../tags/gcc_7_3_0_release) @@ -8552,6 +36564,21 @@ + !print *, iPos + if (iPos.ne.5) stop 1 +end program TestInquire +Index: gcc/testsuite/gfortran.dg/char_result_18.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/char_result_18.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/char_result_18.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,10 @@ ++! { dg-do compile } ++! ++! Tests the fix for PR80657. ++! ++! Contributed by Vittorio Zecca ++! ++function f(x) ++implicit character(len(f)) (x) ! { dg-error "Self reference in character length" } ++character(len(x)) f ++end Index: gcc/testsuite/gfortran.dg/pr78741.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/pr78741.f90 (.../tags/gcc_7_3_0_release) @@ -8573,6 +36600,41 @@ + z(1) = x(1:1) + end +end +Index: gcc/testsuite/gfortran.dg/coarray_dependency_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_dependency_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_dependency_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! { dg-options "-fcoarray=lib -lcaf_single" } ++! ++! Check that reffing x on both sides of a coarray send does not ICE. ++! PR 85507 ++ ++program check_dependency ++ integer :: x[*] ++ x[42] = x ++end program check_dependency ++ +Index: gcc/testsuite/gfortran.dg/pr83149.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr83149.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr83149.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++! Compiled with pr83149_1.f90 ++! ++module mod1 ++ integer :: ncells ++end module ++ ++module mod2 ++contains ++ function get() result(array) ++ use mod1 ++ real array(ncells) ++ array = 1.0 ++ end function ++end module Index: gcc/testsuite/gfortran.dg/statement_function_3.f =================================================================== --- a/src/gcc/testsuite/gfortran.dg/statement_function_3.f (.../tags/gcc_7_3_0_release) @@ -8593,6 +36655,19 @@ + end +! { dg-prune-output " Obsolescent feature" } + +Index: gcc/testsuite/gfortran.dg/pr85521_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85521_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85521_2.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR fortran/85521 ++program p ++ character(3) :: c = 'abc' ++ character(3) :: z(1) ++ z = [ c(:-2) ] ++ print *, z ++end Index: gcc/testsuite/gfortran.dg/interface_41.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/interface_41.f90 (.../tags/gcc_7_3_0_release) @@ -8626,9 +36701,168 @@ +! PR fortran/83633 +! Original testcase by Nathan T. Weeks +! -+integer :: A(command_argument_count()) = 1 ! { dg-error "nonconstant bounds" } -+write (*,*) A ++integer :: A(command_argument_count()) = 1 ! { dg-error "nonconstant bounds" } ++write (*,*) A ++end +Index: gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,84 @@ ++! { dg-do run } ++! ++! Test the fix for PR84546 in which the failing cases would ++! have x%vec = ['foo','b ']. ++! ++! Contributed by Neil Carlson ++! ++module any_vector_type ++ ++ type :: any_vector ++ class(*), allocatable :: vec(:) ++ end type ++ ++ interface any_vector ++ procedure any_vector1 ++ end interface ++ ++contains ++ ++ function any_vector1(vec) result(this) ++ class(*), intent(in) :: vec(:) ++ type(any_vector) :: this ++ allocate(this%vec, source=vec) ++ end function ++ ++end module ++ ++program main ++ ++ use any_vector_type ++ implicit none ++ ++ class(*), allocatable :: x ++ character(*), parameter :: vec(2) = ['foo','bar'] ++ integer :: vec1(3) = [7,8,9] ++ ++ call foo1 ++ call foo2 ++ call foo3 ++ call foo4 ++ ++contains ++ ++ subroutine foo1 ! This always worked ++ allocate (any_vector :: x) ++ select type (x) ++ type is (any_vector) ++ x = any_vector(vec) ++ end select ++ call bar(1) ++ deallocate (x) ++ end ++ ++ subroutine foo2 ! Failure found during diagnosis ++ x = any_vector (vec) ++ call bar(2) ++ deallocate (x) ++ end ++ ++ subroutine foo3 ! Original failure ++ allocate (x, source = any_vector (vec)) ++ call bar(3) ++ deallocate (x) ++ end ++ ++ subroutine foo4 ! This always worked ++ allocate (x, source = any_vector (vec1)) ++ call bar(4) ++ deallocate (x) ++ end ++ ++ subroutine bar (stop_flag) ++ integer :: stop_flag ++ select type (x) ++ type is (any_vector) ++ select type (xvec => x%vec) ++ type is (character(*)) ++ if (any(xvec /= vec)) stop stop_flag ++ type is (integer) ++ if (any(xvec /= (vec1))) stop stop_flag ++ end select ++ end select ++ end ++end program +Index: gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,32 @@ ++! { dg-do run } ++ ++! Test that index vector on lhs of caf-expression works correctly. ++ ++program pr81773 ++ ++ integer, parameter :: ndim = 5 ++ integer :: i ++ integer :: vec(ndim) = -1 ++ integer :: res(ndim)[*] = [ (i, i=1, ndim) ] ++ type T ++ integer :: padding ++ integer :: dest(ndim) ++ integer :: src(ndim) ++ end type ++ ++ type(T) :: dest ++ type(T), allocatable :: caf[:] ++ ++ vec([ndim, 3, 1]) = res(1:3)[1] ++ if (any (vec /= [ 3, -1, 2, -1, 1])) stop 1 ++ ++ dest = T(42, [ ( -1, i = 1, ndim ) ], [ ( i - 2, i = ndim, 1, -1) ] ) ++ dest%dest([ 4,3,2 ]) = res(3:5)[1] ++ if (any (dest%dest /= [-1, 5, 4, 3, -1])) stop 2 ++ ++ vec(:) = -1 ++ allocate(caf[*], source = T(42, [ ( -1, i = 1, ndim ) ], [ ( i - 2, i = ndim, 1, -1) ] )) ++ vec([ 5,3,2 ]) = caf[1]%src(2:4) ++ if (any (vec /= [ -1, 0, 1, -1, 2])) stop 3 ++end ++ +Index: gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,28 @@ ++! { dg-do run } ++! ++! Test that pr81773/fortran is fixed. ++ ++program get_to_indexed_array ++ ++ integer, parameter :: ndim = 5 ++ integer :: i ++ integer :: vec(1:ndim) = 0 ++ integer :: indx(1:2) = [3, 2] ++ integer :: mat(1:ndim, 1:ndim) = 0 ++ integer :: res(1:ndim)[*]=[ (i, i=1, ndim) ] ++ ++ ! No sync needed, because this test always is running on single image ++ vec([ndim , 1]) = res(1:2)[1] ++ if (vec(1) /= res(2) .or. vec(ndim) /= res(1)) then ++ print *,"vec: ", vec, " on image: ", this_image() ++ stop 1 ++ end if ++ ++ mat(2:3,[indx(:)]) = reshape(res(1:4)[1], [2, 2]) ++ if (any(mat(2:3, 3:2:-1) /= reshape(res(1:4), [2,2]))) then ++ print *, "mat: ", mat, " on image: ", this_image() ++ stop 2 ++ end if +end ++ ++! vim:ts=2:sts=2:sw=2: Index: gcc/testsuite/gfortran.dg/assumed_charlen_parameter.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/assumed_charlen_parameter.f90 (.../tags/gcc_7_3_0_release) @@ -8643,6 +36877,71 @@ + character(*), parameter:: c(2) = [character(len(a)) :: a, b] + print "(2A4)",adjustr(c) +end program ice +Index: gcc/testsuite/gfortran.dg/temporary_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/temporary_2.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/temporary_2.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,39 @@ ++! { dg-do compile } ++! ++! Tests the fix for PR70864 in which compiler generated temporaries received ++! the attributes of a dummy argument. This is the original testcase. ++! The simplified version by Gerhard Steinmetz is gratefully acknowledged. ++! ++! Contributed by Weiqun Zhang ++! ++module boxarray_module ++ implicit none ++ type :: BoxArray ++ integer :: i = 0 ++ contains ++ procedure :: boxarray_assign ++ generic :: assignment(=) => boxarray_assign ++ end type BoxArray ++contains ++ subroutine boxarray_assign (dst, src) ++ class(BoxArray), intent(inout) :: dst ++ type (BoxArray), intent(in ) :: src ++ dst%i =src%i ++ end subroutine boxarray_assign ++end module boxarray_module ++ ++module multifab_module ++ use boxarray_module ++ implicit none ++ type, public :: MultiFab ++ type(BoxArray) :: ba ++ end type MultiFab ++contains ++ subroutine multifab_swap(mf1, mf2) ++ type(MultiFab), intent(inout) :: mf1, mf2 ++ type(MultiFab) :: tmp ++ tmp = mf1 ++ mf1 = mf2 ! Generated an ICE in trans-decl.c. ++ mf2 = tmp ++ end subroutine multifab_swap ++end module multifab_module +Index: gcc/testsuite/gfortran.dg/pr83149_b.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr83149_b.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr83149_b.f90 (.../branches/gcc-7-branch) +@@ -0,0 +1,16 @@ ++! Compiled with pr83149_a.f90 ++! { dg-do run } ++! { dg-options "-fno-whole-file" } ++! { dg-compile-aux-modules "pr83149_a.f90" } ++! { dg-additional-sources pr83149_a.f90 } ++! ++! Contributed by Neil Carlson ++! ++ use mod ++ string = 'fubar' ++ select case (get_string()) ++ case ('fubar') ++ case default ++ stop 1 ++ end select ++end Index: gcc/testsuite/gfortran.dg/pr70409.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/pr70409.f90 (.../tags/gcc_7_3_0_release) @@ -8754,6 +37053,22 @@ + end subroutine xyz +end module mode3_mod + +Index: gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 (.../branches/gcc-7-branch) +@@ -38,9 +38,8 @@ + if (any (A-B /= 0)) call abort + end + +-! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &parm.\[0-9\]+, 4, 4, 0, 0B\\\);" 1 "original" } } +-! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &parm.\[0-9\]+, 4, 4, 1, 0B\\\);" 1 "original" } } ++! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &parm.\[0-9\]+, 4, 4, 1, 0B\\\);" 2 "original" } } + ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &p, 4, 4, 1, 0B\\\);" 1 "original" } } + ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.1, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) b, 1, &parm.\[0-9\]+, 0B, &p, 4, 4, 0, 0B\\\);" 1 "original" } } +-! { dg-final { scan-tree-dump-times "_gfortran_caf_sendget \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, 4, 4, 0, 0B\\\);" 1 "original" } } ++! { dg-final { scan-tree-dump-times "_gfortran_caf_sendget \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, 4, 4, 1, 0B\\\);" 1 "original" } } + Index: gcc/testsuite/gfortran.dg/inquire_18.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.dg/inquire_18.f90 (.../tags/gcc_7_3_0_release) @@ -9840,6 +38155,56 @@ +int main() { + return my_struct.ints[0]; +} +Index: gcc/testsuite/gcc.dg/lto/pr85248_0.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/pr85248_0.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/lto/pr85248_0.c (.../branches/gcc-7-branch) +@@ -0,0 +1,45 @@ ++/* PR lto/85248 */ ++/* { dg-lto-do run } */ ++/* { dg-lto-options { { -flto -O2 } } } */ ++ ++extern void test_alias (int s, int e) __asm__ (__USER_LABEL_PREFIX__ "test"); ++extern void test_noreturn (int s, int e) __asm__ (__USER_LABEL_PREFIX__ "test") ++ __attribute__ ((__noreturn__)); ++ ++extern inline __attribute__ ((__always_inline__, __gnu_inline__)) void ++test (int s, int e) ++{ ++ if (__builtin_constant_p (s) && s != 0) ++ test_noreturn (s, e); ++ else ++ test_alias (s, e); ++} ++ ++int ++foo (void) ++{ ++ static volatile int a; ++ return a; ++} ++ ++static void ++bar (void) ++{ ++ test (0, 1); ++ __builtin_exit (0); ++} ++ ++static void ++baz () ++{ ++ test (1, 0); ++} ++ ++int ++main () ++{ ++ if (foo ()) ++ baz (); ++ bar (); ++ __builtin_abort (); ++} Index: gcc/testsuite/gcc.dg/lto/pr83954_0.c =================================================================== --- a/src/gcc/testsuite/gcc.dg/lto/pr83954_0.c (.../tags/gcc_7_3_0_release) @@ -9872,6 +38237,20 @@ +struct foo; +extern struct foo *FOO_PTR_ARR[1]; + +Index: gcc/testsuite/gcc.dg/lto/pr85248_1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/pr85248_1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/lto/pr85248_1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,9 @@ ++/* { dg-options "-fno-lto" } */ ++ ++void ++test (int s, int e) ++{ ++ asm volatile ("" : "+g" (s), "+g" (e) : : "memory"); ++ if (s) ++ __builtin_abort (); ++} Index: gcc/testsuite/gcc.dg/lto/pr83954_1.c =================================================================== --- a/src/gcc/testsuite/gcc.dg/lto/pr83954_1.c (.../tags/gcc_7_3_0_release) @@ -9884,6 +38263,103 @@ +}; +struct foo *FOO_PTR_ARR[1] = { 0 }; + +Index: gcc/testsuite/gcc.dg/torture/pr85244-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr85244-2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr85244-2.c (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++struct s { ++ long a; ++ int b; ++ int tab[]; ++}; ++ ++int idx = 1; ++const struct s val = { 0, 0, { 42, 1337 } }; +Index: gcc/testsuite/gcc.dg/torture/pr85168.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr85168.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr85168.c (.../branches/gcc-7-branch) +@@ -0,0 +1,30 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target indirect_jumps } */ ++ ++typedef struct { ++ struct { ++ char a; ++ } b; ++} c; ++ ++int d, f; ++c *e; ++ ++extern void i(void); ++extern void sejtmp () __attribute__((returns_twice)); ++ ++void g(void) ++{ ++ c *h = e; ++ if (f) ++ { ++ i(); ++ h--; ++ if (d) ++ if (h->b.a) ++ i(); ++ } ++ if (h->b.a) ++ sejtmp(); ++ e = h; ++} +Index: gcc/testsuite/gcc.dg/torture/pr85284.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr85284.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr85284.c (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++/* { dg-do run } */ ++ ++static int p[48], v; ++ ++int ++main () ++{ ++ p[32] = 1; ++ for (int i = 48; i--;) ++ { ++ if (!p[i]) ++ continue; ++ if ((i & 7) > 2) ++ break; ++ v = i & 1; ++ } ++ if (v != 0) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr85244-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr85244-1.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr85244-1.c (.../branches/gcc-7-branch) +@@ -0,0 +1,19 @@ ++/* { dg-do run } */ ++/* { dg-additional-sources "pr85244-2.c" } */ ++ ++struct s { ++ long a; ++ int b; ++ int tab[]; ++}; ++ ++extern const struct s val; ++extern int idx; ++extern void abort (void); ++ ++int main() ++{ ++ if (val.tab[0] != 42 || val.tab[1] != 1337 || val.tab[idx] != 1337) ++ abort (); ++ return 0; ++} Index: gcc/testsuite/gcc.dg/tls/pr83945.c =================================================================== --- a/src/gcc/testsuite/gcc.dg/tls/pr83945.c (.../tags/gcc_7_3_0_release) @@ -10002,7 +38478,244 @@ =================================================================== --- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_7_3_0_release) +++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-7-branch) -@@ -1,3 +1,973 @@ +@@ -1,3 +1,1210 @@ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85543 ++ Backport from trunk ++ * gfortran.dg/pr85543.f90: New test. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85779 ++ Backport from trunk ++ * gfortran.dg/pr85779_1.f90: New test. ++ * gfortran.dg/pr85779_2.f90: Ditto. ++ * gfortran.dg/pr85779_3.f90: Ditto. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85780 ++ Backport from trunk ++ * gfortran.dg/pr85780.f90: New test. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85895 ++ Backport from trunk ++ * gfortran.dg/coarray_3.f90: Fix invalid testcase. ++ * gfortran.dg/pr85895.f90: New test. ++ ++2018-05-24 Uros Bizjak ++ ++ * gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Update scan string. ++ * gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Ditto. ++ ++2018-05-21 Pat Haugen ++ ++ Backport from mainline: ++ 2018-05-17 Pat Haugen ++ ++ PR target/85698 ++ * gcc.target/powerpc/pr85698.c: New test. ++ ++2018-05-20 Paul Thomas ++ ++ PR fortran/80657 ++ Backport from trunk ++ * gfortran.dg/char_result_18.f90: New test. ++ ++2018-05-20 Paul Thomas ++ ++ PR fortran/82275 ++ Backport from trunk ++ * gfortran.dg/select_type_42.f90: New test. ++ ++2018-05-19 Paul Thomas ++ ++ PR fortran/82923 ++ Backport from trunk ++ * gfortran.dg/allocate_assumed_charlen_4.f90: New test. Note ++ that the patch fixes PR66694 & PR82617, although the testcases ++ are not explicitly included. ++ ++2017-05-17 Paul Thomas ++ ++ PR fortran/82814 ++ Backport from trunk ++ * gfortran.dg/submodule_31.f08: New test. ++ ++2018-05-16 Paul Thomas ++ ++ PR fortran/83149 ++ Backport from trunk ++ * gfortran.dg/pr83149_1.f90: New test. ++ * gfortran.dg/pr83149.f90: Additional source for previous. ++ * gfortran.dg/pr83149_b.f90: New test. ++ * gfortran.dg/pr83149_a.f90: Additional source for previous. ++ ++2018-16-05 Paul Thomas ++ ++ PR fortran/83898 ++ Backport from trunk ++ * gfortran.dg/associate_33.f03 : New test. ++ ++2018-05-16 Paul Thomas ++ ++ PR fortran/84546 ++ Backport from trunk ++ * gfortran.dg/unlimited_polymorphic_29.f90 : New test. ++ ++2018-05-12 Steven G. Kargl ++ ++ PR fortran/85542 ++ Backport from trunk ++ * gfortran.dg/pr85542.f90: New test. ++ ++2018-05-12 Paul Thomas ++ ++ PR fortran/68846 ++ Backport from trunk ++ * gfortran.dg/temporary_3.f90 : New test. ++ ++ PR fortran/70864 ++ Backport from trunk ++ * gfortran.dg/temporary_2.f90 : New test. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/70870 ++ Backport from trunk ++ * gfortran.dg/pr70870_1.f90: New test. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/85521 ++ Backport from trunk ++ * gfortran.dg/pr85521_1.f90: New test. ++ * gfortran.dg/pr85521_2.f90: New test. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/85687 ++ Backport from trunk ++ * gfortran.dg/pr85687.f90: new test. ++ ++2018-05-06 Andre Vehreschild ++ ++ PR fortran/85507 ++ Backport from trunk. ++ * gfortran.dg/coarray_dependency_1.f90: New test. ++ * gfortran.dg/coarray_lib_comm_1.f90: Fix counting caf-expressions. ++ ++2018-05-01 Kyrylo Tkachov ++ ++ Backport from trunk ++ 2018-04-27 Kyrylo Tkachov ++ ++ PR target/82518 ++ * lib/target-supports.exp (check_effective_target_vect_load_lanes): ++ Use check_effective_target_arm_little_endian. ++ ++2018-04-28 Andre Vehreschild ++ ++ PR fortran/81773 ++ PR fortran/83606 ++ Backport from trunk. ++ * gfortran.dg/coarray/get_to_indexed_array_1.f90: New test. ++ * gfortran.dg/coarray/get_to_indirect_array.f90: New test. ++ ++2018-04-26 Richard Biener ++ ++ Backport from mainline ++ 2018-04-09 Richard Biener ++ ++ PR tree-optimization/85284 ++ * gcc.dg/torture/pr85284.c: New testcase. ++ ++ 2018-04-06 Richard Biener ++ ++ PR middle-end/85244 ++ * gcc.dg/torture/pr85244-1.c: New testcase. ++ * gcc.dg/torture/pr85244-2.c: Likewise. ++ ++ 2018-04-04 Richard Biener ++ ++ PR tree-optimization/85168 ++ * gcc.dg/torture/pr85168.c: New testcase. ++ ++ 2018-03-15 Richard Biener ++ ++ PR c/84873 ++ * c-c++-common/pr84873.c: New testcase. ++ ++2018-04-24 Steven G. Kargl ++ ++ PR fortran/85520 ++ * gfortran.dg/pr85520.f90: New test. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-10 Jakub Jelinek ++ ++ PR lto/85248 ++ * gcc.dg/lto/pr85248_0.c: New test. ++ * gcc.dg/lto/pr85248_1.c: New test. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-28 Jakub Jelinek ++ Martin Liska ++ ++ PR sanitizer/85081 ++ * g++.dg/asan/pr85081.C: New test. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-21 Martin Liska ++ ++ PR ipa/84963 ++ * gfortran.dg/goacc/pr84963.f90: New test. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-03-13 Martin Liska ++ ++ PR ipa/84658. ++ * g++.dg/ipa/pr84658.C: New test. ++ ++2018-04-23 Aaron Sawdey ++ ++ Backport from mainline ++ 2018-04-16 Aaron Sawdey ++ ++ PR target/83660 ++ * gcc.target/powerpc/pr83660.C: New test. ++ ++2018-04-23 Eric Botcazou ++ ++ * g++.dg/torture/pr85496.C: New test. ++ ++2018-04-20 Peter Bergner ++ ++ PR target/85436 ++ * go.dg/pr85436.go: New test. ++ ++ Backport from mainline ++ 2018-03-09 Peter Bergner ++ ++ PR target/83969 ++ * gcc.target/powerpc/pr83969.c: New test. ++ ++2018-04-19 Jonathan Wakely ++ ++ PR c++/85464 - missing location for -Wignored-qualifiers diagnostic ++ * g++.dg/diagnostic/pr85464.C: New. ++ +2018-04-18 Thomas Preud'homme + + Backport from mainline @@ -10976,7 +39689,7 @@ 2018-01-25 Release Manager * GCC 7.3.0 released. -@@ -920,7 +1890,7 @@ +@@ -920,7 +2127,7 @@ Backported from trunk PR fortran/80850 @@ -10985,7 +39698,7 @@ 2017-10-30 Paolo Carlini -@@ -971,7 +1941,7 @@ +@@ -971,7 +2178,7 @@ Backport from trunk PR fortran/82312 @@ -10994,6 +39707,32 @@ 2017-10-20 Thomas Koenig +Index: gcc/testsuite/go.dg/pr85436.go +=================================================================== +--- a/src/gcc/testsuite/go.dg/pr85436.go (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/go.dg/pr85436.go (.../branches/gcc-7-branch) +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mcpu=power9" { target { powerpc*-*-* } } } */ ++ ++package main ++import ( ++ "go/ast" ++ "go/parser" ++ "go/token" ++) ++type testFuncs struct { } ++func (t *testFuncs) load(filename, pkg string, doImport, seen *bool) { ++ var testFileSet = token.NewFileSet() ++ f, err := parser.ParseFile(testFileSet, filename, nil, parser.ParseComments) ++ if err != nil { } ++ for _, d := range f.Decls { ++ n, ok := d.(*ast.FuncDecl) ++ if !ok { } ++ ptr := n.Type.Params.List[0].Type.(*ast.StarExpr) ++ if sel := ptr.X.(*ast.SelectorExpr); sel.Sel.Name == "M" { } ++ } ++} Index: gcc/testsuite/g++.dg/opt/pr85196.C =================================================================== --- a/src/gcc/testsuite/g++.dg/opt/pr85196.C (.../tags/gcc_7_3_0_release) @@ -11243,6 +39982,16 @@ +J B::C::m3 () const { unsigned g (q != t); unsigned h (r != t); return J (g, h); } +A B::C::m4 () const { return A (m2 (), m3 ()); } +void B::m5 (D *c) { unsigned x; C ar; A am; if (ar.m1 (c->e, am)) m6 (x, am); } +Index: gcc/testsuite/g++.dg/diagnostic/pr85464.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/diagnostic/pr85464.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/diagnostic/pr85464.C (.../branches/gcc-7-branch) +@@ -0,0 +1,5 @@ ++// { dg-options "-Wignored-qualifiers" } ++struct Test { ++ operator int const(); // { dg-warning "type qualifiers ignored" } ++ operator int const() const; // { dg-warning "type qualifiers ignored" } ++}; Index: gcc/testsuite/g++.dg/parse/crash67.C =================================================================== --- a/src/gcc/testsuite/g++.dg/parse/crash67.C (.../tags/gcc_7_3_0_release) @@ -11306,6 +40055,34 @@ + if (alignas(1 alignas(1))) // { dg-error "expected" } + ; +} +Index: gcc/testsuite/g++.dg/cpp0x/extern_template-4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/extern_template-4.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/extern_template-4.C (.../branches/gcc-7-branch) +@@ -0,0 +1,23 @@ ++// PR c++/85470 ++// { dg-do compile { target c++11 } } ++ ++template ++struct StaticObject ++{ ++ static T& create() ++ { ++ static T t; ++ return t; ++ } ++ ++ static T & instance; ++}; ++ ++template T & StaticObject::instance = StaticObject::create(); ++ ++extern template class StaticObject; ++ ++void test() ++{ ++ StaticObject::instance; ++} Index: gcc/testsuite/g++.dg/cpp0x/decltype43.C =================================================================== --- a/src/gcc/testsuite/g++.dg/cpp0x/decltype43.C (.../tags/gcc_7_3_0_release) @@ -11836,11 +40613,69 @@ + c(l); + } +}; -+struct : d { -+ } m, n; -+bool o; -+void p() { (o ? m : n) ? (void)0 : a("", 5, "", ""); } ++struct : d { ++ } m, n; ++bool o; ++void p() { (o ? m : n) ? (void)0 : a("", 5, "", ""); } ++ +Index: gcc/testsuite/g++.dg/torture/pr85496.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr85496.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr85496.C (.../branches/gcc-7-branch) +@@ -0,0 +1,18 @@ ++// PR middle-end/85496 ++// Reported by Marek Polacek ++ ++template class complex; ++template complex<_Tp> operator*(complex<_Tp>, complex<_Tp>); ++template <> struct complex { _Complex float _M_value; }; ++class A { ++ complex _f0, _f1; ++ ++public: ++ complex &m_fn1() { return _f1; } ++}; ++complex a; ++void cos() { ++ A b; ++ complex c; ++ b.m_fn1() = c * a; ++} +Index: gcc/testsuite/g++.dg/ipa/pr84658.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ipa/pr84658.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ipa/pr84658.C (.../branches/gcc-7-branch) +@@ -0,0 +1,30 @@ ++/* PR ipa/84658 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fmerge-all-constants -std=c++11" } */ ++ ++const int kTestCasesFoo[] = { 0, 1, 2, 3, 4, 5, 8, 15, 16, 17, 512, 1020, 1021, 1022, 1023, 1024 }; ++const int kTestCasesBar[] = { 0, 1, 2, 3, 4, 5, 8, 15, 16, 17, 512, 1020, 1021, 1022, 1023, 1024 }; ++ ++void Foo() { ++ __builtin_printf("foo:"); ++ for (int count : kTestCasesFoo) { ++ __builtin_printf("%d,", count); ++ } ++ __builtin_printf(";\n"); ++} ++ ++void Bar() { ++ __builtin_printf("bar:"); ++ for (int count : kTestCasesBar) { ++ __builtin_printf("%d,", count); ++ } ++ __builtin_printf(";\n"); ++} + ++int main() { ++ Foo(); ++ Bar(); ++} ++ ++/* { dg-output "foo:0,1,2,3,4,5,8,15,16,17,512,1020,1021,1022,1023,1024,;(\n|\n\r|\r)*" } */ ++/* { dg-output "bar:0,1,2,3,4,5,8,15,16,17,512,1020,1021,1022,1023,1024,;(\n|\n\r|\r)*" } */ Index: gcc/testsuite/g++.dg/cpp1y/pr60626.C =================================================================== --- a/src/gcc/testsuite/g++.dg/cpp1y/pr60626.C (.../tags/gcc_7_3_0_release) @@ -12336,6 +41171,23 @@ + +typedef decltype(sizeof(0)) size_t; +extern "C" void *malloc (size_t) throw(); +Index: gcc/testsuite/g++.dg/cpp1z/decomp4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp4.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp4.C (.../branches/gcc-7-branch) +@@ -18,10 +18,10 @@ + // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 } + auto [ k ] { b }; // { dg-error "cannot decompose class type 'B' because it has an anonymous union member" } + // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 } +- auto [ l, l2 ] = c; // { dg-error "cannot decompose non-public member 'C::b' of 'C'" } ++ auto [ l, l2 ] = c; // { dg-error "cannot decompose inaccessible member 'C::b' of 'C'" } + // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 } + auto [ m ] = d; // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } } +- auto [ n ] { e }; // { dg-error "cannot decompose non-public member 'E::a' of 'E'" } ++ auto [ n ] { e }; // { dg-error "cannot decompose inaccessible member 'E::a' of 'E'" } + // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 } + auto [ o ] { f }; // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } } + auto & [ p ] { g }; // { dg-error "cannot decompose class type 'G': both it and its base class 'F' have non-static data members" } Index: gcc/testsuite/g++.dg/cpp1z/launder8.C =================================================================== --- a/src/gcc/testsuite/g++.dg/cpp1z/launder8.C (.../tags/gcc_7_3_0_release) @@ -12597,6 +41449,19 @@ +int main() { + Derived x; +} +Index: gcc/testsuite/g++.dg/cpp1z/decomp10.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp10.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp10.C (.../branches/gcc-7-branch) +@@ -20,7 +20,7 @@ + + struct A3a { int i,j; int get(); } a3a; + template<> struct std::tuple_size { enum { value = 1 }; }; +-void f3a() { auto [ x ] = a3a; } // { dg-error "get<0>" } ++void f3a() { auto [ x ] = a3a; } // { dg-error "get" } + + struct A3b { int i,j; } a3b; + int get(A3b&&); Index: gcc/testsuite/g++.dg/cpp1z/decomp35.C =================================================================== --- a/src/gcc/testsuite/g++.dg/cpp1z/decomp35.C (.../tags/gcc_7_3_0_release) @@ -12661,6 +41526,126 @@ + const auto &[d1, d2, d3] = d; // { dg-warning "only available with" "" { target c++14_down } } + static_assert (d1 == 1 && d2 == 2 && d3 == 3, ""); +} +Index: gcc/testsuite/g++.dg/cpp1z/decomp37.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp37.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp37.C (.../branches/gcc-7-branch) +@@ -0,0 +1,62 @@ ++// { dg-additional-options -std=c++17 } ++// { dg-do compile } ++ ++#include ++#include ++#include ++ ++struct X : private std::shared_ptr ++{ ++ std::string fun_payload; ++}; ++ ++template std::string& get(X& x) ++{ ++ if constexpr(N==0) return x.fun_payload; ++} ++ ++namespace std { ++ template<> class tuple_size : public std::integral_constant {}; ++ template<> class tuple_element<0, X> {public: using type = std::string;}; ++} ++ ++struct X2 : private std::shared_ptr ++{ ++ int fun_payload; ++ template void get(); ++}; ++ ++template int& get(X2& x) ++{ ++ if constexpr(N==0) return x.fun_payload; ++} ++ ++namespace std { ++ template<> class tuple_size : public std::integral_constant {}; ++ template<> class tuple_element<0, X2> {public: using type = int;}; ++} ++ ++class X3 ++{ ++ double fun_payload; ++public: ++ template double& get() ++ { ++ if constexpr(N==0) return fun_payload; ++ } ++}; ++ ++namespace std { ++ template<> class tuple_size : public std::integral_constant {}; ++ template<> class tuple_element<0, X3> {public: using type = double;}; ++} ++ ++int main() ++{ ++ X x; ++ auto& [b1] = x; ++ X2 x2; ++ auto& [b2] = x2; ++ X3 x3; ++ auto& [b3] = x3; ++} +Index: gcc/testsuite/g++.dg/cpp1z/decomp38.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp38.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp38.C (.../branches/gcc-7-branch) +@@ -0,0 +1,48 @@ ++// { dg-additional-options -std=c++17 } ++// { dg-do compile } ++ ++class X ++{ ++ int a, b; ++ void f() ++ { ++ auto[x,y] = *this; ++ } ++}; ++ ++class X2 ++{ ++ int a, b; ++ void f(X2& other) ++ { ++ auto[x,y] = other; ++ } ++}; ++ ++struct X3 ++{ ++ friend void foo(); ++private: ++ int a; ++}; ++ ++void foo() ++{ ++ X3 x; ++ auto [a] = x; ++} ++ ++struct X4 ++{ ++ int a; ++}; ++ ++struct X5 : private X4 ++{ ++ friend void foo2(); ++}; ++ ++void foo2() { ++ X5 x; ++ auto [a] = x; ++} Index: gcc/testsuite/g++.dg/cpp1z/class-deduction49.C =================================================================== --- a/src/gcc/testsuite/g++.dg/cpp1z/class-deduction49.C (.../tags/gcc_7_3_0_release) @@ -12723,6 +41708,25 @@ +}; + +int x = __is_trivially_constructible(z); +Index: gcc/testsuite/g++.dg/ext/visibility/lambda1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/visibility/lambda1.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/visibility/lambda1.C (.../branches/gcc-7-branch) +@@ -0,0 +1,14 @@ ++// PR c++/85646 ++// { dg-do compile { target c++11 } } ++// { dg-additional-options -fvisibility=hidden } ++ ++template ++void foo() { ++ struct inner { ++ inner() { ++ (void)([this] { }); ++ } ++ }; ++} ++ ++int main() { foo(); } Index: gcc/testsuite/g++.dg/ext/stmtexpr22.C =================================================================== --- a/src/gcc/testsuite/g++.dg/ext/stmtexpr22.C (.../tags/gcc_7_3_0_release) @@ -13341,6 +42345,31 @@ +{ + foo(); +} +Index: gcc/testsuite/g++.dg/asan/pr85081.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/asan/pr85081.C (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/asan/pr85081.C (.../branches/gcc-7-branch) +@@ -0,0 +1,20 @@ ++/* PR sanitizer/85081 */ ++/* { dg-do run } */ ++/* { dg-options "-fopenmp-simd" } */ ++/* { dg-require-effective-target fopenmp } */ ++ ++inline const int& max(const int& a, const int& b) ++{ ++ return a < b ? b : a; ++} ++ ++int main() ++{ ++ #pragma omp simd ++ for ( int i = 0; i < 20; ++i ) ++ { ++ const int j = max(i, 1); ++ } ++ ++ return 0; ++} Index: gcc/testsuite/g++.dg/template/nontype-fn1.C =================================================================== --- a/src/gcc/testsuite/g++.dg/template/nontype-fn1.C (.../tags/gcc_7_3_0_release) @@ -13510,6 +42539,19 @@ +} + +int foo (int, int) __attribute__((unused)); +Index: gcc/testsuite/c-c++-common/pr84873.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/pr84873.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/pr84873.c (.../branches/gcc-7-branch) +@@ -0,0 +1,8 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-frounding-math" } */ ++ ++int ++i1 (int w3, int n9) ++{ ++ return w3 >> ((long int)(1 + 0.1) + -!n9); ++} Index: gcc/cp/typeck.c =================================================================== --- a/src/gcc/cp/typeck.c (.../tags/gcc_7_3_0_release) @@ -13599,7 +42641,18 @@ } else { -@@ -7213,7 +7211,9 @@ +@@ -6402,7 +6400,9 @@ + } + + if (init_code +- && (DECL_IN_AGGR_P (decl) && !DECL_VAR_DECLARED_INLINE_P (decl))) ++ && (DECL_IN_AGGR_P (decl) ++ && DECL_INITIALIZED_IN_CLASS_P (decl) ++ && !DECL_VAR_DECLARED_INLINE_P (decl))) + { + static int explained = 0; + +@@ -7213,7 +7213,9 @@ { bool member_seen = false; for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field)) @@ -13610,7 +42663,19 @@ continue; else if (ret) return type; -@@ -7252,7 +7252,7 @@ +@@ -7228,9 +7230,9 @@ + inform (DECL_SOURCE_LOCATION (field), "declared here"); + return error_mark_node; + } +- else if (TREE_PRIVATE (field) || TREE_PROTECTED (field)) ++ else if (!accessible_p (type, field, true)) + { +- error_at (loc, "cannot decompose non-public member %qD of %qT", ++ error_at (loc, "cannot decompose inaccessible member %qD of %qT", + field, type); + inform (DECL_SOURCE_LOCATION (field), + TREE_PRIVATE (field) +@@ -7252,7 +7254,7 @@ tree t = find_decomp_class_base (loc, TREE_TYPE (base_binfo), ret); if (t == error_mark_node) return error_mark_node; @@ -13619,7 +42684,7 @@ { if (ret == type) { -@@ -7263,9 +7263,6 @@ +@@ -7263,9 +7265,6 @@ } else if (orig_ret != NULL_TREE) return t; @@ -13629,7 +42694,39 @@ else if (ret != NULL_TREE) { error_at (loc, "cannot decompose class type %qT: its base " -@@ -7466,6 +7463,12 @@ +@@ -7341,8 +7340,30 @@ + + tree fns = lookup_qualified_name (TREE_TYPE (e), get_id, + /*type*/false, /*complain*/false); +- if (fns != error_mark_node) ++ bool use_member_get = false; ++ ++ /* To use a member get, member lookup must find at least one ++ declaration that is a function template ++ whose first template parameter is a non-type parameter. */ ++ for (tree iter = BASELINK_P (fns) ? BASELINK_FUNCTIONS (fns) : fns; ++ iter; ++ iter = OVL_NEXT (iter)) + { ++ tree fn = OVL_CURRENT (iter); ++ if (TREE_CODE (fn) == TEMPLATE_DECL) ++ { ++ tree tparms = DECL_TEMPLATE_PARMS (fn); ++ tree parm = TREE_VEC_ELT (INNERMOST_TEMPLATE_PARMS (tparms), 0); ++ if (TREE_CODE (TREE_VALUE (parm)) == PARM_DECL) ++ { ++ use_member_get = true; ++ break; ++ } ++ } ++ } ++ ++ if (use_member_get) ++ { + fns = lookup_template_function (fns, targs); + return build_new_method_call (e, fns, /*args*/NULL, + /*path*/NULL_TREE, LOOKUP_NORMAL, +@@ -7466,6 +7487,12 @@ type = complete_type (TREE_TYPE (type)); if (type == error_mark_node) goto error_out; @@ -13642,7 +42739,7 @@ } tree eltype = NULL_TREE; -@@ -7640,7 +7643,9 @@ +@@ -7640,7 +7667,9 @@ goto error_out; } for (tree field = TYPE_FIELDS (btype); field; field = TREE_CHAIN (field)) @@ -13653,7 +42750,7 @@ continue; else eltscnt++; -@@ -7655,7 +7660,9 @@ +@@ -7655,7 +7684,9 @@ } unsigned int i = 0; for (tree field = TYPE_FIELDS (btype); field; field = TREE_CHAIN (field)) @@ -13664,7 +42761,7 @@ continue; else { -@@ -9517,7 +9524,8 @@ +@@ -9517,7 +9548,8 @@ constant_expression_error (size); /* An array must have a positive number of elements. */ @@ -13674,7 +42771,16 @@ { if (!(complain & tf_error)) return error_mark_node; -@@ -12556,7 +12564,9 @@ +@@ -10097,6 +10129,8 @@ + declspecs->locations); + if (typespec_loc == UNKNOWN_LOCATION) + typespec_loc = declspecs->locations[ds_type_spec]; ++ if (typespec_loc == UNKNOWN_LOCATION) ++ typespec_loc = input_location; + + /* Look inside a declarator for the name being declared + and get it as a string, for an error message. */ +@@ -12556,7 +12590,9 @@ A default argument expression is implicitly converted to the parameter type. */ ++cp_unevaluated_operand; @@ -14162,7 +43268,46 @@ =================================================================== --- a/src/gcc/cp/ChangeLog (.../tags/gcc_7_3_0_release) +++ b/src/gcc/cp/ChangeLog (.../branches/gcc-7-branch) -@@ -1,3 +1,356 @@ +@@ -1,3 +1,395 @@ ++2018-05-07 Jason Merrill ++ ++ PR c++/85646 - lambda visibility. ++ * decl2.c (determine_visibility): Don't mess with template arguments ++ from the containing scope. ++ (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor ++ thunk. ++ ++2018-04-23 Ville Voutilainen ++ ++ Backport from mainline ++ 2018-04-05 Ville Voutilainen ++ ++ Implement P0969 ++ * decl.c (find_decomp_class_base): Check accessibility instead ++ of declared access, adjust diagnostic. ++ ++2018-04-23 Jakub Jelinek ++ Jason Merrill ++ ++ PR c++/85470 - wrong error with static data member. ++ * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P. ++ * typeck2.c (store_init_value): Likewise. ++ ++2018-04-23 Ville Voutilainen ++ ++ Backport from mainline ++ 2018-04-05 Ville Voutilainen ++ ++ Implement P0961 ++ * decl.c (get_tuple_decomp_init): Check the templatedness ++ of a member get. ++ ++2018-04-19 Jonathan Wakely ++ ++ PR c++/85464 - missing location for -Wignored-qualifiers diagnostic ++ * decl.c (grokdeclarator): If declspecs->locations[ds_type_spec] ++ is UNKNOWN_LOCATION fall back to input_location. ++ +2018-04-09 Jason Merrill + + PR c++/85279 - dump_expr doesn't understand decltype. @@ -14538,6 +43683,25 @@ /* Dereference invisible reference parms. */ if (wtd->handle_invisiref_parm_p && is_invisiref_parm (stmt)) { +Index: gcc/cp/typeck2.c +=================================================================== +--- a/src/gcc/cp/typeck2.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/cp/typeck2.c (.../branches/gcc-7-branch) +@@ -817,9 +817,12 @@ + bool const_init; + value = instantiate_non_dependent_expr (value); + if (DECL_DECLARED_CONSTEXPR_P (decl) +- || (DECL_IN_AGGR_P (decl) && !DECL_VAR_DECLARED_INLINE_P (decl))) ++ || (DECL_IN_AGGR_P (decl) ++ && DECL_INITIALIZED_IN_CLASS_P (decl) ++ && !DECL_VAR_DECLARED_INLINE_P (decl))) + { +- /* Diagnose a non-constant initializer for constexpr. */ ++ /* Diagnose a non-constant initializer for constexpr variable or ++ non-inline in-class-initialized static data member. */ + if (processing_template_decl + && !require_potential_constant_expression (value)) + value = error_mark_node; Index: gcc/cp/pt.c =================================================================== --- a/src/gcc/cp/pt.c (.../tags/gcc_7_3_0_release) @@ -14778,6 +43942,36 @@ } } } +@@ -1829,10 +1829,13 @@ + { + if (!TREE_PUBLIC (decl)) + { +- /* maybe_thunk_body clears TREE_PUBLIC on the maybe-in-charge 'tor +- variants, check one of the "clones" for the real linkage. */ ++ /* maybe_thunk_body clears TREE_PUBLIC and DECL_ABSTRACT_P on the ++ maybe-in-charge 'tor variants; in that case we need to check one of ++ the "clones" for the real linkage. But only in that case; before ++ maybe_clone_body we haven't yet copied the linkage to the clones. */ + if ((DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (decl) + || DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl)) ++ && !DECL_ABSTRACT_P (decl) + && DECL_CHAIN (decl) + && DECL_CLONED_FUNCTION (DECL_CHAIN (decl))) + return vague_linkage_p (DECL_CHAIN (decl)); +@@ -2310,11 +2313,8 @@ + } + + /* Local classes in templates have CLASSTYPE_USE_TEMPLATE set, +- but have no TEMPLATE_INFO. Their containing template +- function does, and the local class could be constrained +- by that. */ +- if (template_decl) +- template_decl = fn; ++ but have no TEMPLATE_INFO, so don't try to check it. */ ++ template_decl = NULL_TREE; + } + else if (VAR_P (decl) && DECL_TINFO_P (decl) + && flag_visibility_ms_compat) Index: gcc/cp/parser.c =================================================================== --- a/src/gcc/cp/parser.c (.../tags/gcc_7_3_0_release) @@ -15389,6 +44583,25 @@ return false; unsigned i; +Index: gcc/omp-expand.c +=================================================================== +--- a/src/gcc/omp-expand.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/omp-expand.c (.../branches/gcc-7-branch) +@@ -5628,6 +5628,14 @@ + + split->flags ^= EDGE_FALLTHRU | EDGE_TRUE_VALUE; + ++ /* Add a dummy exit for the tiled block when cont_bb is missing. */ ++ if (cont_bb == NULL) ++ { ++ edge e = make_edge (body_bb, exit_bb, EDGE_FALSE_VALUE); ++ e->probability = PROB_EVEN; ++ split->probability = PROB_EVEN; ++ } ++ + /* Initialize the user's loop vars. */ + gsi = gsi_start_bb (elem_body_bb); + expand_oacc_collapse_vars (fd, true, &gsi, counts, e_offset); Index: gcc/lto-streamer-out.c =================================================================== --- a/src/gcc/lto-streamer-out.c (.../tags/gcc_7_3_0_release) @@ -15517,7 +44730,19 @@ =================================================================== --- a/src/gcc/expr.c (.../tags/gcc_7_3_0_release) +++ b/src/gcc/expr.c (.../branches/gcc-7-branch) -@@ -10862,18 +10862,30 @@ +@@ -6893,8 +6893,9 @@ + if (GET_CODE (temp) == PARALLEL) + { + HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp)); +- machine_mode temp_mode +- = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT); ++ machine_mode temp_mode = GET_MODE (temp); ++ if (temp_mode == BLKmode || temp_mode == VOIDmode) ++ temp_mode = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT); + rtx temp_target = gen_reg_rtx (temp_mode); + emit_group_store (temp_target, temp, TREE_TYPE (exp), size); + temp = temp_target; +@@ -10862,18 +10863,30 @@ tree fndecl = get_callee_fndecl (exp), attr; if (fndecl @@ -16002,7 +45227,67 @@ gfc_add_modify (&block, ctree, fold_convert (TREE_TYPE (ctree), vptr)); -@@ -4307,6 +4315,8 @@ +@@ -1148,15 +1156,32 @@ + of the referenced element. */ + + tree +-gfc_get_class_array_ref (tree index, tree class_decl, tree data_comp) ++gfc_get_class_array_ref (tree index, tree class_decl, tree data_comp, ++ bool unlimited) + { +- tree data = data_comp != NULL_TREE ? data_comp : +- gfc_class_data_get (class_decl); +- tree size = gfc_class_vtab_size_get (class_decl); +- tree offset = fold_build2_loc (input_location, MULT_EXPR, +- gfc_array_index_type, +- index, size); +- tree ptr; ++ tree data, size, tmp, ctmp, offset, ptr; ++ ++ data = data_comp != NULL_TREE ? data_comp : ++ gfc_class_data_get (class_decl); ++ size = gfc_class_vtab_size_get (class_decl); ++ ++ if (unlimited) ++ { ++ tmp = fold_convert (gfc_array_index_type, ++ gfc_class_len_get (class_decl)); ++ ctmp = fold_build2_loc (input_location, MULT_EXPR, ++ gfc_array_index_type, size, tmp); ++ tmp = fold_build2_loc (input_location, GT_EXPR, ++ logical_type_node, tmp, ++ build_zero_cst (TREE_TYPE (tmp))); ++ size = fold_build3_loc (input_location, COND_EXPR, ++ gfc_array_index_type, tmp, ctmp, size); ++ } ++ ++ offset = fold_build2_loc (input_location, MULT_EXPR, ++ gfc_array_index_type, ++ index, size); ++ + data = gfc_conv_descriptor_data_get (data); + ptr = fold_convert (pvoid_type_node, data); + ptr = fold_build_pointer_plus_loc (input_location, ptr, offset); +@@ -1258,7 +1283,8 @@ + + if (is_from_desc) + { +- from_ref = gfc_get_class_array_ref (index, from, from_data); ++ from_ref = gfc_get_class_array_ref (index, from, from_data, ++ unlimited); + vec_safe_push (args, from_ref); + } + else +@@ -1265,7 +1291,7 @@ + vec_safe_push (args, from_data); + + if (is_to_class) +- to_ref = gfc_get_class_array_ref (index, to, to_data); ++ to_ref = gfc_get_class_array_ref (index, to, to_data, unlimited); + else + { + tmp = gfc_conv_array_data (to); +@@ -4307,6 +4333,8 @@ if (expr->value.function.esym == NULL && expr->value.function.isym != NULL @@ -16011,7 +45296,7 @@ && expr->value.function.actual->expr->symtree && gfc_map_intrinsic_function (expr, mapping)) break; -@@ -4435,7 +4445,7 @@ +@@ -4435,7 +4463,7 @@ /* Reset the offset for the function call since the loop is zero based on the data pointer. Note that the temp comes first in the loop chain since it is added second. */ @@ -16020,7 +45305,7 @@ { tmp = loop.ss->loop_chain->info->data.array.descriptor; gfc_conv_descriptor_offset_set (&loop.pre, tmp, -@@ -4484,7 +4494,7 @@ +@@ -4484,7 +4512,7 @@ dimen = rse.ss->dimen; /* Skip the write-out loop for this case. */ @@ -16029,7 +45314,7 @@ goto class_array_fcn; /* Calculate the bounds of the scalarization. */ -@@ -4778,7 +4788,7 @@ +@@ -4778,7 +4806,7 @@ gcc_assert ((!comp && gfc_return_by_reference (sym) && sym->result->attr.dimension) || (comp && comp->attr.dimension) @@ -16038,7 +45323,7 @@ gcc_assert (se->loop != NULL); /* Access the previously obtained result. */ gfc_conv_tmp_array_ref (se); -@@ -5461,7 +5471,7 @@ +@@ -5461,7 +5489,7 @@ fsym ? fsym->attr.intent : INTENT_INOUT, fsym && fsym->attr.pointer); @@ -16047,7 +45332,7 @@ && fsym && fsym->ts.type == BT_DERIVED) /* See previous comment. For function actual argument, the write out is not needed so the intent is set as -@@ -6302,7 +6312,7 @@ +@@ -6302,7 +6330,7 @@ call the finalization function of the temporary. Note that the nullification of allocatable components needed by the result is done in gfc_trans_assignment_1. */ @@ -16056,7 +45341,7 @@ && se->ss && se->ss->loop) || gfc_is_alloc_class_scalar_function (expr)) && se->expr && GFC_CLASS_TYPE_P (TREE_TYPE (se->expr)) -@@ -6313,6 +6323,7 @@ +@@ -6313,6 +6341,7 @@ int n; if (se->ss && se->ss->loop) { @@ -16064,7 +45349,7 @@ se->expr = gfc_evaluate_now (se->expr, &se->ss->loop->pre); tmp = gfc_class_data_get (se->expr); info->descriptor = tmp; -@@ -6335,6 +6346,11 @@ +@@ -6335,6 +6364,11 @@ CLASS_DATA (expr->value.function.esym->result)->attr); } @@ -16076,7 +45361,7 @@ final_fndecl = gfc_class_vtab_final_get (se->expr); is_final = fold_build2_loc (input_location, NE_EXPR, logical_type_node, -@@ -6365,6 +6381,8 @@ +@@ -6365,6 +6399,8 @@ tmp = gfc_call_free (tmp); gfc_add_expr_to_block (&se->post, tmp); } @@ -16085,7 +45370,7 @@ expr->must_finalize = 0; } -@@ -8835,7 +8853,7 @@ +@@ -8835,7 +8871,7 @@ gfc_add_expr_to_block (&block, tmp); } } @@ -16094,7 +45379,7 @@ { gfc_add_block_to_block (&block, &lse->pre); gfc_add_block_to_block (&block, &rse->pre); -@@ -8871,7 +8889,7 @@ +@@ -8871,7 +8907,7 @@ gfc_symbol *sym = expr1->symtree->n.sym; /* Play it safe with class functions assigned to a derived type. */ @@ -16103,7 +45388,7 @@ && expr1->ts.type == BT_DERIVED) return true; -@@ -9878,7 +9896,7 @@ +@@ -9878,7 +9914,7 @@ rss = NULL; if ((expr1->ts.type == BT_DERIVED) @@ -16112,7 +45397,7 @@ || gfc_is_alloc_class_scalar_function (expr2))) expr2->must_finalize = 1; -@@ -10085,7 +10103,7 @@ +@@ -10085,7 +10121,7 @@ a scalar to array assignment, this is done in gfc_trans_scalar_assign as part of the deep copy. */ if (!scalar_to_array && expr1->ts.type == BT_DERIVED @@ -16134,6 +45419,15 @@ gfc_conv_expr (&se, expr); gfc_add_block_to_block (&outer_loop->pre, &se.pre); gfc_add_block_to_block (&outer_loop->post, &se.post); +@@ -3071,7 +3073,7 @@ + } + + /* Multiply by the stride. */ +- if (!integer_onep (stride)) ++ if (stride != NULL && !integer_onep (stride)) + index = fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type, + index, stride); + @@ -3102,7 +3104,7 @@ { if (expr == NULL @@ -16168,7 +45462,19 @@ } else if (class_ref == NULL) { -@@ -7125,7 +7129,11 @@ +@@ -3334,7 +3338,10 @@ + { + type = gfc_get_element_type (type); + tmp = TREE_OPERAND (cdecl, 0); +- tmp = gfc_get_class_array_ref (offset, tmp, NULL_TREE); ++ /* Note that the fourth argument in this call has been set false. ++ should any character dynamic types come this way, the 'len' ++ field of the unlimited object will not be used. */ ++ tmp = gfc_get_class_array_ref (offset, tmp, NULL_TREE, false); + tmp = fold_convert (build_pointer_type (type), tmp); + tmp = build_fold_indirect_ref_loc (input_location, tmp); + return tmp; +@@ -7125,7 +7132,11 @@ else { /* Otherwise make a new one. */ @@ -16181,7 +45487,52 @@ parmtype = gfc_get_array_type_bounds (parmtype, loop.dimen, codim, loop.from, loop.to, 0, GFC_ARRAY_UNKNOWN, false); -@@ -10007,7 +10015,7 @@ +@@ -8642,6 +8653,31 @@ + + gfc_init_block (&tmpblock); + ++ gfc_add_modify (&tmpblock, gfc_class_vptr_get (dcmp), ++ gfc_class_vptr_get (comp)); ++ ++ /* Copy the unlimited '_len' field. If it is greater than zero ++ (ie. a character(_len)), multiply it by size and use this ++ for the malloc call. */ ++ if (UNLIMITED_POLY (c)) ++ { ++ tree ctmp; ++ gfc_add_modify (&tmpblock, gfc_class_len_get (dcmp), ++ gfc_class_len_get (comp)); ++ ++ size = gfc_evaluate_now (size, &tmpblock); ++ tmp = gfc_class_len_get (comp); ++ ctmp = fold_build2_loc (input_location, MULT_EXPR, ++ size_type_node, size, ++ fold_convert (size_type_node, tmp)); ++ tmp = fold_build2_loc (input_location, GT_EXPR, ++ logical_type_node, tmp, ++ build_zero_cst (TREE_TYPE (tmp))); ++ size = fold_build3_loc (input_location, COND_EXPR, ++ size_type_node, tmp, ctmp, size); ++ size = gfc_evaluate_now (size, &tmpblock); ++ } ++ + /* Coarray component have to have the same allocation status and + shape/type-parameter/effective-type on the LHS and RHS of an + intrinsic assignment. Hence, we did not deallocated them - and +@@ -9096,6 +9132,12 @@ + if (expr2 && rss == gfc_ss_terminator) + return NULL_TREE; + ++ /* Ensure that the string length from the current scope is used. */ ++ if (expr2->ts.type == BT_CHARACTER ++ && expr2->expr_type == EXPR_FUNCTION ++ && !expr2->value.function.isym) ++ expr2->ts.u.cl->backend_decl = rss->info->string_length; ++ + gfc_start_block (&fblock); + + /* Since the lhs is allocatable, this must be a descriptor type. +@@ -10007,7 +10049,7 @@ if (!sym) sym = expr->symtree->n.sym; @@ -16352,7 +45703,7 @@ } char_len = NULL; -@@ -2918,7 +2997,24 @@ +@@ -2918,7 +2997,28 @@ if (seen_length == 0) cl->length = gfc_get_int_expr (gfc_default_integer_kind, NULL, 1); else @@ -16367,7 +45718,11 @@ + e = gfc_copy_expr (len); + gfc_reduce_init_expr (e); + if (e->expr_type == EXPR_CONSTANT) -+ gfc_replace_expr (len, e); ++ { ++ gfc_replace_expr (len, e); ++ if (mpz_cmp_si (len->value.integer, 0) < 0) ++ mpz_set_ui (len->value.integer, 0); ++ } + else + gfc_free_expr (e); + cl->length = len; @@ -16378,6 +45733,35 @@ ts->u.cl = cl; ts->kind = kind == 0 ? gfc_default_character_kind : kind; +@@ -8935,8 +9035,12 @@ + + if (!gensym->attr.generic && gensym->ts.type != BT_UNKNOWN) + { +- gfc_error ("Derived type name %qs at %C already has a basic type " +- "of %s", gensym->name, gfc_typename (&gensym->ts)); ++ if (gensym->ts.u.derived) ++ gfc_error ("Derived type name %qs at %C already has a basic type " ++ "of %s", gensym->name, gfc_typename (&gensym->ts)); ++ else ++ gfc_error ("Derived type name %qs at %C already has a basic type", ++ gensym->name); + return MATCH_ERROR; + } + +Index: gcc/fortran/array.c +=================================================================== +--- a/src/gcc/fortran/array.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/array.c (.../branches/gcc-7-branch) +@@ -2021,7 +2021,8 @@ + else + return true; + +- gcc_assert (current_length != -1); ++ if (current_length < 0) ++ current_length = 0; + + if (found_length == -1) + found_length = current_length; Index: gcc/fortran/trans-openmp.c =================================================================== --- a/src/gcc/fortran/trans-openmp.c (.../tags/gcc_7_3_0_release) @@ -16437,23 +45821,168 @@ +#define gfc_integer_4_kind 4 + - /* symbol.c */ - void gfc_clear_new_implicit (void); - bool gfc_add_new_implicit_range (int, int); -@@ -3145,7 +3147,7 @@ - gfc_component * gfc_get_proc_ptr_comp (gfc_expr *); - bool gfc_is_proc_ptr_comp (gfc_expr *); - bool gfc_is_alloc_class_scalar_function (gfc_expr *); --bool gfc_is_alloc_class_array_function (gfc_expr *); -+bool gfc_is_class_array_function (gfc_expr *); - - bool gfc_ref_this_image (gfc_ref *ref); - bool gfc_is_coindexed (gfc_expr *); -Index: gcc/fortran/ChangeLog -=================================================================== ---- a/src/gcc/fortran/ChangeLog (.../tags/gcc_7_3_0_release) -+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-7-branch) -@@ -1,3 +1,248 @@ + /* symbol.c */ + void gfc_clear_new_implicit (void); + bool gfc_add_new_implicit_range (int, int); +@@ -3145,7 +3147,7 @@ + gfc_component * gfc_get_proc_ptr_comp (gfc_expr *); + bool gfc_is_proc_ptr_comp (gfc_expr *); + bool gfc_is_alloc_class_scalar_function (gfc_expr *); +-bool gfc_is_alloc_class_array_function (gfc_expr *); ++bool gfc_is_class_array_function (gfc_expr *); + + bool gfc_ref_this_image (gfc_ref *ref); + bool gfc_is_coindexed (gfc_expr *); +Index: gcc/fortran/ChangeLog +=================================================================== +--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-7-branch) +@@ -1,3 +1,393 @@ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85543 ++ Backport from trunk ++ * resolve.c (update_current_proc_array_outer_dependency): Avoid NULL ++ pointer dereference. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85779 ++ Backport from trunk ++ * decl.c (gfc_match_derived_decl): Fix NULL point dereference. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85780 ++ Backport from trunk ++ * resolve.c (resolve_fl_procedure): Avoid NULL dereference. ++ ++2018-05-25 Steven G. Kargl ++ ++ PR fortran/85895 ++ Backport from trunk ++ * resolve.c (resolve_sync): Resolve expression before checking for ++ an error. ++ ++2018-05-20 Paul Thomas ++ ++ PR fortran/80657 ++ Backport from trunk ++ * resolve.c (flag_fn_result_spec): Use the 'sym' argument to ++ test for self refs to the function result in the character len ++ expression. If a self reference is found, emit an error and ++ return true. ++ (resolve_fntype): Use the function symbol in the calls to the ++ above. ++ ++2018-05-20 Paul Thomas ++ ++ PR fortran/82275 ++ Backport from trunk ++ * match.c (gfc_match_type_spec): Go through the array ref and ++ decrement 'rank' for every dimension that is an element. ++ ++2018-05-19 Paul Thomas ++ ++ PR fortran/82923 ++ PR fortran/66694 ++ PR fortran/82617 ++ Backport from trunk ++ * trans-array.c (gfc_alloc_allocatable_for_assignment): Set the ++ charlen backend_decl of the rhs expr to ss->info->string_length ++ so that the value in the current scope is used. ++ ++2018-05-16 Paul Thomas ++ ++ PR fortran/83149 ++ Backport from trunk ++ * trans-decl.c (gfc_finish_var_decl): Test sym->ns->proc_name ++ before accessing its components. ++ * trans-types.c (gfc_sym_type): If a character result has null ++ backend_decl, try the procedure symbol.. ++ ++2018-16-05 Paul Thomas ++ ++ PR fortran/83898 ++ Backport from trunk ++ * trans-stmt.c (trans_associate_var): Do not set cst_array_ctor ++ for characters. ++ ++2018-05-16 Paul Thomas ++ ++ PR fortran/84546 ++ Backport from trunk ++ * trans-array.c (structure_alloc_comps): Make sure that the ++ vptr is copied and that the unlimited polymorphic _len is used ++ to compute the size to be allocated. ++ (build_array_ref): Set the 'unlimited' argument false in the ++ call to gfc_get_class_array_ref. ++ * trans-expr.c (gfc_get_class_array_ref): If unlimited, use the ++ unlimited polymorphic _len for the offset to the element. ++ (gfc_copy_class_to_class): Set the new 'unlimited' argument. ++ * trans.h : Add the boolean 'unlimited' to the prototype. ++ ++2018-05-12 Steven G. Kargl ++ ++ PR fortran/85542 ++ Backport from trunk ++ * expr.c (check_inquiry): Avoid NULL pointer dereference. ++ ++2018-05-12 Paul Thomas ++ ++ PR fortran/68846 ++ PR fortran/70864 ++ Backport from trunk ++ * resolve.c (get_temp_from_expr): The temporary must not have ++ dummy or intent attributes. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/70870 ++ Backport from trunk ++ * data.c (gfc_assign_data_value): Check that a data object does ++ not also have default initialization. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/85521 ++ Backport from trunk ++ * array.c (gfc_resolve_character_array_constructor): Substrings ++ with upper bound smaller than lower bound are zero length strings. ++ ++2018-05-11 Steven G. Kargl ++ ++ PR fortran/85687 ++ Backport from trunk ++ * check.c (gfc_check_rank): Check that the argument is a data object. ++ ++2018-05-06 Andre Vehreschild ++ ++ PR fortran/85507 ++ Backport from trunk. ++ * dependency.c (gfc_dep_resolver): Revert looking at coarray dimension ++ introduced by r259385. ++ * trans-intrinsic.c (conv_caf_send): Always report a dependency for ++ same variables in coarray assignments. ++ ++2018-04-28 Andre Vehreschild ++ ++ PR fortran/81773 ++ PR fortran/83606 ++ Backport from trunk. ++ * dependency.c (gfc_dep_resolver): Coarray indexes are to be ignored ++ during dependency computation. They define no data dependency. ++ * trans-array.c (conv_array_index_offset): The stride can not be set ++ here, prevent fail. ++ * trans-intrinsic.c (conv_caf_send): Add creation of temporary array ++ for caf_get's result and copying to the array with vectorial ++ indexing. ++ ++2018-04-24 Steven G. Kargl ++ ++ PR fortran/85520 ++ * decl.c (gfc_match_char_spec): Check for negative length and set to 0. ++ +2018-03-28 Thomas Koenig + + PR fortran/85084 @@ -16702,10 +46231,53 @@ 2018-01-25 Release Manager * GCC 7.3.0 released. +Index: gcc/fortran/data.c +=================================================================== +--- a/src/gcc/fortran/data.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/data.c (.../branches/gcc-7-branch) +@@ -492,6 +492,15 @@ + } + else + { ++ if (lvalue->ts.type == BT_DERIVED ++ && gfc_has_default_initializer (lvalue->ts.u.derived)) ++ { ++ gfc_error ("Nonpointer object %qs with default initialization " ++ "shall not appear in a DATA statement at %L", ++ symbol->name, &lvalue->where); ++ return false; ++ } ++ + /* Overwriting an existing initializer is non-standard but usually only + provokes a warning from other compilers. */ + if (init != NULL) +Index: gcc/fortran/trans-stmt.c +=================================================================== +--- a/src/gcc/fortran/trans-stmt.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/trans-stmt.c (.../branches/gcc-7-branch) +@@ -1566,7 +1566,8 @@ + + desc = sym->backend_decl; + cst_array_ctor = e->expr_type == EXPR_ARRAY +- && gfc_constant_array_constructor_p (e->value.constructor); ++ && gfc_constant_array_constructor_p (e->value.constructor) ++ && e->ts.type != BT_CHARACTER; + + /* If association is to an expression, evaluate it and create temporary. + Otherwise, get descriptor of target for pointer assignment. */ Index: gcc/fortran/expr.c =================================================================== --- a/src/gcc/fortran/expr.c (.../tags/gcc_7_3_0_release) +++ b/src/gcc/fortran/expr.c (.../branches/gcc-7-branch) +@@ -2315,7 +2315,7 @@ + + /* Assumed character length will not reduce to a constant expression + with LEN, as required by the standard. */ +- if (i == 5 && not_restricted ++ if (i == 5 && not_restricted && ap->expr->symtree + && ap->expr->symtree->n.sym->ts.type == BT_CHARACTER + && (ap->expr->symtree->n.sym->ts.u.cl->length == NULL + || ap->expr->symtree->n.sym->ts.deferred)) @@ -4762,7 +4762,7 @@ /* Determine if an expression is a function with an allocatable class array result. */ @@ -16754,7 +46326,22 @@ { decl = gfc_add_field_to_struct_1 (fat_type, get_identifier ("token"), -@@ -2334,6 +2334,7 @@ +@@ -2168,6 +2168,14 @@ + if (sym->backend_decl && !sym->attr.function) + return TREE_TYPE (sym->backend_decl); + ++ if (sym->attr.result ++ && sym->ts.type == BT_CHARACTER ++ && sym->ts.u.cl->backend_decl == NULL_TREE ++ && sym->ns->proc_name ++ && sym->ns->proc_name->ts.u.cl ++ && sym->ns->proc_name->ts.u.cl->backend_decl != NULL_TREE) ++ sym->ts.u.cl->backend_decl = sym->ns->proc_name->ts.u.cl->backend_decl; ++ + if (sym->ts.type == BT_CHARACTER + && ((sym->attr.function && sym->attr.is_bind_c) + || (sym->attr.result +@@ -2334,6 +2342,7 @@ for (; to_cm; to_cm = to_cm->next, from_cm = from_cm->next) { to_cm->backend_decl = from_cm->backend_decl; @@ -16762,7 +46349,7 @@ if (from_cm->ts.type == BT_UNION) gfc_get_union_type (to_cm->ts.u.derived); else if (from_cm->ts.type == BT_DERIVED -@@ -2444,7 +2445,11 @@ +@@ -2444,7 +2453,11 @@ gfc_dt_list *dt; gfc_namespace *ns; tree tmp; @@ -16774,7 +46361,7 @@ if (derived->attr.unlimited_polymorphic || (flag_coarray == GFC_FCOARRAY_LIB && derived->from_intmod == INTMOD_ISO_FORTRAN_ENV -@@ -2636,7 +2641,9 @@ +@@ -2636,7 +2649,9 @@ field_type = build_pointer_type (tmp); } else if (c->ts.type == BT_DERIVED || c->ts.type == BT_CLASS) @@ -16785,7 +46372,7 @@ else { if (c->ts.type == BT_CHARACTER && !c->ts.deferred) -@@ -2715,19 +2722,6 @@ +@@ -2715,19 +2730,6 @@ gcc_assert (field); if (!c->backend_decl) c->backend_decl = field; @@ -16805,7 +46392,7 @@ } /* Now lay out the derived type, including the fields. */ -@@ -2753,6 +2747,24 @@ +@@ -2753,6 +2755,24 @@ copy_derived_types: @@ -16830,6 +46417,19 @@ for (dt = gfc_derived_types; dt; dt = dt->next) gfc_copy_dt_decls_ifequal (derived, dt->derived, false); +Index: gcc/fortran/trans.h +=================================================================== +--- a/src/gcc/fortran/trans.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/trans.h (.../branches/gcc-7-branch) +@@ -431,7 +431,7 @@ + void gfc_reset_vptr (stmtblock_t *, gfc_expr *); + void gfc_reset_len (stmtblock_t *, gfc_expr *); + tree gfc_get_vptr_from_expr (tree); +-tree gfc_get_class_array_ref (tree, tree, tree); ++tree gfc_get_class_array_ref (tree, tree, tree, bool); + tree gfc_copy_class_to_class (tree, tree, tree, bool); + bool gfc_add_finalizer_call (stmtblock_t *, gfc_expr *); + bool gfc_add_comp_finalizer_call (stmtblock_t *, tree, gfc_component *, bool); Index: gcc/fortran/frontend-passes.c =================================================================== --- a/src/gcc/fortran/frontend-passes.c (.../tags/gcc_7_3_0_release) @@ -16949,6 +46549,17 @@ continue; } +@@ -2903,8 +2906,8 @@ + + /* If SYM has references to outer arrays, so has the procedure calling + SYM. If SYM is a procedure pointer, we can assume the worst. */ +- if (sym->attr.array_outer_dependency +- || sym->attr.proc_pointer) ++ if ((sym->attr.array_outer_dependency || sym->attr.proc_pointer) ++ && gfc_current_ns->proc_name) + gfc_current_ns->proc_name->attr.array_outer_dependency = 1; + } + @@ -8495,7 +8498,7 @@ gfc_expr *loc_call; loc_call = gfc_get_expr (); @@ -17014,7 +46625,32 @@ write = dt->dt_io_kind->value.iokind == M_WRITE || dt->dt_io_kind->value.iokind == M_PRINT; -@@ -12225,6 +12228,19 @@ +@@ -9296,6 +9299,7 @@ + } + + /* Check STAT. */ ++ gfc_resolve_expr (code->expr2); + if (code->expr2 + && (code->expr2->ts.type != BT_INTEGER || code->expr2->rank != 0 + || code->expr2->expr_type != EXPR_VARIABLE)) +@@ -9303,6 +9307,7 @@ + &code->expr2->where); + + /* Check ERRMSG. */ ++ gfc_resolve_expr (code->expr3); + if (code->expr3 + && (code->expr3->ts.type != BT_CHARACTER || code->expr3->rank != 0 + || code->expr3->expr_type != EXPR_VARIABLE)) +@@ -10273,6 +10278,8 @@ + tmp->n.sym->attr.function = 0; + tmp->n.sym->attr.result = 0; + tmp->n.sym->attr.flavor = FL_VARIABLE; ++ tmp->n.sym->attr.dummy = 0; ++ tmp->n.sym->attr.intent = INTENT_UNKNOWN; + + if (as) + { +@@ -12225,6 +12232,19 @@ } } @@ -17034,7 +46670,16 @@ if (sym->attr.is_bind_c && sym->attr.is_c_interop != 1) { gfc_formal_arglist *curr_arg; -@@ -13799,6 +13815,31 @@ +@@ -12250,7 +12270,7 @@ + while (curr_arg != NULL) + { + /* Skip implicitly typed dummy args here. */ +- if (curr_arg->sym->attr.implicit_type == 0) ++ if (curr_arg->sym && curr_arg->sym->attr.implicit_type == 0) + if (!gfc_verify_c_interop_param (curr_arg->sym)) + /* If something is found to fail, record the fact so we + can mark the symbol for the procedure as not being +@@ -13799,6 +13819,31 @@ if (!success) return false; @@ -17066,11 +46711,69 @@ check_defined_assignments (sym); if (!sym->attr.defined_assign_comp && super_type) +@@ -15827,7 +15872,7 @@ + + static bool + flag_fn_result_spec (gfc_expr *expr, +- gfc_symbol *sym ATTRIBUTE_UNUSED, ++ gfc_symbol *sym, + int *f ATTRIBUTE_UNUSED) + { + gfc_namespace *ns; +@@ -15840,6 +15885,13 @@ + if (!ns->parent) + break; + ++ if (sym == s) ++ { ++ gfc_error ("Self reference in character length expression " ++ "for %qs at %L", sym->name, &expr->where); ++ return true; ++ } ++ + if (!s->fn_result_spec + && s->attr.flavor == FL_PARAMETER) + { +@@ -15922,7 +15974,7 @@ + } + + if (sym->ts.type == BT_CHARACTER) +- gfc_traverse_expr (sym->ts.u.cl->length, NULL, flag_fn_result_spec, 0); ++ gfc_traverse_expr (sym->ts.u.cl->length, sym, flag_fn_result_spec, 0); + } + + Index: gcc/fortran/trans-decl.c =================================================================== --- a/src/gcc/fortran/trans-decl.c (.../tags/gcc_7_3_0_release) +++ b/src/gcc/fortran/trans-decl.c (.../branches/gcc-7-branch) -@@ -4142,6 +4142,24 @@ +@@ -603,10 +603,12 @@ + function scope. */ + if (current_function_decl != NULL_TREE) + { +- if (sym->ns->proc_name->backend_decl == current_function_decl +- || sym->result == sym) ++ if (sym->ns->proc_name ++ && (sym->ns->proc_name->backend_decl == current_function_decl ++ || sym->result == sym)) + gfc_add_decl_to_function (decl); +- else if (sym->ns->proc_name->attr.flavor == FL_LABEL) ++ else if (sym->ns->proc_name ++ && sym->ns->proc_name->attr.flavor == FL_LABEL) + /* This is a BLOCK construct. */ + add_decl_as_local (decl); + else +@@ -698,7 +700,8 @@ + } + + /* Keep variables larger than max-stack-var-size off stack. */ +- if (!sym->ns->proc_name->attr.recursive && !sym->attr.automatic ++ if (!(sym->ns->proc_name && sym->ns->proc_name->attr.recursive) ++ && !sym->attr.automatic + && INTEGER_CST_P (DECL_SIZE_UNIT (decl)) + && !gfc_can_put_var_on_stack (DECL_SIZE_UNIT (decl)) + /* Put variable length auto array pointers always into stack. */ +@@ -4142,6 +4145,24 @@ return tmp; } @@ -17095,7 +46798,7 @@ /* Generate function entry and exit code, and add it to the function body. This includes: Allocation and initialization of array variables. -@@ -4251,7 +4269,22 @@ +@@ -4251,7 +4272,22 @@ else gcc_assert (flag_f2c && proc_sym->ts.type == BT_COMPLEX); } @@ -17118,7 +46821,7 @@ /* Initialize the INTENT(OUT) derived type dummy arguments. This should be done here so that the offsets and lbounds of arrays are available. */ -@@ -5981,23 +6014,6 @@ +@@ -5981,23 +6017,6 @@ } @@ -17174,6 +46877,15 @@ if (m == MATCH_NO) m = MATCH_YES; +@@ -2056,7 +2063,7 @@ + or list item in a type-list of an OpenMP reduction clause. Need to + differentiate REAL([KIND]=scalar-int-initialization-expr) from + REAL(A,[KIND]) and REAL(KIND,A). Logically, when this code was +- written the use of LOGICAL as a type-spec or intrinsic subprogram ++ written the use of LOGICAL as a type-spec or intrinsic subprogram + was overlooked. */ + + m = gfc_match (" %n", name); @@ -4404,8 +4411,8 @@ && (tail->expr->ref->type == REF_COMPONENT || tail->expr->ref->type == REF_ARRAY)); @@ -17185,6 +46897,48 @@ else b2 = sym && !(sym->attr.allocatable || sym->attr.pointer || sym->attr.proc_pointer); +@@ -5707,6 +5714,7 @@ + { + gfc_ref *ref; + gfc_symbol *assoc_sym; ++ int rank = 0; + + assoc_sym = associate->symtree->n.sym; + +@@ -5743,14 +5751,28 @@ + selector->rank = ref->u.ar.dimen; + else + selector->rank = 0; ++ ++ rank = selector->rank; + } + +- if (selector->rank) ++ if (rank) + { +- assoc_sym->attr.dimension = 1; +- assoc_sym->as = gfc_get_array_spec (); +- assoc_sym->as->rank = selector->rank; +- assoc_sym->as->type = AS_DEFERRED; ++ for (int i = 0; i < ref->u.ar.dimen + ref->u.ar.codimen; i++) ++ if (ref->u.ar.dimen_type[i] == DIMEN_ELEMENT ++ || (ref->u.ar.dimen_type[i] == DIMEN_UNKNOWN ++ && ref->u.ar.end[i] == NULL ++ && ref->u.ar.stride[i] == NULL)) ++ rank--; ++ ++ if (rank) ++ { ++ assoc_sym->attr.dimension = 1; ++ assoc_sym->as = gfc_get_array_spec (); ++ assoc_sym->as->rank = rank; ++ assoc_sym->as->type = AS_DEFERRED; ++ } ++ else ++ assoc_sym->as = NULL; + } + else + assoc_sym->as = NULL; Index: gcc/fortran/trans-io.c =================================================================== --- a/src/gcc/fortran/trans-io.c (.../tags/gcc_7_3_0_release) @@ -17294,6 +47048,24 @@ gfc_free_expr (op1); gfc_free_expr (op2); return result; +Index: gcc/fortran/check.c +=================================================================== +--- a/src/gcc/fortran/check.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/fortran/check.c (.../branches/gcc-7-branch) +@@ -3764,8 +3764,11 @@ + ? a->value.function.esym->result->attr.pointer + : a->symtree->n.sym->result->attr.pointer; + +- if (a->expr_type == EXPR_OP || a->expr_type == EXPR_NULL +- || a->expr_type == EXPR_COMPCALL|| a->expr_type == EXPR_PPC ++ if (a->expr_type == EXPR_OP ++ || a->expr_type == EXPR_NULL ++ || a->expr_type == EXPR_COMPCALL ++ || a->expr_type == EXPR_PPC ++ || a->ts.type == BT_PROCEDURE + || !is_variable) + { + gfc_error ("The argument of the RANK intrinsic at %L must be a data " Index: gcc/fortran/primary.c =================================================================== --- a/src/gcc/fortran/primary.c (.../tags/gcc_7_3_0_release) @@ -17327,7 +47099,165 @@ =================================================================== --- a/src/gcc/fortran/trans-intrinsic.c (.../tags/gcc_7_3_0_release) +++ b/src/gcc/fortran/trans-intrinsic.c (.../branches/gcc-7-branch) -@@ -5478,6 +5478,22 @@ +@@ -1860,7 +1860,7 @@ + + lhs_expr = code->ext.actual->expr; + rhs_expr = code->ext.actual->next->expr; +- may_require_tmp = gfc_check_dependency (lhs_expr, rhs_expr, false) == 0 ++ may_require_tmp = gfc_check_dependency (lhs_expr, rhs_expr, true) == 0 + ? boolean_false_node : boolean_true_node; + gfc_init_block (&block); + +@@ -1906,34 +1906,124 @@ + } + else + { +- /* If has_vector, pass descriptor for whole array and the +- vector bounds separately. */ +- gfc_array_ref *ar, ar2; +- bool has_vector = false; ++ bool has_vector = gfc_has_vector_subscript (lhs_expr); + +- if (gfc_is_coindexed (lhs_expr) && gfc_has_vector_subscript (lhs_expr)) ++ if (gfc_is_coindexed (lhs_expr) || !has_vector) + { +- has_vector = true; +- ar = gfc_find_array_ref (lhs_expr); +- ar2 = *ar; +- memset (ar, '\0', sizeof (*ar)); +- ar->as = ar2.as; +- ar->type = AR_FULL; ++ /* If has_vector, pass descriptor for whole array and the ++ vector bounds separately. */ ++ gfc_array_ref *ar, ar2; ++ bool has_tmp_lhs_array = false; ++ if (has_vector) ++ { ++ has_tmp_lhs_array = true; ++ ar = gfc_find_array_ref (lhs_expr); ++ ar2 = *ar; ++ memset (ar, '\0', sizeof (*ar)); ++ ar->as = ar2.as; ++ ar->type = AR_FULL; ++ } ++ lhs_se.want_pointer = 1; ++ gfc_conv_expr_descriptor (&lhs_se, lhs_expr); ++ /* Using gfc_conv_expr_descriptor, we only get the descriptor, but ++ that has the wrong type if component references are done. */ ++ lhs_type = gfc_typenode_for_spec (&lhs_expr->ts); ++ tmp = build_fold_indirect_ref_loc (input_location, lhs_se.expr); ++ gfc_add_modify (&lhs_se.pre, gfc_conv_descriptor_dtype (tmp), ++ gfc_get_dtype_rank_type (has_vector ? ar2.dimen ++ : lhs_expr->rank, ++ lhs_type)); ++ if (has_tmp_lhs_array) ++ { ++ vec = conv_caf_vector_subscript (&block, lhs_se.expr, &ar2); ++ *ar = ar2; ++ } + } +- lhs_se.want_pointer = 1; +- gfc_conv_expr_descriptor (&lhs_se, lhs_expr); +- /* Using gfc_conv_expr_descriptor, we only get the descriptor, but that +- has the wrong type if component references are done. */ +- lhs_type = gfc_typenode_for_spec (&lhs_expr->ts); +- tmp = build_fold_indirect_ref_loc (input_location, lhs_se.expr); +- gfc_add_modify (&lhs_se.pre, gfc_conv_descriptor_dtype (tmp), +- gfc_get_dtype_rank_type (has_vector ? ar2.dimen +- : lhs_expr->rank, +- lhs_type)); +- if (has_vector) ++ else + { +- vec = conv_caf_vector_subscript (&block, lhs_se.expr, &ar2); +- *ar = ar2; ++ /* Special casing for arr1 ([...]) = arr2[...], i.e. caf_get to ++ indexed array expression. This is rewritten to: ++ ++ tmp_array = arr2[...] ++ arr1 ([...]) = tmp_array ++ ++ because using the standard gfc_conv_expr (lhs_expr) did the ++ assignment with lhs and rhs exchanged. */ ++ ++ gfc_ss *lss_for_tmparray, *lss_real; ++ gfc_loopinfo loop; ++ gfc_se se; ++ stmtblock_t body; ++ tree tmparr_desc, src; ++ tree index = gfc_index_zero_node; ++ tree stride = gfc_index_zero_node; ++ int n; ++ ++ /* Walk both sides of the assignment, once to get the shape of the ++ temporary array to create right. */ ++ lss_for_tmparray = gfc_walk_expr (lhs_expr); ++ /* And a second time to be able to create an assignment of the ++ temporary to the lhs_expr. gfc_trans_create_temp_array replaces ++ the tree in the descriptor with the one for the temporary ++ array. */ ++ lss_real = gfc_walk_expr (lhs_expr); ++ gfc_init_loopinfo (&loop); ++ gfc_add_ss_to_loop (&loop, lss_for_tmparray); ++ gfc_add_ss_to_loop (&loop, lss_real); ++ gfc_conv_ss_startstride (&loop); ++ gfc_conv_loop_setup (&loop, &lhs_expr->where); ++ lhs_type = gfc_typenode_for_spec (&lhs_expr->ts); ++ gfc_trans_create_temp_array (&lhs_se.pre, &lhs_se.post, ++ lss_for_tmparray, lhs_type, NULL_TREE, ++ false, true, false, ++ &lhs_expr->where); ++ tmparr_desc = lss_for_tmparray->info->data.array.descriptor; ++ gfc_start_scalarized_body (&loop, &body); ++ gfc_init_se (&se, NULL); ++ gfc_copy_loopinfo_to_se (&se, &loop); ++ se.ss = lss_real; ++ gfc_conv_expr (&se, lhs_expr); ++ gfc_add_block_to_block (&body, &se.pre); ++ ++ /* Walk over all indexes of the loop. */ ++ for (n = loop.dimen - 1; n > 0; --n) ++ { ++ tmp = loop.loopvar[n]; ++ tmp = fold_build2_loc (input_location, MINUS_EXPR, ++ gfc_array_index_type, tmp, loop.from[n]); ++ tmp = fold_build2_loc (input_location, PLUS_EXPR, ++ gfc_array_index_type, tmp, index); ++ ++ stride = fold_build2_loc (input_location, MINUS_EXPR, ++ gfc_array_index_type, ++ loop.to[n - 1], loop.from[n - 1]); ++ stride = fold_build2_loc (input_location, PLUS_EXPR, ++ gfc_array_index_type, ++ stride, gfc_index_one_node); ++ ++ index = fold_build2_loc (input_location, MULT_EXPR, ++ gfc_array_index_type, tmp, stride); ++ } ++ ++ index = fold_build2_loc (input_location, MINUS_EXPR, ++ gfc_array_index_type, ++ index, loop.from[0]); ++ ++ index = fold_build2_loc (input_location, PLUS_EXPR, ++ gfc_array_index_type, ++ loop.loopvar[0], index); ++ ++ src = build_fold_indirect_ref (gfc_conv_array_data (tmparr_desc)); ++ src = gfc_build_array_ref (src, index, NULL); ++ /* Now create the assignment of lhs_expr = tmp_array. */ ++ gfc_add_modify (&body, se.expr, src); ++ gfc_add_block_to_block (&body, &se.post); ++ lhs_se.expr = gfc_build_addr_expr (NULL_TREE, tmparr_desc); ++ gfc_trans_scalarizing_loops (&loop, &body); ++ gfc_add_block_to_block (&loop.pre, &loop.post); ++ gfc_add_expr_to_block (&lhs_se.post, gfc_finish_block (&loop.pre)); ++ gfc_free_ss (lss_for_tmparray); ++ gfc_free_ss (lss_real); + } + } + +@@ -5478,6 +5568,22 @@ } static void @@ -17350,7 +47280,7 @@ gfc_conv_intrinsic_shift (gfc_se * se, gfc_expr * expr, bool right_shift, bool arithmetic) { -@@ -6601,7 +6617,7 @@ +@@ -6601,7 +6707,7 @@ gfc_add_class_array_ref (actual->expr); argse.data_not_needed = 1; @@ -17359,7 +47289,7 @@ { /* For functions that return a class array conv_expr_descriptor is not able to get the descriptor right. Therefore this special case. */ -@@ -8589,6 +8605,10 @@ +@@ -8589,6 +8695,10 @@ conv_generic_with_optional_char_arg (se, expr, 1, 3); break; @@ -17456,6 +47386,28 @@ extern bool stmt_could_throw_p (gimple *); extern bool tree_could_throw_p (tree); extern bool stmt_can_throw_external (gimple *); +Index: gcc/ipa-devirt.c +=================================================================== +--- a/src/gcc/ipa-devirt.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ipa-devirt.c (.../branches/gcc-7-branch) +@@ -1577,8 +1577,15 @@ + "in another translation unit")); + return false; + } +- gcc_assert (DECL_NONADDRESSABLE_P (f1) +- == DECL_NONADDRESSABLE_P (f2)); ++ if (DECL_BIT_FIELD (f1) != DECL_BIT_FIELD (f2)) ++ { ++ warn_odr (t1, t2, f1, f2, warn, warned, ++ G_("one field is bitfield while other is not")); ++ return false; ++ } ++ else ++ gcc_assert (DECL_NONADDRESSABLE_P (f1) ++ == DECL_NONADDRESSABLE_P (f2)); + } + + /* If one aggregate has more fields than the other, they Index: gcc/configure.ac =================================================================== --- a/src/gcc/configure.ac (.../tags/gcc_7_3_0_release) @@ -17608,6 +47560,41 @@ { if (dump_enabled_p ()) dump_printf_loc (MSG_NOTE, vect_location, +Index: gcc/gimplify.c +=================================================================== +--- a/src/gcc/gimplify.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/gimplify.c (.../branches/gcc-7-branch) +@@ -1125,10 +1125,6 @@ + asan_poison_variable (tree decl, bool poison, gimple_stmt_iterator *it, + bool before) + { +- /* When within an OMP context, do not emit ASAN_MARK internal fns. */ +- if (gimplify_omp_ctxp) +- return; +- + tree unit_size = DECL_SIZE_UNIT (decl); + tree base = build_fold_addr_expr (decl); + +@@ -1640,7 +1636,8 @@ + && TREE_ADDRESSABLE (decl) + && !TREE_STATIC (decl) + && !DECL_HAS_VALUE_EXPR_P (decl) +- && dbg_cnt (asan_use_after_scope)) ++ && dbg_cnt (asan_use_after_scope) ++ && !gimplify_omp_ctxp) + { + asan_poisoned_variables->add (decl); + asan_poison_variable (decl, false, seq_p); +@@ -6458,7 +6455,8 @@ + clobber = build2 (MODIFY_EXPR, TREE_TYPE (temp), temp, clobber); + gimple_push_cleanup (temp, clobber, false, pre_p, true); + } +- if (asan_poisoned_variables && dbg_cnt (asan_use_after_scope)) ++ if (asan_poisoned_variables && dbg_cnt (asan_use_after_scope) ++ && !gimplify_omp_ctxp) + { + tree asan_cleanup = build_asan_poison_call_expr (temp); + if (asan_cleanup) Index: gcc/lra-constraints.c =================================================================== --- a/src/gcc/lra-constraints.c (.../tags/gcc_7_3_0_release) @@ -17698,6 +47685,51 @@ if (!target) target = gen_reg_rtx (word_mode); +Index: gcc/tree-dfa.c +=================================================================== +--- a/src/gcc/tree-dfa.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/tree-dfa.c (.../branches/gcc-7-branch) +@@ -438,7 +438,7 @@ + referenced the last field of a struct or a union member + then we have to adjust maxsize by the padding at the end + of our field. */ +- if (seen_variable_array_ref && maxsize != -1) ++ if (seen_variable_array_ref) + { + tree stype = TREE_TYPE (TREE_OPERAND (exp, 0)); + tree next = DECL_CHAIN (field); +@@ -454,7 +454,7 @@ + || ssize == NULL + || TREE_CODE (ssize) != INTEGER_CST) + maxsize = -1; +- else ++ else if (maxsize != -1) + { + offset_int tem = (wi::to_offset (ssize) + - wi::to_offset (fsize)); +@@ -463,6 +463,11 @@ + maxsize += tem; + } + } ++ /* An component ref with an adjacent field up in the ++ structure hierarchy constrains the size of any variable ++ array ref lower in the access hierarchy. */ ++ else ++ seen_variable_array_ref = false; + } + } + else +@@ -617,7 +622,9 @@ + + if (DECL_P (exp)) + { +- if (flag_unconstrained_commons && VAR_P (exp) && DECL_COMMON (exp)) ++ if (VAR_P (exp) ++ && ((flag_unconstrained_commons && DECL_COMMON (exp)) ++ || (DECL_EXTERNAL (exp) && seen_variable_array_ref))) + { + tree sz_tree = TYPE_SIZE (TREE_TYPE (exp)); + /* If size is unknown, or we have read to the end, assume there Index: gcc/simplify-rtx.c =================================================================== --- a/src/gcc/simplify-rtx.c (.../tags/gcc_7_3_0_release) @@ -17905,7 +47937,33 @@ =================================================================== --- a/src/gcc/lto/ChangeLog (.../tags/gcc_7_3_0_release) +++ b/src/gcc/lto/ChangeLog (.../branches/gcc-7-branch) -@@ -1,3 +1,76 @@ +@@ -1,3 +1,102 @@ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-19 Martin Liska ++ ++ * lto-symtab.c (lto_symtab_resolve_symbols): Do not bail out ++ for multiple PREVAILING_DEF_IRONLY for common symbols. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-10 Martin Liska ++ ++ PR lto/85248 ++ * lto-symtab.c (lto_symtab_merge_p): Do not check for ++ TREE_VALUES of error attributes. ++ ++2018-04-24 Martin Liska ++ ++ Backport from mainline ++ 2018-04-10 Richard Biener ++ Martin Liska ++ ++ PR lto/85248 ++ * lto-symtab.c (lto_symtab_merge_p): Handle noreturn attribute. ++ +2018-03-06 Martin Liska + + Backport from mainline @@ -18073,6 +48131,49 @@ return true; } +@@ -438,9 +465,14 @@ + /* If the chain is already resolved there is nothing else to do. */ + if (prevailing) + { +- /* Assert it's the only one. */ ++ /* Assert it's the only one. ++ GCC should silence multiple PREVAILING_DEF_IRONLY defs error ++ on COMMON symbols since it isn't error. ++ See: https://sourceware.org/bugzilla/show_bug.cgi?id=23079. */ + for (e = prevailing->next_sharing_asm_name; e; e = e->next_sharing_asm_name) + if (lto_symtab_symbol_p (e) ++ && !DECL_COMMON (prevailing->decl) ++ && !DECL_COMMON (e->decl) + && (e->resolution == LDPR_PREVAILING_DEF_IRONLY + || e->resolution == LDPR_PREVAILING_DEF_IRONLY_EXP + || e->resolution == LDPR_PREVAILING_DEF)) +@@ -544,6 +576,9 @@ + return false; + } + } ++ ++ /* FIXME: after MPX is removed, use flags_from_decl_or_type ++ function instead. PR lto/85248. */ + if (DECL_ATTRIBUTES (prevailing) != DECL_ATTRIBUTES (decl)) + { + tree prev_attr = lookup_attribute ("error", DECL_ATTRIBUTES (prevailing)); +@@ -571,6 +606,16 @@ + "warning attribute mismatch\n"); + return false; + } ++ ++ prev_attr = lookup_attribute ("noreturn", DECL_ATTRIBUTES (prevailing)); ++ attr = lookup_attribute ("noreturn", DECL_ATTRIBUTES (decl)); ++ if ((prev_attr == NULL) != (attr == NULL)) ++ { ++ if (symtab->dump_file) ++ fprintf (symtab->dump_file, "Not merging decls; " ++ "noreturn attribute mismatch\n"); ++ return false; ++ } + } + return true; + } Index: gcc/ipa-prop.c =================================================================== --- a/src/gcc/ipa-prop.c (.../tags/gcc_7_3_0_release) @@ -20824,7 +50925,30 @@ =================================================================== --- a/src/gcc/config/i386/sse.md (.../tags/gcc_7_3_0_release) +++ b/src/gcc/config/i386/sse.md (.../branches/gcc-7-branch) -@@ -9938,11 +9938,11 @@ +@@ -1134,11 +1134,8 @@ + operands[2])); + } + else if (memory_operand (operands[1], DImode)) +- { +- rtx tmp = gen_reg_rtx (V2DImode); +- emit_insn (gen_vec_concatv2di (tmp, operands[1], const0_rtx)); +- emit_move_insn (operands[0], gen_lowpart (V4SImode, tmp)); +- } ++ emit_insn (gen_vec_concatv2di (gen_lowpart (V2DImode, operands[0]), ++ operands[1], const0_rtx)); + else + gcc_unreachable (); + DONE; +@@ -4398,7 +4395,7 @@ + (match_operand:VF_128 1 "register_operand" "v") + (const_int 1)))] + "TARGET_AVX512F && TARGET_64BIT" +- "vcvtusi2\t{%2, %1, %0|%0, %1, %2}" ++ "vcvtusi2{q}\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseicvt") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -9938,11 +9935,11 @@ && ix86_binary_operator_ok (, mode, operands)" "@ p\t{%2, %0|%0, %2} @@ -20838,7 +50962,7 @@ (set_attr "mode" "")]) (define_insn "*3_mask" -@@ -11822,7 +11822,7 @@ +@@ -11822,7 +11819,7 @@ (eq_attr "mode" "TI")) (const_string "1") (const_string "*"))) @@ -22028,6 +52152,22 @@ { P8V_BUILTIN_VEC_VADDECUQ, P8V_BUILTIN_VADDECUQ, RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI }, +@@ -6088,6 +6075,15 @@ + stmt = build_binary_op (loc, PLUS_EXPR, stmt, arg2, 1); + stmt = build_indirect_ref (loc, stmt, RO_NULL); + ++ /* PR83660: We mark this as having side effects so that ++ downstream in fold_build_cleanup_point_expr () it will get a ++ CLEANUP_POINT_EXPR. If it does not we can run into an ICE ++ later in gimplify_cleanup_point_expr (). Potentially this ++ causes missed optimization because the actually is no side ++ effect. */ ++ if (c_dialect_cxx ()) ++ TREE_SIDE_EFFECTS (stmt) = 1; ++ + return stmt; + } + Index: gcc/config/rs6000/rs6000.c =================================================================== --- a/src/gcc/config/rs6000/rs6000.c (.../tags/gcc_7_3_0_release) @@ -22039,7 +52179,15 @@ Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. -@@ -3890,6 +3890,7 @@ +@@ -1372,6 +1372,7 @@ + int, int, int *); + static bool rs6000_mode_dependent_address (const_rtx); + static bool rs6000_debug_mode_dependent_address (const_rtx); ++static bool rs6000_offsettable_memref_p (rtx, machine_mode, bool); + static enum reg_class rs6000_secondary_reload_class (enum reg_class, + machine_mode, rtx); + static enum reg_class rs6000_debug_secondary_reload_class (enum reg_class, +@@ -3890,6 +3891,7 @@ | ((TARGET_P9_MISC) ? RS6000_BTM_P9_MISC : 0) | ((TARGET_MODULO) ? RS6000_BTM_MODULO : 0) | ((TARGET_64BIT) ? RS6000_BTM_64BIT : 0) @@ -22047,7 +52195,7 @@ | ((TARGET_CRYPTO) ? RS6000_BTM_CRYPTO : 0) | ((TARGET_HTM) ? RS6000_BTM_HTM : 0) | ((TARGET_DFP) ? RS6000_BTM_DFP : 0) -@@ -5563,6 +5564,11 @@ +@@ -5563,6 +5565,11 @@ if (TARGET_LINK_STACK == -1) SET_TARGET_LINK_STACK (rs6000_cpu == PROCESSOR_PPC476 && flag_pic); @@ -22059,20 +52207,45 @@ return ret; } -@@ -8558,6 +8564,12 @@ +@@ -8558,6 +8565,10 @@ int extra; rtx addr = XEXP (op, 0); -+ /* Don't allow altivec type addresses like (mem (and (plus ...))). -+ See PR target/84279. */ -+ -+ if (GET_CODE (addr) == AND) ++ /* Don't allow non-offsettable addresses. See PRs 83969 and 84279. */ ++ if (!rs6000_offsettable_memref_p (op, mode, false)) + return false; + op = address_offset (addr); if (op == NULL_RTX) return true; -@@ -15087,12 +15099,12 @@ +@@ -10328,7 +10339,7 @@ + in 32-bit mode, that the recog predicate rejects. */ + + static bool +-rs6000_offsettable_memref_p (rtx op, machine_mode reg_mode) ++rs6000_offsettable_memref_p (rtx op, machine_mode reg_mode, bool strict) + { + bool worst_case; + +@@ -10336,7 +10347,7 @@ + return false; + + /* First mimic offsettable_memref_p. */ +- if (offsettable_address_p (true, GET_MODE (op), XEXP (op, 0))) ++ if (offsettable_address_p (strict, GET_MODE (op), XEXP (op, 0))) + return true; + + /* offsettable_address_p invokes rs6000_mode_dependent_address, but +@@ -10350,7 +10361,7 @@ + worst_case = ((TARGET_POWERPC64 && GET_MODE_CLASS (reg_mode) == MODE_INT) + || GET_MODE_SIZE (reg_mode) == 4); + return rs6000_legitimate_offset_address_p (GET_MODE (op), XEXP (op, 0), +- true, worst_case); ++ strict, worst_case); + } + + /* Determine the reassociation width to be used in reassociate_bb. +@@ -15087,12 +15098,12 @@ /* For LVX, express the RTL accurately by ANDing the address with -16. LVXL and LVE*X expand to use UNSPECs to hide their special behavior, so the raw address is fine. */ @@ -22091,7 +52264,7 @@ { rtx rawaddr; if (op0 == const0_rtx) -@@ -15278,12 +15290,12 @@ +@@ -15278,12 +15289,12 @@ /* For STVX, express the RTL accurately by ANDing the address with -16. STVXL and STVE*X expand to use UNSPECs to hide their special behavior, so the raw address is fine. */ @@ -22110,7 +52283,7 @@ { if (op1 == const0_rtx) rawaddr = op2; -@@ -16184,18 +16196,18 @@ +@@ -16184,18 +16195,18 @@ switch (fcode) { case ALTIVEC_BUILTIN_STVX_V2DF: @@ -22135,7 +52308,7 @@ case ALTIVEC_BUILTIN_STVEBX: return altivec_expand_stv_builtin (CODE_FOR_altivec_stvebx, exp); case ALTIVEC_BUILTIN_STVEHX: -@@ -16374,6 +16386,7 @@ +@@ -16374,6 +16385,7 @@ case P9V_BUILTIN_VEXTRACT4B: case P9V_BUILTIN_VEC_VEXTRACT4B: @@ -22143,7 +52316,7 @@ arg1 = CALL_EXPR_ARG (exp, 1); STRIP_NOPS (arg1); -@@ -16388,9 +16401,7 @@ +@@ -16388,9 +16400,7 @@ } break; @@ -22154,7 +52327,7 @@ arg2 = CALL_EXPR_ARG (exp, 2); STRIP_NOPS (arg2); -@@ -16400,7 +16411,7 @@ +@@ -16400,7 +16410,7 @@ if (TREE_CODE (arg2) != INTEGER_CST || TREE_INT_CST_LOW (arg2) > 12) { @@ -22163,7 +52336,7 @@ return expand_call (exp, target, false); } break; -@@ -16460,23 +16471,23 @@ +@@ -16460,23 +16470,23 @@ return altivec_expand_lv_builtin (CODE_FOR_altivec_lvxl_v16qi, exp, target, false); case ALTIVEC_BUILTIN_LVX_V2DF: @@ -22193,7 +52366,7 @@ exp, target, false); case ALTIVEC_BUILTIN_LVLX: return altivec_expand_lv_builtin (CODE_FOR_altivec_lvlx, -@@ -17040,6 +17051,11 @@ +@@ -17040,6 +17050,11 @@ error ("Builtin function %s requires the -mhard-float option", name); else if ((fnmask & RS6000_BTM_FLOAT128) != 0) error ("Builtin function %s requires the -mfloat128 option", name); @@ -22205,7 +52378,7 @@ else error ("Builtin function %s is not supported with the current options", name); -@@ -18804,9 +18820,7 @@ +@@ -18804,9 +18819,7 @@ case CRYPTO_BUILTIN_VPMSUM: case MISC_BUILTIN_ADDG6S: case MISC_BUILTIN_DIVWEU: @@ -22215,7 +52388,16 @@ h.uns_p[0] = 1; h.uns_p[1] = 1; h.uns_p[2] = 1; -@@ -23980,7 +23994,7 @@ +@@ -23267,7 +23280,7 @@ + } + + else if (TARGET_ALTIVEC && src_vmx_p +- && altivec_indexed_or_indirect_operand (src, mode)) ++ && altivec_indexed_or_indirect_operand (dest, mode)) + return "stvx %1,%y0"; + + else if (TARGET_VSX && src_vsx_p) +@@ -23980,7 +23993,7 @@ /* Fall through. Must be [reg+reg]. */ } @@ -22224,7 +52406,7 @@ && GET_CODE (tmp) == AND && GET_CODE (XEXP (tmp, 1)) == CONST_INT && INTVAL (XEXP (tmp, 1)) == -16) -@@ -25907,49 +25921,6 @@ +@@ -25907,49 +25920,6 @@ emit_move_insn (dest, target); } @@ -22274,7 +52456,34 @@ /* A subroutine of the atomic operation splitters. Jump to LABEL if COND is true. Mark the jump as unlikely to be taken. */ -@@ -31988,8 +31959,9 @@ +@@ -26588,7 +26558,7 @@ + emit_insn (gen_add3_insn (breg, breg, delta_rtx)); + src = replace_equiv_address (src, breg); + } +- else if (! rs6000_offsettable_memref_p (src, reg_mode)) ++ else if (! rs6000_offsettable_memref_p (src, reg_mode, true)) + { + if (GET_CODE (XEXP (src, 0)) == PRE_MODIFY) + { +@@ -26655,7 +26625,7 @@ + emit_insn (gen_add3_insn (breg, breg, delta_rtx)); + dst = replace_equiv_address (dst, breg); + } +- else if (!rs6000_offsettable_memref_p (dst, reg_mode) ++ else if (!rs6000_offsettable_memref_p (dst, reg_mode, true) + && GET_CODE (XEXP (dst, 0)) != LO_SUM) + { + if (GET_CODE (XEXP (dst, 0)) == PRE_MODIFY) +@@ -26694,7 +26664,7 @@ + } + } + else if (GET_CODE (XEXP (dst, 0)) != LO_SUM) +- gcc_assert (rs6000_offsettable_memref_p (dst, reg_mode)); ++ gcc_assert (rs6000_offsettable_memref_p (dst, reg_mode, true)); + } + + for (i = 0; i < nregs; i++) +@@ -31988,8 +31958,9 @@ emit_insn_after (pat, get_insns ()); pop_topmost_sequence (); } @@ -22286,7 +52495,7 @@ } return virtual_incoming_args_rtx; } -@@ -35647,6 +35619,11 @@ +@@ -35647,6 +35618,11 @@ } else { @@ -22298,7 +52507,7 @@ HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (decl)); if (size > 0 -@@ -39167,6 +39144,7 @@ +@@ -39167,6 +39143,7 @@ { "hard-dfp", RS6000_BTM_DFP, false, false }, { "hard-float", RS6000_BTM_HARD_FLOAT, false, false }, { "long-double-128", RS6000_BTM_LDBL128, false, false }, @@ -22306,7 +52515,7 @@ { "float128", RS6000_BTM_FLOAT128, false, false }, }; -@@ -41657,6 +41635,38 @@ +@@ -41657,6 +41634,38 @@ return 1; } @@ -22345,7 +52554,7 @@ /* Return TRUE if insn is a swap fed by a load from the constant pool. */ static bool const_load_sequence_p (swap_web_entry *insn_entry, rtx insn) -@@ -41860,6 +41870,7 @@ +@@ -41860,6 +41869,7 @@ { default: break; @@ -22353,7 +52562,7 @@ case UNSPEC_VMRGH_DIRECT: case UNSPEC_VMRGL_DIRECT: case UNSPEC_VPACK_SIGN_SIGN_SAT: -@@ -41871,6 +41882,7 @@ +@@ -41871,6 +41881,7 @@ case UNSPEC_VPERM_UNS: case UNSPEC_VPERMHI: case UNSPEC_VPERMSI: @@ -22361,7 +52570,7 @@ case UNSPEC_VPKPX: case UNSPEC_VSLDOI: case UNSPEC_VSLO: -@@ -43129,6 +43141,14 @@ +@@ -43129,6 +43140,14 @@ && !insn_entry[i].is_swap && !insn_entry[i].is_swappable) root->web_not_optimizable = 1; @@ -23232,6 +53441,24 @@ ;; Here, we use (set (reg) (unspec:DI [(fix:SI ...)] UNSPEC_FCTIWZ)) ;; rather than (set (subreg:SI (reg)) (fix:SI ...)) ;; because the first makes it clear that operand 0 is not live +@@ -8678,7 +8640,7 @@ + ;; FPR->GPR GPR->FPR VSX->GPR GPR->VSX + (define_insn "*movdi_internal64" + [(set (match_operand:DI 0 "nonimmediate_operand" +- "=Y, r, r, r, r, r, ++ "=YZ, r, r, r, r, r, + ^m, ^d, ^d, ^wY, $Z, $wb, + $wv, ^wi, *wo, *wo, *wv, *wi, + *wi, *wv, *wv, r, *h, *h, +@@ -8685,7 +8647,7 @@ + ?*r, ?*wg, ?*r, ?*wj") + + (match_operand:DI 1 "input_operand" +- "r, Y, r, I, L, nF, ++ "r, YZ, r, I, L, nF, + d, m, d, wb, wv, wY, + Z, wi, Oj, wM, OjwM, Oj, + wM, wS, wB, *h, r, 0, @@ -14419,14 +14381,10 @@ (set_attr "length" "4")]) @@ -23962,6 +54189,201 @@ 20, 0, 0) /* The maximum number of iterations of a loop the brute force algorithm +Index: gcc/ipa-icf.c +=================================================================== +--- a/src/gcc/ipa-icf.c (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ipa-icf.c (.../branches/gcc-7-branch) +@@ -2132,23 +2132,6 @@ + return m_hash; + } + +-/* Set all points-to UIDs of aliases pointing to node N as UID. */ +- +-static void +-set_alias_uids (symtab_node *n, int uid) +-{ +- ipa_ref *ref; +- FOR_EACH_ALIAS (n, ref) +- { +- if (dump_file) +- fprintf (dump_file, " Setting points-to UID of [%s] as %d\n", +- xstrdup_for_dump (ref->referring->asm_name ()), uid); +- +- SET_DECL_PT_UID (ref->referring->decl, uid); +- set_alias_uids (ref->referring, uid); +- } +-} +- + /* Merges instance with an ALIAS_ITEM, where alias, thunk or redirection can + be applied. */ + +@@ -2275,7 +2258,6 @@ + if (dump_file) + fprintf (dump_file, "Unified; Variable alias has been created.\n"); + +- set_alias_uids (original, DECL_UID (original->decl)); + return true; + } + } +@@ -2295,7 +2277,7 @@ + + sem_item_optimizer::sem_item_optimizer () + : worklist (0), m_classes (0), m_classes_count (0), m_cgraph_node_hooks (NULL), +- m_varpool_node_hooks (NULL) ++ m_varpool_node_hooks (NULL), m_merged_variables () + { + m_items.create (0); + bitmap_obstack_initialize (&m_bmstack); +@@ -2320,6 +2302,7 @@ + m_items.release (); + + bitmap_obstack_release (&m_bmstack); ++ m_merged_variables.release (); + } + + /* Write IPA ICF summary for symbols. */ +@@ -3571,13 +3554,103 @@ + } + + if (dbg_cnt (merged_ipa_icf)) +- merged_p |= source->merge (alias); ++ { ++ bool merged = source->merge (alias); ++ merged_p |= merged; ++ ++ if (merged && alias->type == VAR) ++ { ++ symtab_pair p = symtab_pair (source->node, alias->node); ++ m_merged_variables.safe_push (p); ++ } ++ } + } + } + ++ if (!m_merged_variables.is_empty ()) ++ fixup_points_to_sets (); ++ + return merged_p; + } + ++/* Fixup points to set PT. */ ++ ++void ++sem_item_optimizer::fixup_pt_set (struct pt_solution *pt) ++{ ++ if (pt->vars == NULL) ++ return; ++ ++ unsigned i; ++ symtab_pair *item; ++ FOR_EACH_VEC_ELT (m_merged_variables, i, item) ++ if (bitmap_bit_p (pt->vars, DECL_UID (item->second->decl))) ++ bitmap_set_bit (pt->vars, DECL_UID (item->first->decl)); ++} ++ ++/* Set all points-to UIDs of aliases pointing to node N as UID. */ ++ ++static void ++set_alias_uids (symtab_node *n, int uid) ++{ ++ ipa_ref *ref; ++ FOR_EACH_ALIAS (n, ref) ++ { ++ if (dump_file) ++ fprintf (dump_file, " Setting points-to UID of [%s] as %d\n", ++ xstrdup_for_dump (ref->referring->asm_name ()), uid); ++ ++ SET_DECL_PT_UID (ref->referring->decl, uid); ++ set_alias_uids (ref->referring, uid); ++ } ++} ++ ++/* Fixup points to analysis info. */ ++ ++void ++sem_item_optimizer::fixup_points_to_sets (void) ++{ ++ /* TODO: remove in GCC 9 and trigger PTA re-creation after IPA passes. */ ++ cgraph_node *cnode; ++ ++ FOR_EACH_DEFINED_FUNCTION (cnode) ++ { ++ tree name; ++ unsigned i; ++ function *fn = DECL_STRUCT_FUNCTION (cnode->decl); ++ if (!gimple_in_ssa_p (fn)) ++ continue; ++ ++ FOR_EACH_SSA_NAME (i, name, fn) ++ if (POINTER_TYPE_P (TREE_TYPE (name)) ++ && SSA_NAME_PTR_INFO (name)) ++ fixup_pt_set (&SSA_NAME_PTR_INFO (name)->pt); ++ fixup_pt_set (&fn->gimple_df->escaped); ++ ++ /* The above get's us to 99% I guess, at least catching the ++ address compares. Below also gets us aliasing correct ++ but as said we're giving leeway to the situation with ++ readonly vars anyway, so ... */ ++ basic_block bb; ++ FOR_EACH_BB_FN (bb, fn) ++ for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi); ++ gsi_next (&gsi)) ++ { ++ gcall *call = dyn_cast (gsi_stmt (gsi)); ++ if (call) ++ { ++ fixup_pt_set (gimple_call_use_set (call)); ++ fixup_pt_set (gimple_call_clobber_set (call)); ++ } ++ } ++ } ++ ++ unsigned i; ++ symtab_pair *item; ++ FOR_EACH_VEC_ELT (m_merged_variables, i, item) ++ set_alias_uids (item->first, DECL_UID (item->first->decl)); ++} ++ + /* Dump function prints all class members to a FILE with an INDENT. */ + + void +Index: gcc/ipa-icf.h +=================================================================== +--- a/src/gcc/ipa-icf.h (.../tags/gcc_7_3_0_release) ++++ b/src/gcc/ipa-icf.h (.../branches/gcc-7-branch) +@@ -141,6 +141,8 @@ + unsigned int index; + }; + ++typedef std::pair symtab_pair; ++ + /* Semantic item is a base class that encapsulates all shared functionality + for both semantic function and variable items. */ + class sem_item +@@ -563,6 +565,12 @@ + processed. */ + bool merge_classes (unsigned int prev_class_count); + ++ /* Fixup points to analysis info. */ ++ void fixup_points_to_sets (void); ++ ++ /* Fixup points to set PT. */ ++ void fixup_pt_set (struct pt_solution *pt); ++ + /* Adds a newly created congruence class CLS to worklist. */ + void worklist_push (congruence_class *cls); + +@@ -632,6 +640,10 @@ + + /* Bitmap stack. */ + bitmap_obstack m_bmstack; ++ ++ /* Vector of merged variables. Needed for fixup of points-to-analysis ++ info. */ ++ vec m_merged_variables; + }; // class sem_item_optimizer + + } // ipa_icf namespace Index: libgfortran/ChangeLog =================================================================== --- a/src/libgfortran/ChangeLog (.../tags/gcc_7_3_0_release) diff -u gcc-7-7.3.0/debian/rules.conf gcc-7-7.3.0/debian/rules.conf --- gcc-7-7.3.0/debian/rules.conf +++ gcc-7-7.3.0/debian/rules.conf @@ -206,6 +206,8 @@ BINUTILSBDV = 2.22 ifneq (,$(filter $(distrelease),vivid)) BINUTILSBDV = 2.25-3~ + else ifneq (,$(filter $(distrelease),trusty)) + BINUTILSBDV = 2.24-5~ else ifneq (,$(filter $(distrelease),jessie)) BINUTILSBDV = 2.25-7~ else ifneq (,$(filter $(distrelease),xenial)) @@ -214,8 +216,10 @@ BINUTILSBDV = 2.28 else ifneq (,$(filter $(distrelease),artful)) BINUTILSBDV = 2.29.1 - else ifneq (,$(filter $(distrelease),sid buster bionic)) - BINUTILSBDV = 2.30-7 + else ifneq (,$(filter $(distrelease),bionic)) + BINUTILSBDV = 2.30-17 + else + BINUTILSBDV = 2.30 endif endif ifeq ($(DEB_CROSS),yes) @@ -407,10 +411,10 @@ ifneq (,$(filter $(distrelease),lenny etch squeeze wheezy dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring)) MPC_BUILD_DEP = libmpc-dev, -else ifneq (,$(filter $(distrelease),sid buster bionic)) - MPC_BUILD_DEP = libmpc-dev (>= 1.1), -else +else ifneq (,$(filter $(distrelease), stretch jessie trusty xenial artful)) MPC_BUILD_DEP = libmpc-dev (>= 1.0), +else + MPC_BUILD_DEP = libmpc-dev (>= 1.1), endif SOURCE_BUILD_DEP := @@ -495,7 +499,9 @@ GO_BUILD_DEP := netbase, # try to build with itself, or with the last version -ifneq (,$(filter $(distrelease), jessie)) +ifneq (,$(filter $(distrelease), squeeze lucid)) + gnat_build_dep := +else ifneq (,$(filter $(distrelease), jessie)) gnat_build_dep := gnat-4.9$(NT) [$(ada_no_archs)], g++-4.9$(NT) else ifneq (,$(filter $(distrelease), wheezy precise trusty wily xenial)) gnat_build_dep := gnat-5$(NT) [$(ada_no_archs)], g++-5$(NT) @@ -503,10 +509,8 @@ gnat_build_dep := gnat-6$(NT) [$(ada_no_archs) !powerpcspe !x32], g++-7 [powerpcspe x32], gnat-7 [powerpcspe x32], g++-6$(NT) else ifneq (,$(filter $(distrelease), buster sid artful bionic)) gnat_build_dep := gnat-7$(NT) [$(ada_no_archs)], g++-7$(NT) -else ifneq (,$(filter $(distrelease), squeeze lucid)) - gnat_build_dep := else - gnat_build_dep := gnat$(NT) [$(ada_no_archs)] + gnat_build_dep := gnat-7$(NT) [$(ada_no_archs)], g++-7$(NT) endif ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) gnat_build_dep := diff -u gcc-7-7.3.0/debian/rules.d/binary-ada.mk gcc-7-7.3.0/debian/rules.d/binary-ada.mk --- gcc-7-7.3.0/debian/rules.d/binary-ada.mk +++ gcc-7-7.3.0/debian/rules.d/binary-ada.mk @@ -294,15 +294,12 @@ debian/dh_rmemptydirs -p$(p_gnat) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ + $(DWZ) \ $(d_gnat)/$(gcc_lexec_dir)/gnat1 endif dh_strip -p$(p_gnat) find $(d_gnat) -name '*.ali' | xargs chmod 444 - $(cross_shlibdeps) dh_shlibdeps -p$(p_gnat) \ - $(call shlibdirs_to_search, \ - $(p_lgcc) $(p_lgnat) $(p_lgnatvsn) \ - ,) + dh_shlibdeps -p$(p_gnat) mkdir -p $(d_gnat)/usr/share/lintian/overrides echo '$(p_gnat) binary: hardening-no-pie' \ > $(d_gnat)/usr/share/lintian/overrides/$(p_gnat) @@ -316,7 +313,7 @@ ifeq ($(with_gnatsjlj),yes) dh_strip -p$(p_gnatsjlj) find $(d_gnatsjlj) -name '*.ali' | xargs chmod 444 - $(cross_makeshlibs) dh_shlibdeps -p$(p_gnatsjlj) + dh_shlibdeps -p$(p_gnatsjlj) echo $(p_gnatsjlj) >> debian/arch_binaries endif diff -u gcc-7-7.3.0/debian/rules.d/binary-brig.mk gcc-7-7.3.0/debian/rules.d/binary-brig.mk --- gcc-7-7.3.0/debian/rules.d/binary-brig.mk +++ gcc-7-7.3.0/debian/rules.d/binary-brig.mk @@ -52,7 +52,7 @@ debian/dh_rmemptydirs -p$(p_brig) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ + $(DWZ) \ $(d_brig)/$(gcc_lexec_dir)/brig1 endif dh_strip -p$(p_brig) \ diff -u gcc-7-7.3.0/debian/rules.d/binary-cpp.mk gcc-7-7.3.0/debian/rules.d/binary-cpp.mk --- gcc-7-7.3.0/debian/rules.d/binary-cpp.mk +++ gcc-7-7.3.0/debian/rules.d/binary-cpp.mk @@ -53,7 +53,7 @@ debian/dh_rmemptydirs -p$(p_cpp) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz $(d_cpp)/$(gcc_lexec_dir)/cc1 + $(DWZ) $(d_cpp)/$(gcc_lexec_dir)/cc1 endif dh_strip -p$(p_cpp) \ $(if $(unstripped_exe),-X/cc1) diff -u gcc-7-7.3.0/debian/rules.d/binary-cxx.mk gcc-7-7.3.0/debian/rules.d/binary-cxx.mk --- gcc-7-7.3.0/debian/rules.d/binary-cxx.mk +++ gcc-7-7.3.0/debian/rules.d/binary-cxx.mk @@ -58,7 +58,7 @@ dh_shlibdeps -p$(p_cxx) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ + $(DWZ) \ $(d_cxx)/$(gcc_lexec_dir)/cc1plus endif dh_strip -p$(p_cxx) $(if $(unstripped_exe),-X/cc1plus) diff -u gcc-7-7.3.0/debian/rules.d/binary-d.mk gcc-7-7.3.0/debian/rules.d/binary-d.mk --- gcc-7-7.3.0/debian/rules.d/binary-d.mk +++ gcc-7-7.3.0/debian/rules.d/binary-d.mk @@ -130,7 +130,7 @@ /$(docdir)/$(p_gdc)/README.Bugs ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ + $(DWZ) \ $(d_gdc)/$(gcc_lexec_dir)/cc1d endif dh_strip -p$(p_gdc) \ diff -u gcc-7-7.3.0/debian/rules.d/binary-fortran.mk gcc-7-7.3.0/debian/rules.d/binary-fortran.mk --- gcc-7-7.3.0/debian/rules.d/binary-fortran.mk +++ gcc-7-7.3.0/debian/rules.d/binary-fortran.mk @@ -200,7 +200,7 @@ debian/dh_rmemptydirs -p$(p_g95) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ + $(DWZ) \ $(d_g95)/$(gcc_lexec_dir)/f951 endif dh_strip -p$(p_g95) \ diff -u gcc-7-7.3.0/debian/rules.d/binary-gcc.mk gcc-7-7.3.0/debian/rules.d/binary-gcc.mk --- gcc-7-7.3.0/debian/rules.d/binary-gcc.mk +++ gcc-7-7.3.0/debian/rules.d/binary-gcc.mk @@ -189,7 +189,7 @@ debian/dh_rmemptydirs -p$(p_gcc) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ + $(DWZ) \ $(d_gcc)/$(gcc_lexec_dir)/lto1 \ $(d_gcc)/$(gcc_lexec_dir)/lto-wrapper \ $(d_gcc)/$(gcc_lexec_dir)/collect2 diff -u gcc-7-7.3.0/debian/rules.d/binary-go.mk gcc-7-7.3.0/debian/rules.d/binary-go.mk --- gcc-7-7.3.0/debian/rules.d/binary-go.mk +++ gcc-7-7.3.0/debian/rules.d/binary-go.mk @@ -286,7 +286,7 @@ debian/dh_rmemptydirs -p$(p_go) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ + $(DWZ) \ $(d_go)/$(gcc_lexec_dir)/go1 endif dh_strip -v -p$(p_go) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \ diff -u gcc-7-7.3.0/debian/rules.d/binary-hppa64.mk gcc-7-7.3.0/debian/rules.d/binary-hppa64.mk --- gcc-7-7.3.0/debian/rules.d/binary-hppa64.mk +++ gcc-7-7.3.0/debian/rules.d/binary-hppa64.mk @@ -21,7 +21,7 @@ debian/dh_rmemptydirs -p$(p_hppa64) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ + $(DWZ) \ $(d_hppa64)/$(gcc_lexec_dir)/cc1 \ $(d_hppa64)/$(gcc_lexec_dir)/collect2 \ $(d_hppa64)/$(gcc_lexec_dir)/lto-wrapper \ diff -u gcc-7-7.3.0/debian/rules.d/binary-nvptx.mk gcc-7-7.3.0/debian/rules.d/binary-nvptx.mk --- gcc-7-7.3.0/debian/rules.d/binary-nvptx.mk +++ gcc-7-7.3.0/debian/rules.d/binary-nvptx.mk @@ -54,7 +54,7 @@ debian/dh_rmemptydirs -p$(p_nvptx) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ + $(DWZ) \ $(d_nvptx)/$(gcc_lexec_dir)/accel/nvptx-none/{collect2,lto1,lto-wrapper,mkoffload} endif dh_strip -p$(p_nvptx) \ diff -u gcc-7-7.3.0/debian/rules.d/binary-objc.mk gcc-7-7.3.0/debian/rules.d/binary-objc.mk --- gcc-7-7.3.0/debian/rules.d/binary-objc.mk +++ gcc-7-7.3.0/debian/rules.d/binary-objc.mk @@ -46,7 +46,7 @@ debian/dh_rmemptydirs -p$(p_objc) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ + $(DWZ) \ $(d_objc)/$(gcc_lexec_dir)/cc1obj endif dh_strip -p$(p_objc) \ diff -u gcc-7-7.3.0/debian/rules.d/binary-objcxx.mk gcc-7-7.3.0/debian/rules.d/binary-objcxx.mk --- gcc-7-7.3.0/debian/rules.d/binary-objcxx.mk +++ gcc-7-7.3.0/debian/rules.d/binary-objcxx.mk @@ -42,7 +42,7 @@ debian/dh_rmemptydirs -p$(p_objcx) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) - dwz \ + $(DWZ) \ $(d_objcx)/$(gcc_lexec_dir)/cc1objplus endif dh_strip -p$(p_objcx) \ diff -u gcc-7-7.3.0/debian/rules.defs gcc-7-7.3.0/debian/rules.defs --- gcc-7-7.3.0/debian/rules.defs +++ gcc-7-7.3.0/debian/rules.defs @@ -1495,7 +1495,7 @@ with_check := disabled for $(DEB_HOST_ARCH), testsuite timeouts with expect endif endif -with_check := disabled for this upload +#with_check := disabled for this upload # not a dependency on all archs, but if available, use it for the testsuite ifneq (,$(wildcard /usr/bin/localedef)) diff -u gcc-7-7.3.0/debian/rules.parameters gcc-7-7.3.0/debian/rules.parameters --- gcc-7-7.3.0/debian/rules.parameters +++ gcc-7-7.3.0/debian/rules.parameters @@ -2,14 +2,14 @@ GCC_VERSION := 7.3.0 NEXT_GCC_VERSION := 7.3.1 BASE_VERSION := 7 -SOURCE_VERSION := 7.3.0-16ubuntu3~14.04 -DEB_VERSION := 7.3.0-16ubuntu3~14.04 -DEB_EVERSION := 1:7.3.0-16ubuntu3~14.04 -DEB_GDC_VERSION := 7.3.0-16ubuntu3~14.04 +SOURCE_VERSION := 7.3.0-21ubuntu1~14.04 +DEB_VERSION := 7.3.0-21ubuntu1~14.04 +DEB_EVERSION := 1:7.3.0-21ubuntu1~14.04 +DEB_GDC_VERSION := 7.3.0-21ubuntu1~14.04 DEB_SOVERSION := 5 DEB_SOEVERSION := 1:5 DEB_LIBGCC_SOVERSION := -DEB_LIBGCC_VERSION := 1:7.3.0-16ubuntu3~14.04 +DEB_LIBGCC_VERSION := 1:7.3.0-21ubuntu1~14.04 DEB_STDCXX_SOVERSION := 5 DEB_GOMP_SOVERSION := 5 GCC_SONAME := 1 diff -u gcc-7-7.3.0/debian/rules.patch gcc-7-7.3.0/debian/rules.patch --- gcc-7-7.3.0/debian/rules.patch +++ gcc-7-7.3.0/debian/rules.patch @@ -14,11 +14,8 @@ debian_patches = \ svn-updates \ - $(if $(with_linaro_branch),gcc-linaro-revert-r253234) \ - $(if $(with_linaro_branch),gcc-linaro-revert-r249596) \ $(if $(with_linaro_branch),gcc-linaro) \ $(if $(with_linaro_branch),gcc-linaro-no-macros) \ - $(if $(with_linaro_branch),gcc-linaro-3718) \ # svn-updates \ @@ -89,6 +86,8 @@ libffi-riscv \ pr84761 \ gcc-force-cross-layout \ + gcc-search-prefixed-as-ld \ + kfreebsd-decimal-float \ ifeq (,$(filter $(DEB_TARGET_ARCH),armhf armel)) debian_patches += pr67165 diff -u gcc-7-7.3.0/debian/rules2 gcc-7-7.3.0/debian/rules2 --- gcc-7-7.3.0/debian/rules2 +++ gcc-7-7.3.0/debian/rules2 @@ -18,6 +18,11 @@ IP = install -m 755 # Install program IS = install -m 755 # Install script +DWZ = dwz +ifneq (,$(filter $(distrelease),jessie stretch trusty xenial)) + DWZ = : dwz +endif + # kernel-specific ulimit hack ifeq ($(findstring linux,$(DEB_HOST_GNU_SYSTEM)),linux) ULIMIT_M = if [ -e /proc/meminfo ]; then \ @@ -174,6 +179,12 @@ docdir = usr/share/doc +# no prefix for regular builds, would disable searching for as / ld +binutils_prefix = +ifneq (,$(with_build_sysroot)) + binutils_prefix = $(with_build_sysroot)/usr/bin +endif + CONFARGS = -v \ --with-pkgversion='$(distribution)$(if $(with_linaro_branch),/Linaro)$(if $(with_ibm_branch),/IBM)___$(DEB_VERSION)' \ --with-bugurl='file:///usr/share/doc/$(PKGSOURCE)/README.Bugs' @@ -182,8 +193,12 @@ --enable-languages=$(subst $(SPACE),$(COMMA),$(enabled_languages)) \ --prefix=/$(PF) \ --with-gcc-major-version-only \ - --with-as=/usr/bin/$(DEB_TARGET_GNU_TYPE)-as \ - --with-ld=/usr/bin/$(DEB_TARGET_GNU_TYPE)-ld + +ifneq (,$(with_build_sysroot)) + CONFARGS += \ + --with-as=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-as \ + --with-ld=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-ld +endif ifeq ($(versioned_packages),yes) CONFARGS += --program-suffix=-$(BASE_VERSION) @@ -1541,7 +1556,7 @@ touch $@ # start the script only on architectures known to have slow autobuilders ... -logwatch_archs := alpha arm m68k mips mipsel mips64el sparc +logwatch_archs := alpha arm m68k mips mipsel mips64el sparc riscv64 ifeq ($(DEB_HOST_GNU_CPU), $(findstring $(DEB_HOST_GNU_CPU),$(logwatch_archs))) start_logwatch = yes endif only in patch2: unchanged: --- gcc-7-7.3.0.orig/debian/patches/gcc-search-prefixed-as-ld.diff +++ gcc-7-7.3.0/debian/patches/gcc-search-prefixed-as-ld.diff @@ -0,0 +1,37 @@ +# DP: Search for the -as / -ld before serching for as / ld. + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -2534,6 +2534,7 @@ + { + len = paths->max_len + extra_space + 1; + len += MAX (MAX (suffix_len, multi_os_dir_len), multiarch_len); ++ len += multiarch_len + 2; /* triplet prefix for as, ld. */ + path = XNEWVEC (char, len); + } + +@@ -2747,6 +2748,24 @@ + struct file_at_path_info *info = (struct file_at_path_info *) data; + size_t len = strlen (path); + ++ /* search for the -as / -ld first. */ ++ if (! strcmp (info->name, "as") || ! strcmp (info->name, "ld")) ++ { ++ struct file_at_path_info prefix_info = *info; ++ char *prefixed_name = XNEWVEC (char, info->name_len + 2 ++ + strlen (DEFAULT_REAL_TARGET_MACHINE)); ++ strcpy (prefixed_name, DEFAULT_REAL_TARGET_MACHINE); ++ strcat (prefixed_name, "-"); ++ strcat (prefixed_name, info->name); ++ prefix_info.name = (const char *) prefixed_name; ++ prefix_info.name_len = strlen (prefixed_name); ++ if (file_at_path (path, &prefix_info)) ++ { ++ XDELETEVEC (prefixed_name); ++ return path; ++ } ++ XDELETEVEC (prefixed_name); ++ } + memcpy (path + len, info->name, info->name_len); + len += info->name_len; + only in patch2: unchanged: --- gcc-7-7.3.0.orig/debian/patches/kfreebsd-decimal-float.diff +++ gcc-7-7.3.0/debian/patches/kfreebsd-decimal-float.diff @@ -0,0 +1,22 @@ +# DP: Enable decimal float support on kfreebsd-amd64 + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -817,6 +817,7 @@ + [], []) + + # Enable C extension for decimal float if target supports it. ++# touch the file, adding decimal support for kfreebsd-amd64 in config/dfp.m4 + GCC_AC_ENABLE_DECIMAL_FLOAT([$target]) + + dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi` +--- a/src/config/dfp.m4 ++++ b/src/config/dfp.m4 +@@ -22,6 +22,7 @@ + case $1 in + powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux* | \ + i?86*-*-elfiamcu | i?86*-*-gnu* | \ ++ i?86*-*-kfreebsd* | x86_64*-*-kfreebsd* | \ + i?86*-*-mingw* | x86_64*-*-mingw* | \ + i?86*-*-cygwin* | x86_64*-*-cygwin*) + enable_decimal_float=yes