o
    EbLq                     @   s  d dl Z d dlZd dlmZmZmZ d dlmZ d dlZd dl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZ d dl[m\Z\ d dl]m^Z^ e_e j`ae j`becddZde_e j`ae j`becdd	Zee_e j`ae j`becdd
Zfdd Zgdd Zhdd Zidd Zjdd Zkdd Zldd Zmdd Zndd Zodd Zpdd Zqd d! Zrd"d# Zsd$d% Ztd&d' Zud(d) Zvd*d+ Zwd,d- Zxd.d/ Zyd0d1 Zzd2d3 Z{d4d5 Z|d6d7 Z}d8d9 Z~d:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zg egedhd didjdkegedhdldidjdkegedmd didndkegedmdldidndkegedod didndkegedodldidndkegepdpdqdrdndkegeqdsdtdudndkegeqdvdtdudwdkegetdsdtdudxdydzegetdvdtdudwdydzegerdsdtdudxdydzegerdvdtdud{dydzege|dsdtdud|dkege|dvdtdud}dkege}dsdtdud~dkege}dvdtdud}dkegesdsdtdrd~dydzegesdvdtdrddydzegeudsdtdrd~dydzegeudvdtdrddydzege+ddtduddkege+ddtduddkege+ddtdudjdkege,ddqdddkege,ddqddjdkege,ddqdd~dkege,ddqdddkege-ddqdrddkegeBddqdddkegeBddqdddkegeBddqdd~dkegeBddqdddkegeCddqdrddkegeddqdddkegeDdddrddkegedddddkegeEdddddkegedddddkegeddtduddkegeddtdudjdkegeAdddrddkegedddddkegeKdddrddkegedddddkegeLddduddkegedddrddkegeddid ege*dd diege*ddldiege*dd did}dkege*ddldiddkege*dd diddkege*ddldiddkege*dd diddkege*ddldiddkegejdd diegekddtduddkegeldd diegemddtduddkege:dd diege:ddldiddkege;dd duddkege:dd diege:ddldiege;dd duddkege:dd diege:ddldiddkege;dd duege<dd diege=dd diege=dd didd dege>ddiduddkege>ddduddkege?dd diddkege?dd diddkege?dd diege@ddtduege@ddtduddkege$dd diege$dd diege$dd diege$dd diege$dd diddkege$dd diddkege$ddldiddkege$ddldiddkege$ddldiddkege$ddldiddkege$ddldiddkege$ddldid}dkege%dd duddkege%dd duddkege%dd duddkege%dd duddkege%dd duddkege%dd duege&ddtdddkege&ddtdd}dkege&ddtdd}dkege&ddtdddkegeddtdddkegeddtdd}dkegeddtdd}dkegeddtdddkege'ddtdrddkege'ddtdrd}dkege'ddtdrddkege'ddtdrdndkegeddtdrddkegeddtdrd}dkegeddtdrddkegeddtdrdndkegeddduddkegedddrddkegeddtdud}dkegeddtduegeddtduegeddtdrd}dkegeddtdregeddtdrege~ddtdud~dkegeddtduddkegeddtduddύegeddqdrd}dkegeddqdrddύegedd diegedd duegeddtduddkegedddudddՍegeddtduddkegeddduddkege ddtduddkege dddudddՍegeddtduddkegeddduddkegeddtduddkegeddduddkegeddtduddkegeddduddkegeddtduddkegeddduddkegeddtduddkegeddduddkegeddtdudndkegedddudndkege!ddtduddkege"ddtduddkege"ddduddkege"ddtduddkege"ddduddkege#ddtduddkege#ddduddkege#ddtduddkege#ddduddkegeddtduddkegeddtduddkegeddtduddkegeddduddkegeddtduddkegeddduddkegeddtduddkegeddduddkegeodd didd degeodd didd degeodd didd degeodd didd dege(ddtdudndkege(ddtduddkege(ddtdudndkege)ddtdrddkege)ddtdrddkege)ddtdrddkegeddtdud{ddegeddtduddkegeddtduegeddtduddύegeddtdrddkegeddtdregeFdddrddkegeFdddrdddeged ddddd dd dd dd fdegeddtduddkeged	dtdud
dkegeMddtdudxdkegeMddtduddkege5ddtduddkege6ddqdrddkege6ddqdrddkege6ddqdrddkege6ddqdrddkege6ddqdrddkege6ddqdrddkege7ddqdrddkege7ddqdrddkege7ddqdrddkege7ddqdrddkege7ddqdrddkege8ddqdrddkege8ddqdrddkege8d dqdrd!dkege8d"dqdrddkege8d#dqdrddkege9d$d%ddd&d'd fd(Zejjd)eed*d+d, ZeheNd-dtdudddՍeheOd-dtdrdddՍehevd.dqdrd/ddՍehewd.dqdd/ddՍehexd0dqdrd/ddՍeheyd0dqdd/ddՍehezd0dqdd/ddՍehe{d0dqdd/ddՍgZejjd)eed*d1d2 Zeie3d3dtdueie2d4d dieie0d5dtdueied6dtd7ddkeied6dtdddkeie&d8dtduddkeie'd9dtdudndkeieWd:d;ddddՍeieVd:d;ddddՍeieZd<dqdrdndkg
Zejjd)eed*d=d> Zejfd?d@ZdS (A      N)arccosharcsinharctanh)suppress_warnings)Qlpnlpmnlpmvlqnlqmnsph_harmeval_legendreeval_hermiteeval_laguerreeval_genlaguerrebinomcbrtexpm1log1pzetajnjvjvpynyvyvpivivpknkvkvpgammagammalngammainc	gammainccgammaincinvgammainccinvdigammabetabetainc
betaincinvpochellipe	ellipeincellipkellipkm1	ellipkincellipjelliprcelliprdelliprfelliprgelliprjerferfcerfinverfcinvexp1expiexpnbdtrikbtdtrbtdtribtdtriabtdtribchndtrgdtrgdtrcgdtrixgdtribnbdtrikpdtrikowens_t	mathieu_a	mathieu_bmathieu_cemmathieu_semmathieu_modcem1mathieu_modsem1mathieu_modcem2mathieu_modsem2
ellip_harmellip_harm_2spherical_jnspherical_ynwright_bessel)IntegrationWarning)FuncDatadataz	boost.npzzgsl.npzz	local.npzc                 O   (   | d| t| t| g|R i |S Ndataname)
setdefaultrX   DATASETS_BOOSTfuncr\   akw rc   ?/usr/lib/python3/dist-packages/scipy/special/tests/test_data.pyrY   %      c                 O   rZ   r[   )r]   rX   DATASETS_GSLr_   rc   rc   rd   data_gsl*   re   rg   c                 O   rZ   r[   )r]   rX   DATASETS_LOCALr_   rc   rc   rd   
data_local/   re   ri   c                 C      t | |  S N)r-   krc   rc   rd   ellipk_4      rn   c                 C      t | || S rk   )r/   frm   rc   rc   rd   
ellipkinc_8      rs   c                 C   rj   rk   )r+   rl   rc   rc   rd   ellipe_<   ro   ru   c                 C   rp   rk   )r,   rq   rc   rc   rd   
ellipeinc_@   rt   rv   c                 C   rj   rk   )r0   rl   rc   rc   rd   ellipj_D   ro   rw   c                 C   s
   t | dS N      ?)r   )xrc   rc   rd   zeta_H   s   
