URL: <https://savannah.gnu.org/bugs/?66880>
Summary: Feature: test cases for function hyperg_0F1()
Group: GNU Scientific Library
Submitter: fermelelundi
Submitted: Fri 07 Mar 2025 03:47:19 PM UTC
Category: Build
Severity: 3 - Normal
Operating System:
Status: None
Assigned to: None
Open/Closed: Open
Discussion Lock: Any
Release: 2.8
_______________________________________________________
Follow-up Comments:
-------------------------------------------------------
Date: Fri 07 Mar 2025 03:47:19 PM UTC By: Fermé le Lundi <fermelelundi>
Some special cases for function hyperg_U(). These can be inserted into
specfunc/test_hyperg.c.
Notably some failing cases for U(0,b,x), despite having special handling and
always equal to 1.
Add `#include <gsl/gsl_math.h>` to file test_hyperg.c to use M_SQRTPI.
/* Special case: U(0,b,x) = 1. */
/* Failing test cases have been commented out */
//TEST_SF(s, gsl_sf_hyperg_U_e, (0, 1, 0, &r), 1, TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (0, 1, -1, &r), 1, TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (0, 1, 1, &r), 1, TEST_TOL0, GSL_SUCCESS);
//TEST_SF(s, gsl_sf_hyperg_U_e, (0, 2, 0, &r), 1, TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (0, 2, -1, &r), 1, TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (0, 2, 1, &r), 1, TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (0, -1, 0, &r), 1, TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (0, -1, -1, &r), 1, TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (0, -1, 1, &r), 1, TEST_TOL0, GSL_SUCCESS);
/* Special case: U(a,b,0) = Gamma(1-b)/Gamma(a-b+1), provided |b| < 1. */
TEST_SF(s, gsl_sf_hyperg_U_e, (1/2.0, 1/2.0, 0, &r), M_SQRTPI, TEST_TOL0,
GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (1/3.0, 1/3.0, 0, &r), 1.35411793942640041,
TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (1/10.0, 1/3.0, 0, &r), 1.12481434490451074,
TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (-1/10.0, 1/3.0, 0, &r), 0.86198128242771896,
TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (-1/10.0, -1/3.0, 0, &r), 0.98129904714465957,
TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (1/10.0, -1/3.0, 0, &r), 1.00793511253749697,
TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (-1/3.0, -1/3.0, 0, &r), 0.89297951156924921,
TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (1/500.0, 1/200.0, 0, &r),
1.00116831216288266, TEST_TOL0, GSL_SUCCESS);
//TEST_SF(s, gsl_sf_hyperg_U_e, (1/500.0, 0.9999999, 0, &r),
20024.03729491263455, TEST_TOL0, GSL_SUCCESS); accuracy
//TEST_SF(s, gsl_sf_hyperg_U_e, (-1/500.0, 0.9999999, 0, &r),
-19975.86007356787766, TEST_TOL0, GSL_SUCCESS); accuracy
TEST_SF(s, gsl_sf_hyperg_U_e, (-1/500.0, 0.9999999, 1, &r),
0.99999701634593083, TEST_TOL0, GSL_SUCCESS);
/* Special case: U(a,a,x) = exp(x)*Gamma(1-a, x), which is real for x > 0.
*/
//TEST_SF(s, gsl_sf_hyperg_U_e, (1/500.0, 1/500.0, 1, &r),
0.99880836836313237817, TEST_TOL0, GSL_SUCCESS); accuracy
//TEST_SF(s, gsl_sf_hyperg_U_e, (1/500.0, 1/500.0, 10, &r),
0.99522316300793458398, TEST_TOL0, GSL_SUCCESS); accuracy
TEST_SF(s, gsl_sf_hyperg_U_e, (1/100.0, 1/100.0, 2, &r),
0.9895146096682301671, TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (1/10.0, 1/10.0, 2, &r), 0.900279379864020072,
TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (1, 1, 12, &r), 0.077326133138919230,
TEST_TOL0, GSL_SUCCESS); // repeated from gsl_sf_hyperg_U_int_e
TEST_SF(s, gsl_sf_hyperg_U_e, (10, 10, 12, &r), 8.9861693867676978e-12,
TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_int_e, (10, 10, 12, &r), 8.9861693867676978e-12,
TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (5/2.0, 5/2.0, 12, &r),
0.00167700374825995750, TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (5/2.0, 5/2.0, 2, &r), 0.08743465724793916065,
TEST_TOL0, GSL_SUCCESS);
TEST_SF(s, gsl_sf_hyperg_U_e, (-5/2.0, -5/2.0, 2, &r),
19.1485468180554587730, TEST_TOL0, GSL_SUCCESS);
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?66880>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
signature.asc
Description: PGP signature
