1  // 2007-02-04  Edward Smith-Rowland <3dw4rd@verizon.net>
       2  //
       3  // Copyright (C) 2007-2023 Free Software Foundation, Inc.
       4  //
       5  // This file is part of the GNU ISO C++ Library.  This library is free
       6  // software; you can redistribute it and/or modify it under the
       7  // terms of the GNU General Public License as published by the
       8  // Free Software Foundation; either version 3, or (at your option)
       9  // any later version.
      10  //
      11  // This library is distributed in the hope that it will be useful,
      12  // but WITHOUT ANY WARRANTY; without even the implied warranty of
      13  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14  // GNU General Public License for more details.
      15  //
      16  // You should have received a copy of the GNU General Public License along
      17  // with this library; see the file COPYING3.  If not see
      18  // <http://www.gnu.org/licenses/>.
      19  
      20  //  testcase.h
      21  
      22  //
      23  //  These are little PODs for special function inputs and
      24  //  expected results for the testsuite.
      25  //
      26  
      27  //  5.2.1.1  Associated Laguerre polynomials.
      28  template <typename _Tp>
      29  struct testcase_assoc_laguerre
      30  {
      31    _Tp f0;
      32    unsigned int n;
      33    unsigned int m;
      34    _Tp x;
      35    _Tp f;
      36  };
      37  
      38  //  5.2.1.2  Associated Legendre functions.
      39  template <typename _Tp>
      40  struct testcase_assoc_legendre
      41  {
      42    _Tp f0;
      43    unsigned int l;
      44    unsigned int m;
      45    _Tp x;
      46    _Tp f;
      47  };
      48  
      49  //  5.2.1.3  Beta function.
      50  template <typename _Tp>
      51  struct testcase_beta
      52  {
      53    _Tp f0;
      54    _Tp x;
      55    _Tp y;
      56    _Tp f;
      57  };
      58  
      59  //  5.2.1.4  Complete elliptic integrals of the first kind.
      60  template <typename _Tp>
      61  struct testcase_comp_ellint_1
      62  {
      63    _Tp f0;
      64    _Tp k;
      65    _Tp f;
      66  };
      67  
      68  //  5.2.1.5  Complete elliptic integrals of the second kind.
      69  template <typename _Tp>
      70  struct testcase_comp_ellint_2
      71  {
      72    _Tp f0;
      73    _Tp k;
      74    _Tp f;
      75  };
      76  
      77  //  5.2.1.6  Complete elliptic integrals of the third kind.
      78  template <typename _Tp>
      79  struct testcase_comp_ellint_3
      80  {
      81    _Tp f0;
      82    _Tp k;
      83    _Tp nu;
      84    _Tp f;
      85  };
      86  
      87  //  5.2.1.7  Confluent hypergeometric functions.
      88  template <typename _Tp>
      89  struct testcase_conf_hyperg
      90  {
      91    _Tp f0;
      92    _Tp a;
      93    _Tp c;
      94    _Tp x;
      95    _Tp f;
      96  };
      97  
      98  //  5.2.1.8  Regular modified cylindrical Bessel functions.
      99  template <typename _Tp>
     100  struct testcase_cyl_bessel_i
     101  {
     102    _Tp f0;
     103    _Tp nu;
     104    _Tp x;
     105    _Tp f;
     106  };
     107  
     108  //  5.2.1.9  Cylindrical Bessel functions (of the first kind).
     109  template <typename _Tp>
     110  struct testcase_cyl_bessel_j
     111  {
     112    _Tp f0;
     113    _Tp nu;
     114    _Tp x;
     115    _Tp f;
     116  };
     117  
     118  //  5.2.1.10  Irregular modified cylindrical Bessel functions.
     119  template <typename _Tp>
     120  struct testcase_cyl_bessel_k
     121  {
     122    _Tp f0;
     123    _Tp nu;
     124    _Tp x;
     125    _Tp f;
     126  };
     127  
     128  //  5.2.1.11  Cylindrical Neumann functions.
     129  template <typename _Tp>
     130  struct testcase_cyl_neumann
     131  {
     132    _Tp f0;
     133    _Tp nu;
     134    _Tp x;
     135    _Tp f;
     136  };
     137  
     138  //  5.2.1.12  Elliptic integrals of the first kind.
     139  template <typename _Tp>
     140  struct testcase_ellint_1
     141  {
     142    _Tp f0;
     143    _Tp k;
     144    _Tp phi;
     145    _Tp f;
     146  };
     147  
     148  //  5.2.1.13  Elliptic integrals of the second kind.
     149  template <typename _Tp>
     150  struct testcase_ellint_2
     151  {
     152    _Tp f0;
     153    _Tp k;
     154    _Tp phi;
     155    _Tp f;
     156  };
     157  
     158  //  5.2.1.14  Elliptic integrals of the third kind.
     159  template <typename _Tp>
     160  struct testcase_ellint_3
     161  {
     162    _Tp f0;
     163    _Tp k;
     164    _Tp nu;
     165    _Tp phi;
     166    _Tp f;
     167  };
     168  
     169  //  5.2.1.15  Exponential integral.
     170  template <typename _Tp>
     171  struct testcase_expint
     172  {
     173    _Tp f0;
     174    _Tp x;
     175    _Tp f;
     176  };
     177  
     178  //  5.2.1.16  Hermite polynomials
     179  template <typename _Tp>
     180  struct testcase_hermite
     181  {
     182    _Tp f0;
     183    unsigned int n;
     184    _Tp x;
     185    _Tp f;
     186  };
     187  
     188  //  5.2.1.17  Hypergeometric functions.
     189  template <typename _Tp>
     190  struct testcase_hyperg
     191  {
     192    _Tp f0;
     193    _Tp a;
     194    _Tp b;
     195    _Tp c;
     196    _Tp x;
     197    _Tp f;
     198  };
     199  
     200  //  5.2.1.18  Laguerre polynomials.
     201  template <typename _Tp>
     202  struct testcase_laguerre
     203  {
     204    _Tp f0;
     205    unsigned int n;
     206    _Tp x;
     207    _Tp f;
     208  };
     209  
     210  //  5.2.1.19  Legendre polynomials.
     211  template <typename _Tp>
     212  struct testcase_legendre
     213  {
     214    _Tp f0;
     215    unsigned int l;
     216    _Tp x;
     217    _Tp f;
     218  };
     219  
     220  //  5.2.1.20  Riemann zeta function.
     221  template <typename _Tp>
     222  struct testcase_riemann_zeta
     223  {
     224    _Tp f0;
     225    _Tp x;
     226    _Tp f;
     227  };
     228  
     229  //  5.2.1.21  Spherical Bessel functions.
     230  template <typename _Tp>
     231  struct testcase_sph_bessel
     232  {
     233    _Tp f0;
     234    unsigned int n;
     235    _Tp x;
     236    _Tp f;
     237  };
     238  
     239  //  5.2.1.22  Spherical Legendre functions.
     240  template <typename _Tp>
     241  struct testcase_sph_legendre
     242  {
     243    _Tp f0;
     244    unsigned int l;
     245    unsigned int m;
     246    _Tp theta;
     247    _Tp f;
     248  };
     249  
     250  //  5.2.1.23  Spherical Neumann functions.
     251  template <typename _Tp>
     252  struct testcase_sph_neumann
     253  {
     254    _Tp f0;
     255    unsigned int n;
     256    _Tp x;
     257    _Tp f;
     258  };