r{   c                 C   s   t || t|S rk   )r   astypeint)nuZmurz   rc   rc   rd   assoc_legendre_p_boost_L   s   r   c                 C      t d| |S Nr   )r   )r~   rz   rc   rc   rd   legendre_p_via_assoc_P   ro   r   c                 C      t | d|d d S Nlr   )r   r|   nrz   rc   rc   rd   lpn_S      r   c                 C   r   r   )r	   r|   r   rc   rc   rd   lqn_V   r   r   c                 C      t d| |d d S Nr   )r   r   )r   r   rc   rc   rd   legendre_p_via_lpmnY      r   c                 C   r   r   )r
   r   rc   rc   rd   legendre_q_via_lqmn\   r   r   c                 C      t | ||d tj d S N   r   )rL   nppimqrz   rc   rc   rd   mathieu_ce_rad_      r   c                 C   r   r   )rM   r   r   r   rc   rc   rd   mathieu_se_radc   r   r   c                 C       t | ||d ttjd  S Nr      )rN   r   sqrtr   r   rc   rc   rd   mathieu_mc1_scaledg   s    r   c                 C   r   r   )rO   r   r   r   r   rc   rc   rd   mathieu_ms1_scaledm       r   c                 C   r   r   )rP   r   r   r   r   rc   rc   rd   mathieu_mc2_scaledq   r   r   c                 C   r   r   )rQ   r   r   r   r   rc   rc   rd   mathieu_ms2_scaledu   r   r   c                 C      t | d|S Nr   r   r|   r   rc   rc   rd   eval_legendre_ldx      r   c                 C   r   Ndr   r   rc   rc   rd   eval_legendre_dd{   r   r   c                 C   r   r   )r   r|   r   rc   rc   rd   eval_hermite_ld~   r   r   c                 C   r   r   r   r|   r   rc   rc   rd   eval_laguerre_ld   r   r   c                 C   r   r   r   r   rc   rc   rd   eval_laguerre_dd   r   r   c                 C      t | d||S r   r   r|   r   ra   rz   rc   rc   rd   eval_genlaguerre_ldd      r   c                 C   r   r   r   r   rc   rc   rd   eval_genlaguerre_ddd   r   r   c                 C      t d|  ||S N   )r=   yr   prc   rc   rd   bdtrik_comp   r   r   c                 C   s   t | |d| S r   )r?   )ra   br   rc   rc   rd   btdtri_comp   r   r   c                 C   r   r   )r@   )r   r   rz   rc   rc   rd   btdtria_comp   r   r   c                 C   s   t | d| |S r   )rA   )ra   r   rz   rc   rc   rd   btdtrib_comp   r   r   c                 C   r   rx   )rC   r   rz   rc   rc   rd   gdtr_   ro   r   c                 C   r   rx   )rD   r   rc   rc   rd   gdtrc_   ro   r   c                 C   r   rx   rE   r   r   rc   rc   rd   gdtrix_   ro   r   c                 C   s   t d| d| S Nry   r   r   r   rc   rc   rd   gdtrix_comp   r   r   c                 C   r   rx   rF   r   rc   rc   rd   gdtrib_   ro   r   c                 C   s   t dd|  |S r   r   r   rc   rc   rd   gdtrib_comp   r   r   c                 C   r   r   )rG   r   rc   rc   rd   nbdtrik_comp   r   r   c                 C   s   t d|  |S r   )rH   )r   r   rc   rc   rd   pdtrik_comp   rt   r   c                 C   s   dt | | S rx   r*   zr   rc   rc   rd   poch_   rt   r   c                 C   s   dt | |  S rx   r   r   rc   rc   rd   
