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/

Attachment: signature.asc
Description: PGP signature

Reply via email to