poch_minus   r   r   c                 C   r   r   )rT   r|   r   rc   rc   rd   spherical_jn_   r   r   c                 C   r   r   )rU   r|   r   rc   rc   rd   spherical_yn_   r   r   c                 C   s   t | |||}|j|jfS rk   )r   realimag)r   r   ZthetaZphir   rc   rc   rd   	sph_harm_   s   r   c                 C      t | d|  }|j|jfS N              ?)r   r   r   rz   r   r   rc   rc   rd   cexpm1      r   c                 C   r   r   )r   r   r   r   rc   rc   rd   clog1p   r   r   zacosh_data_ipp-acosh_datar   g-a=)rtoly                zasinh_data_ipp-asinh_datagdy=zatanh_data_ipp-atanh_dataz%assoc_legendre_p_ipp-assoc_legendre_p)r   r   r      zlegendre_p_ipp-legendre_p)r   r   r   z%legendre_p_large_ipp-legendre_p_largeg [n;=gvIh%,=F)r   Z
vectorizedg7QU=gt0=gvIh%L=g+=g-=zbeta_exp_data_ipp-beta_exp_datagvIh%<=zbeta_med_data_ipp-beta_med_dataz%ibeta_small_data_ipp-ibeta_small_data   g [n<zibeta_data_ipp-ibeta_dataz!ibeta_int_data_ipp-ibeta_int_dataz%ibeta_large_data_ipp-ibeta_large_datag|=z!ibeta_inv_data_ipp-ibeta_inv_datagh㈵>gvIh%\=   gHת>z#ibeta_inva_data_ipp-ibeta_inva_data)r   r   r   g:0y5>)r   r   r      zbinomial_data_ipp-binomial_dataz+binomial_large_data_ipp-binomial_large_dataz,binomial_quantile_ipp-binomial_quantile_dataz>negative_binomial_quantile_ipp-negative_binomial_quantile_datag&.1>z*poisson_quantile_ipp-poisson_quantile_data)r   r   gA:)>zcbrt_data_ipp-cbrt_datazdigamma_data_ipp-digamma_dataz%digamma_neg_data_ipp-digamma_neg_dataz'digamma_root_data_ipp-digamma_root_datagV瞯<z)digamma_small_data_ipp-digamma_small_datag+=zellint_k_data_ipp-ellint_k_datazellint_f_data_ipp-ellint_f_datazellint_e_data_ipp-ellint_e_dataz!ellint_e2_data_ipp-ellint_e2_datazerf_data_ipp-erf_dataz!erf_large_data_ipp-erf_large_datag+&=z!erf_small_data_ipp-erf_small_datazerf_inv_data_ipp-erf_inv_datazerfc_inv_data_ipp-erfc_inv_dataz'erfc_inv_big_data_ipp-erfc_inv_big_datac                 C      | dkS r   rc   src   rc   rd   <lambda>'      r   )param_filterzexpint_1_data_ipp-expint_1_datar   zexpinti_data_ipp-expinti_dataz+expinti_data_double_ipp-expinti_data_doublez'expinti_data_long_ipp-expinti_data_longz'expint_small_data_ipp-expint_small_datazexpint_data_ipp-expint_dataztest_gamma_data_ipp-near_0ztest_gamma_data_ipp-near_1ztest_gamma_data_ipp-near_2ztest_gamma_data_ipp-near_m10ztest_gamma_data_ipp-near_m55gYLɞ=ztest_gamma_data_ipp-factorialsg&.!>g|=g|=z'igamma_small_data_ipp-igamma_small_datag+<z#igamma_med_data_ipp-igamma_med_dataz#igamma_int_data_ipp-igamma_int_dataz#igamma_big_data_ipp-igamma_big_datag-q=z%igamma_inva_data_ipp-igamma_inva_dataz3tgamma_delta_ratio_data_ipp-tgamma_delta_ratio_dataz1tgamma_delta_ratio_int_ipp-tgamma_delta_ratio_intz3tgamma_delta_ratio_int2_ipp-tgamma_delta_ratio_int2zhermite_ipp-hermitezlaguerre2_ipp-laguerre2zhyp2f1 insufficiently accurate.)knownfailurezlaguerre3_ipp-laguerre3z%log1p_expm1_data_ipp-log1p_expm1_datazbessel_i_data_ipp-bessel_i_data)r   r   gP7xf )r   atolz'bessel_i_int_data_ipp-bessel_i_int_datag&.>z3bessel_i_prime_int_data_ipp-bessel_i_prime_int_datagt@=gYnz'bessel_j_int_data_ipp-bessel_j_int_dataz+bessel_j_large_data_ipp-bessel_j_large_datagp~=zbessel_j_data_ipp-bessel_j_dataz3bessel_j_prime_int_data_ipp-bessel_j_prime_int_dataz7bessel_j_prime_large_data_ipp-bessel_j_prime_large_dataz'bessel_k_int_data_ipp-bessel_k_int_datazbessel_k_data_ipp-bessel_k_dataz3bessel_k_prime_int_data_ipp-bessel_k_prime_int_datagt =z+bessel_k_prime_data_ipp-bessel_k_prime_datag(3=z#bessel_y01_data_ipp-bessel_y01_dataz!bessel_yn_data_ipp-bessel_yn_dataz!bessel_yv_data_ipp-bessel_yv_datag|=z-bessel_yv_prime_data_ipp-bessel_yv_prime_datazzeta_data_ipp-zeta_datac                 C   r   r   rc   r   rc   rc   rd   r     r   zzeta_neg_data_ipp-zeta_neg_datac                 C   r   r   rc   r   rc   rc   rd   r     r   z!zeta_1_up_data_ipp-zeta_1_up_datac                 C   r   r   rc   r   rc   rc   rd   r     r   z'zeta_1_below_data_ipp-zeta_1_below_datac                 C   r   r   rc   r   rc   rc   rd   r     r   z-gamma_inv_small_data_ipp-gamma_inv_small_dataz!gamma_inv_data_ipp-gamma_inv_dataz)gamma_inv_big_data_ipp-gamma_inv_big_datazgdtrix unflow some points)r   r   g [n<zgdtrix bad some pointsznccs_ipp-nccsgiUMu>znccs_big_ipp-nccs_biggMb@?zchndtr inaccurate some pointsz)spherical_harmonic_ipp-spherical_harmonic)r   r   r   r   )r   r   c                 C      t | jdS N?r   Zonesshaper   rc   rc   rd   r         c                 C   r   r   r   r   rc   rc   rd   r     r   c                 C   s   t | dt j k | dkS )Nr   r   r   Zlogical_andr   r   rc   rc   rd   r     s    c                 C   s   t | t jk | dkS r   r   r   rc   rc   rd   r     s    )r   r   z#sph_bessel_data_ipp-sph_bessel_dataz%sph_neumann_data_ipp-sph_neumann_datagV瞯=zowens_t_ipp-owens_tz)owens_t_large_data_ipp-owens_t_large_datag-=z!ellint_rc_data_ipp-ellint_rc_datagV瞯<z!ellint_rd_data_ipp-ellint_rd_datazellint_rd_0xy_ipp-ellint_rd_0xyzellint_rd_0yy_ipp-ellint_rd_0yyzellint_rd_xxx_ipp-ellint_rd_xxxzellint_rd_xxz_ipp-ellint_rd_xxzg_1k<zellint_rd_xyy_ipp-ellint_rd_xyygMg<z!ellint_rf_data_ipp-ellint_rf_datazellint_rf_xxx_ipp-ellint_rf_xxxzellint_rf_xyy_ipp-ellint_rf_xyyzellint_rf_xy0_ipp-ellint_rf_xy0zellint_rf_0yy_ipp-ellint_rf_0yyzellint_rg_ipp-ellint_rggؗ<zellint_rg_xxx_ipp-ellint_rg_xxxzellint_rg_xyy_ipp-ellint_rg_xyyg [n<zellint_rg_xy0_ipp-ellint_rg_xy0zellint_rg_00x_ipp-ellint_rg_00xz!ellint_rj_data_ipp-ellint_rj_data)r   r   r   r   g}:c                 C   s   | dkS )Ng}:rc   r   rc   rc   rd   r      r   )r   r   r   test)Zidsc                 C      t |  d S rk   _test_factoryr   rc   rc   rd   
test_boostA     r   Z
mathieu_abZmathieu_ce_segHz>Zmathieu_mc_msc                 C   r   rk   r   r   rc   rc   rd   test_gslV  r   r   Zellipkinc_neg_mr.   Zellipeinc_neg_mZlog1p_expm1_complex)r   r   r"   r#   Zellip)r   r   r   r   r   rV   c                 C   r   rk   r   r   rc   rc   rd   
test_locali  r   r   c              	   C   s   t  3}|td tjdd | j|d W d   n1 s!w   Y  W d   dS W d   dS 1 s9w   Y  dS )z
Boost testz,The occurrence of roundoff error is detectedignore)all)dtypeN)r   filterrW   r   Zerrstatecheck)r   r   suprc   rc   rd   r   n  s   "r   )osZnumpyr   r   r   r   Znumpy.testingr   ZpytestZscipy.specialr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   Zscipy.integraterW   Zscipy.special._testutilsrX   loadpathjoindirname__file__r^   rf   rh   rY   rg   ri   rn   rs   ru   rv   rw   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZBOOST_TESTSZmarkZparametrizereprr   Z	GSL_TESTSr   ZLOCAL_TESTSr   Zdoubler   rc   rc   rc   rd   <module>   s(   N 
 !"#%'()*,-/0235689;<>?ACDEFGHIJLMNOQRSTUVWXY[\]_`abcefhijklmnopqrstuvwxy{|}~               	                                    !  "  $  %  &  '  )  *  ,  -  .  /  1  2  3  4  6  7  8  9  ;  =  >  ?  @  B  C  D  E  G  H  J  K  L  M  O  P  R  S  T  U  W  X  Y  [  \  ]  _  `  a  b  c  d  f  g  i  o  p  r  s       	                                     "    $    ,    .    0    2    4    6
    y