3
Oda%                @   s^  d Z ddlZddlmZmZ ddlmZ ddlZddlZddl	m
Z
 ddljZddlmZmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZ ddlmZm Z m!Z!m"Z"m#Z#m$Z$ yddl%Z%W n e&k
r   ed	Z%Y nX ee%d
dd Z'ee%ddd Z(ee%ddd Z)ee%ddd Z*ee%ddd Z+ee%ddd Z,ee%ddd Z-ee%ddd Z.ee%dd d! Z/ee%d"ej0j1d#d$ Z2ee%dd%d& Z3ee%d'd(d) Z4ee%d'd*d+ Z5d,Z6ee%dd-d. Z7ee%dd/d0 Z8ee%dej0j1d1d2 Z9ee%dej0j1d3d4 Z:ee%dd5d6 Z;ee%dd7d8 Z<ee%dej0j1d9d: Z=ee%dej0j1d;d< Z>ee%dd=d> Z?ee%dd?d@ Z@ee%ddAdB ZAdCdD ZBej0j1ee%ddEdF ZCej0j1ee%ddGdH ZDej0j1ee%ddIdJ ZEej0j1ee%ddKdL ZFeGdMdMdNZHej0j1ee%dOG dPdQ dQeIZJdS )Rz4
Test SciPy functions versus mpmath, if available.

    N)assert_assert_allclose)pi)LooseVersion)MissingModulecheck_versionFuncDataassert_func_equal)
ArgFixedArg
ComplexArgIntArgassert_mpmath_equalnonfunctional_tooslow
trace_argstime_limitedexception_to_nan
inf_to_nan)_sinpi_cospi_lgam1p_lanczos_sum_expg_scaled_log1pmx	_igam_facmpmathz0.10c              C   s   g } x^t jd	ddD ]L}xFt jddt j dD ].}|t jd|  }| j|ttj|f q.W qW t j	| t j
d} ttj| ddj  d S )
Nc      
   r      y              ?)dtype   i)nplogspacelinspacer   expappendcomplexr   eiarrayZcomplex_r   scexpicheck)datasetrpz r0   S/var/www/html/virt/lib64/python3.6/site-packages/scipy/special/tests/test_mpmath.pytest_expi_complex#   s     r2   z0.19c              C   s   g } xVdD ]N}xHt jdddD ]6}tjd" | j||ttj||f W d Q R X qW q
W t j| } tt	j
| ddd	d
j  d S )N2   3   r         d   r    r   gvIh%<=)rtol)r3   r4   )r   r    )r!   r"   r   workdpsr%   floatexpintasarrayr   r)   expnr+   )r,   nxr0   r0   r1   test_expn_large_n3   s    
.
r@   c              C   s   g } ddddddg}xj|D ]b}x\|D ]T}xN|D ]F}|d|  }t jd tt j||}W d Q R X | j|||f q.W q$W qW tj| } tdd | dd
ddj  d S )Ng     X@g      #@g      ?y              ?x   c             S   s   t j| j|S )N)r)   hyp0f1real)vr/   r0   r0   r1   <lambda>U   s    z$test_hyp0f1_gh5764.<locals>.<lambda>r   r    r   gvIh%<=)r8   g     Xg      #g      )r   r    )	r   r9   r&   rB   r%   r!   r(   r   r+   )r,   ZaxisrD   r?   yr/   resr0   r0   r1   test_hyp0f1_gh5764D   s    



rH   c              C   sF   t jddd} tj| d}t jdd | D }t||jtdd d S )	N         g      ?c             S   s   g | ]}t j|d qS )g      ?)r   rB   ).0rD   r0   r0   r1   
<listcomp>^   s    z'test_hyp0f1_gh_1609.<locals>.<listcomp>g-q=)r8   )r!   r#   r)   rB   r(   r   astyper:   )vvafZmfr0   r0   r1   test_hyp0f1_gh_1609Y   s    rQ   z1.1.0c              C   s   g } xt jddD ]p}xjt jdddD ]X}| }| j||dttj||df | | d }| j||dttj||df q&W qW x:dD ]2}x,dD ]$}| j||dttj||df qW qW t j| } tt	j| dddddj
  d S )N      r   r    g      %@      ?      ?r   g      ?r         @   gV瞯<g-a=)r8   atolrY         %            )rZ   r[   r\   r   rU   r    r               )r]   r^   r   rU   r    rT   r   rV   )r   r    r   )r!   aranger#   r%   r:   r   hyperur(   r   r)   r+   )r,   r>   bar0   r0   r1   test_hyperu_around_0f   s     (

(
rc   z1.0.0c                 s|   ddg} | t tjddddgdd7 } dd | D } td	d
  fdd| D }tj|tjd}ttj	|ddddj
  d S )Nr   r    ffffff?i  r5   )repeatc             S   sD   g | ]<\}}}}||krt ||kr|d k r|dkr||||fqS )r   i  i)round)rL   rb   ra   cr?   r0   r0   r1   rM      s    
z.test_hyp2f1_strange_points.<locals>.<listcomp>T)Z	eliminatec                s"   g | ]}|t tj| f qS r0   )r:   r   hyp2f1)rL   r.   )kwr0   r1   rM      s    )r   r   rW   g|=)r8   rj   )r   rj   rj   rd   rk   )r   rk   rk   rd   gffffffi)r   r    r   rW   )list	itertoolsproductdictr!   r(   float_r   r)   rh   r+   )ptsr,   r0   )ri   r1   test_hyp2f1_strange_points|   s    
rr   z0.13c              C   s   d)d.d3d6d9d<d=d@dBdEdFdIdKdMdPdRdTdWdYd\d_g} d"d# | D }t j|t jd$}t jd%d& ttj|d`dd'd(j  W d Q R X d S )aNr    r   rW   r         ?g       @g      @   g      ;@    r5   g      @g      T@Q         ?x&?rR   333333?      ?+?Gz?      ?      @g      
@   *4]92@|O%@Cu?r           %@   g     p@c             S   s    g | ]}|t tj| f qS r0   )r:   r   rh   )rL   r.   r0   r0   r1   rM      s    z0test_hyp2f1_real_some_points.<locals>.<listcomp>)r   ignore)invalidg|=)r8   )r    r   rW   r   UUUUUU?UUUUUU?竪?      ?)r   r   r   r         ?      ?      ?X<ݚ?)r   r   r   r   rk   )r   rk   r   rW   r   rk   )r   r   rk   rW               )r   r   r   rW   )r    r   rW   r   rj   rY   )rx   rj   rY   ry   UUUUUU?)rz   r   r   r{   UUUUUU?rj   )rz   r   r   rj   )r   rW   rR   r|         ?      )r   r   rW   r|         
)r   r~   r   r{   )r   r   r   r         %)r   r   r   r|   )r   r   r   r|   rj   )rj   r   r    rs   rj         )rj   r   r    r   r   )r   r   rR   rs   r         )r   r   rR   r        pm˟?)r}   r   rw   r   )r   r    r   rW   )r!   r(   rp   errstater   r)   rh   r+   )rq   r,   r0   r0   r1   test_hyp2f1_real_some_points   s2    r   z0.14c                 sP   dddg} d	d
   fdd| D }t j|t jd}ttj|ddddj  d S ) Np   r4   r   	   gwJ?i        %@Gz?c             S   s&   t | trt| d | d  S | S d S )Nr   r    )
isinstancetupler:   )r?   r0   r0   r1   fev   s    
z&test_hyp2f1_some_points_2.<locals>.fevc                s*   g | ]"}t t |ttj| f qS r0   )r   mapr:   r   rh   )rL   r.   )r   r0   r1   rM      s    z-test_hyp2f1_some_points_2.<locals>.<listcomp>)r   r   r    r   rW   r5   g|=)r8   r4   r   r   r   wJ)r   r   r   r   |)r   r   r   r   |      %)r   r   r   r   )r   r    r   rW   )r!   r(   rp   r   r)   rh   r+   )rq   r,   r0   )r   r1   test_hyp2f1_some_points_2   s    r   c              C   s   g } xzdD ]r}xldD ]d}x^d!D ]V}xPd%D ]H}yt tj||||}W n tk
rZ   w(Y nX | j|||||f q(W qW qW q
W tj| tjd} tjdd  t	t
j| d&ddddj  W d Q R X d S )'Nr   rR   ?g      @r    皙@r   ffffff4@g)\(?gGz?r   333333?ffffff?      ?)r   r   )r   r   rW   r5   g&.>T)r8   ignore_inf_signrY   )r   rY   r   r   rR   r         rj   )r   rj   r    r   )r   r   rR   r   )\(Gz)r   r   r   r   r   r   r   r   )r   r    r   rW   )r:   r   rh   	Exceptionr%   r!   r(   rp   r   r   r)   r+   )r,   rb   ra   rg   r/   rD   r0   r0   r1   test_hyp2f1_real_some   s    



$r   z0.12c              C   s  d} t j| dft j}t jjd t jjd| |d d df< t jjd| |d d df< t jjd| |d d df< dt jj|  d |d d df< |d d df  dt jjd|  9  < |d d df  dt jjd|  9  < |d d df  dt jjd|  9  < xr|D ]j}tj	d	k rRt
|d d j t
|d krRt
|d d j |d< ttjt|d d
  |d
< qW ttj|dd
ddj  d S )Ni  rR   i  g      ?r   r    r   rW   z0.14r5   g&.>)r8   rj   rj   rj   )r   r    r   rW   )r!   zerosrp   randomseedZparetoZrandrandintr   __version__absmaxr:   rh   r   r   r)   r+   )Znpointsr,   Zdsr0   r0   r1   test_hyp2f1_real_random   s      &&&
"$r   c              C   s   t jjt jj } }zdt j_tjtjdddtjddd\}}tjtjdddtjddd\}}tj|j	 |j	 f dtj|j	 |j	 f   }t
tjd	d
 |ddd t
tjdd
 |ddd W d | | t j_t j_X d S )NF   r   r          P   g?y              ?c             S   s   t tj| S )N)r&   r   erf)r?   r0   r0   r1   rE      s    z"test_erf_complex.<locals>.<lambda>FgvIh%<=)
vectorizedr8   c             S   s   t tj| S )N)r&   r   erfc)r?   r0   r0   r1   rE      s    iiii)r   mpdpsprecr!   meshgridr#   r"   r_ravelr	   r)   r   r   )old_dpsold_precx1y1Zx2y2Zpointsr0   r0   r1   test_erf_complex   s    $$0
r   z0.15c                 sV  g }  xdD  ]}| j dd|fdd |fd!d|fd"d#|fdd|fdd$|fd%d|fd&d'|fdd	|fdd
|fdd|fdd
|fd(d|fd)d
|fdd*|fdd+|fd,d-|fd.d/|fdd|fdd|fd0d|fd1d|fdd2|fdd3|fd4d5|fd6d7|fg qW dd   fdd| D }tj|tjd}dd }tjdd t||d8ddddj  W d Q R X d S )9NgGz?gm?ư>L7A`?r    r   g333333?g@r   r   rW   r   rR   g @g&@c             S   s2   |t |kr$|dkr$|dkr dS dS tj| ||S )Nr    r   )intr   legenp)numur?   r0   r0   r1   mplegenp+  s
    ztest_lpmv.<locals>.mplegenpc                s*   g | ]"}| |d  |d |d f qS )r    r   r   r0   )rL   r.   )r   r0   r1   rM   4  s    ztest_lpmv.<locals>.<listcomp>)r   c             S   s   t j| jt||S )N)r)   lpmvrN   r   )r   r   r?   r0   r0   r1   evf7  s    ztest_lpmv.<locals>.evfr   )r   r   g|=g+=)r8   rX   Gzm)r   r   r   r   r    rj   rj   rj   rk   g333333rj   rj   gr   rY   iir   irY   ir   rY   g g&r   g rY   g&)r   r    r   )extendr!   r(   rp   r   r   r+   )rq   r?   r,   r   r0   )r   r1   	test_lpmv
  sF    	r   c              C   s  t jjd t jt jdddt jdddt jdddt jdddt jdddd dddddf
 } | }t jt j|d d d f | d d d f jdd j	}t
jjt
jj }}z>dt
j_ttjdd |dddd ttjdd |ddd W d || t
j_t
j_X d S )!Ni  r6   r5   r   r    r   g      ?gffffff@rW   g33333Y@g3333@r   i  c             S   s   t tj| |S )N)r:   r   beta)rb   ra   r0   r0   r1   rE   U  s    ztest_beta.<locals>.<lambda>Fg|=T)r   r8   r   c             S   s   t tjttj| |S )N)r:   r   logr   r   )rb   ra   r0   r0   r1   rE   ]  s    )r   r8   i8irj   iirj   gffffffr   g33333Yg3333rj   )r!   r   r   r   r"   r_   r(   Zbroadcast_arraysreshapeTr   r   r   r   r	   r)   r   Zbetaln)ra   rb   abr   r   r0   r0   r1   	test_betaB  s2    4r   g?c              C   s   t tjdddddg } tjddtj d}tj| |\} }| tjd|  }tjd| d| f j }dd	 |D }tj|}t	t
j|ddd
dj  d S )Ng?g{Gz?r   r   rS   y              ?r    c             S   s   g | ]}|t tj|fqS r0   )r&   r   loggamma)rL   z0r0   r0   r1   rM   w  s    z3test_loggamma_taylor_transition.<locals>.<listcomp>gvIh%,=)r8   gg{Gz)LOGGAMMA_TAYLOR_RADIUSr!   r(   r#   r   r   r$   r   flattenr   r)   r   r+   )r-   thetadzr/   r,   r0   r0   r1   test_loggamma_taylor_transitionl  s    
r   c              C   s   t jdt jtd} t jddt j d}t j| |\} }| t jd|  }t jd| d| f j	 }dd	 |D }t j
|}ttj|ddd
dj  d S )N   r   r   r   rS   y              ?r    c             S   s   g | ]}|t tj|fqS r0   )r&   r   r   )rL   r   r0   r0   r1   rM     s    z(test_loggamma_taylor.<locals>.<listcomp>gvIh%,=)r8   i)r!   r"   log10r   r#   r   r   r$   r   r   r(   r   r)   r   r+   )r-   r   r   r/   r,   r0   r0   r1   test_loggamma_taylor}  s    
r   c              C   s   t jt jddd dt jdddf } | j }t j| |\} }| d|  }t jdddjddd}|t j|f|j  j	 }t
jd dd	 |D }W d Q R X t j|}ttj|ddd
dj  d S )Nr    r   rW   r   y              ?   r7   c             S   s   g | ]}|t tj|fqS r0   )r&   r   rgamma)rL   r   r0   r0   r1   rM     s    z%test_rgamma_zeros.<locals>.<listcomp>g-q=)r8   rj   iirj   iVrj   rj   )r!   r   r"   copyr   r_   r   dstacksizer   r   r9   r(   r   r)   r   r+   )dxdyr   r   r/   r,   r0   r0   r1   test_rgamma_zeros  s    &
r  c              C   s   t jt jd} t| g}t jt jd} |jt|  tj|}tjdtjddd dtjddddf }|j	 }tj
||\}}|d|  }|tj|f|j  j }t jd	 d
d |D }W d Q R X tj|}ttj|ddddj  d S )Ng      ?g      ?gQ?r       r   r   y              ?r   c             S   s   g | ]}|t tj|fqS r0   )r&   r   digamma)rL   r   r0   r0   r1   rM     s    z&test_digamma_roots.<locals>.<listcomp>g+=)r8   g      gQοrj   iirj   )r   Zfindrootr  r:   r%   r!   r(   r   r"   r   r   r   r   r   r9   r   r)   r+   )rootrootsr   r  r   r/   r,   r0   r0   r1   test_digamma_roots  s    

*
r  c                 s   t tj tjddd } tjtjddd dtjdddf }tj| |\} }| d|  j }tjd  fd	d
|D }W d Q R X tj	|}t
tj|ddddj  d S )Ni,  r   r7   r   rW   rR   y              ?(   c                s   g | ]}|t  |fqS r0   )r&   )rL   r   )r  r0   r1   rM     s    z(test_digamma_negreal.<locals>.<listcomp>r    gvIh%<=)r8   ir   r   )r   r   r  r!   r"   r   r   r   r9   r<   r   r)   r+   )r?   rF   r/   r,   r0   )r  r1   test_digamma_negreal  s    
&
r	  c              C   s   t jddd } t jddddg}t j| |\} }| d|  j }tjd dd |D }W d Q R X t j|}tt	j
|d	d
ddj  d S )Ni,  r   r7   gffffff@g@y              ?c             S   s   g | ]}|t tj|fqS r0   )r&   r   r  )rL   r   r0   r0   r1   rM     s    z)test_digamma_boundary.<locals>.<listcomp>r   r    gvIh%<=)r8   igffffffg)r!   r"   r(   r   r   r   r9   r<   r   r)   r  r+   )r?   rF   r/   r,   r0   r0   r1   test_digamma_boundary  s    
r
  c              C   s   d} t jd|  d|  d}|j }t j||\}}|j |j  }}tjd dd t||D }W d Q R X t j|}t	t
j|ddd
dj  d S )NrS   g      ?r   r3   r7   c          
   S   s*   g | ]"\}}||t tj||d dfqS )T)ra   regularized)r:   r   gammainc)rL   Za0Zx0r0   r0   r1   rM     s   z*test_gammainc_boundary.<locals>.<listcomp>r   r    g-q=)r8   )r   r    )r!   r#   r   r   r   r   r9   zipr(   r   r)   r  r+   )smallrb   r?   r,   r0   r0   r1   test_gammainc_boundary  s    
r  c                 sv   dd  t jdd} t jddt }dt j| t jd|  j }t j fd	d
|D }ttj	|ddddj
  d S )Nc             S   s   t tjdd|  S )Nr   r    )r&   r   polylog)r/   r0   r0   r1   spence  s    z"test_spence_circle.<locals>.spenceg      ?g      ?r   r   r    y              ?c                s   g | ]}| |fqS r0   r0   )rL   r   )r  r0   r1   rM     s    z&test_spence_circle.<locals>.<listcomp>g+=)r8   )r!   r#   r   outerr$   r   r<   r   r)   r  r+   )r-   r   r/   r,   r0   )r  r1   test_spence_circle  s    r  c              C   s   t jtj} t jt jddd dt jdddf }|j }t j||\}}|d|  }t jdddj	ddd}|t j
|f|j  j }t jdd |D }tt|ddd	|  d
j  d S )Nr   r   rW   y              ?r7   r    c             S   s   g | ]}|t tj|fqS r0   )r&   r   sinpi)rL   r   r0   r0   r1   rM     s   z$test_sinpi_zeros.<locals>.<listcomp>r   )r8   iiirj   )r!   finfor:   epsr   r"   r   r   r_   r   r   r   r   r<   r   r   r+   )r  r   r  r   r   r/   r,   r0   r0   r1   test_sinpi_zeros  s    &

r  c              C   s   t jtj} t jt jddd dt jdddf }|j }t j||\}}|d|  }t jdddd j	ddd}|t j
|f|j  j }t jdd	 |D }tt|ddd
|  dj  d S )Nr   r   rW   y              ?r7   r    g      ?c             S   s   g | ]}|t tj|fqS r0   )r&   r   cospi)rL   r   r0   r0   r1   rM   +  s   z$test_cospi_zeros.<locals>.<listcomp>r   )r8   iiirj   )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   r0   r1   test_cospi_zeros"  s    &

r  c        	      C   s   dd } dd }t jddd}t jt jddd	 dt jddd	f }g }xF|D ]>}ttj|}x*|D ]"}|| }|j|||||f qfW qNW t j|}t	| |dd
ddj
  d S )Nc             S   s   t j| |d S )Nr   )r)   ellipj)umr0   r0   r1   dn7  s    z"test_dn_quarter_period.<locals>.dnc             S   s   t tjd| |dS )Nr  )r  r  )r:   r   ellipfun)r  r  r0   r0   r1   	mpmath_dn:  s    z)test_dn_quarter_period.<locals>.mpmath_dnr   r    rS   r  r   r   g|=)r8   rj   iirj   )r   r    )r!   r#   r   r"   r:   r   ellipkr%   r<   r   r+   )	r  r  r  Zdur,   Zm0Zu0Zdu0r.   r0   r0   r1   test_dn_quarter_period5  s    &


r!  c             C   sR   t j|> t j| } t j| jt j dt j  }t jt j| |}W d Q R X |S )Nr   )r   r9   Zmpcceilimagr   lambertwr$   )r/   r   ZunwindrG   r0   r0   r1   _mpmath_wrightomegaN  s
    
r%  c        	      C   s8  t jddd } t jt jt jg}t jt jt j g}t jt j t jg}t jt j t j g}xttdD ]h}|jt j|d t j |jt j|d t j  |jt j|d t j |jt j|d t j  qjW t j||||f}t j| |\} }| d|  j	 }t j
dd |D }ttj|ddd	d
j  d S )Nr   r      r3   r    y              ?c             S   s   g | ]}|t t|d fqS )r&  )r&   r%  )rL   r   r0   r0   r1   rM   g  s   z+test_wrightomega_branch.<locals>.<listcomp>g:0yE>)r8   rj   rj   rj   rj   )r!   r"   Z	nextafterr   infranger%   Zhstackr   r   r<   r   r)   wrightomegar+   )	r?   Zpicut_aboveZpicut_belowZnpicut_aboveZnpicut_belowirF   r/   r,   r0   r0   r1   test_wrightomega_branchV  s     

r+  c              C   sn   t jd	d} t jddt j }t j| |\} }| d|  j }t jdd |D }ttj|ddddj	  d S )
Nr   r    y              ?c             S   s   g | ]}|t t|d fqS )r&  )r&   r%  )rL   r   r0   r0   r1   rM   v  s   z,test_wrightomega_region1.<locals>.<listcomp>r   gV瞯<)r8   rk   )
r!   r#   r   r   r   r<   r   r)   r)  r+   )r?   rF   r/   r,   r0   r0   r1   test_wrightomega_region1m  s    

r,  c              C   sn   t jd	d} t jd
t j d}t j| |\} }| d|  j }t jdd |D }ttj|ddddj	  d S )Nr   r    y              ?c             S   s   g | ]}|t t|d fqS )r&  )r&   r%  )rL   r   r0   r0   r1   rM     s   z,test_wrightomega_region2.<locals>.<listcomp>r   gV瞯<)r8   rk   rk   rj   )
r!   r#   r   r   r   r<   r   r)   r)  r+   )r?   rF   r/   r,   r0   r0   r1   test_wrightomega_region2|  s    

r-  c              C   sn   t jd	ddt jd
dd } }t j| |\} }| d|  j }t jdd |D }ttj|ddddj  d S )Nr    r&  y              ?c             S   s   g | ]}|t tj|fqS r0   )r&   r   r$  )rL   r   r0   r0   r1   rM     s   z(test_lambertw_smallz.<locals>.<listcomp>r   gvIh%<=)r8   rj   rj   )	r!   r#   r   r   r<   r   r)   r$  r+   )r?   rF   r/   r,   r0   r0   r1   test_lambertw_smallz  s    

r.  r6   )maxprecmaxtermsz0.17c               @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zejjd3d4d5d6d7 Zd8d9 Z ejjd3d4d5d:d; Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%dDdE Z&dFdG Z'dHdI Z(dJdK Z)dLdM Z*dNdO Z+dPdQ Z,dRdS Z-dTdU Z.dVdW Z/dXdY Z0dZd[ Z1d\d] Z2d^d_ Z3d`da Z4dbdc Z5ddde Z6dfdg Z7dhdi Z8djdk Z9dldm Z:dndo Z;dpdq Z<drds Z=dtdu Z>dvdw Z?dxdy Z@dzd{ ZAd|d} ZBd~d ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOejjd3ddd ZPdd ZQejjd3ddd ZReSdd ZTdd ZUdd ZVejjd3dd5dd ZWdd ZXdd ZYdd ZZejjd3ddd Z[eSdd Z\ejjd3ddd Z]ejj^ddd Z_dd Z`dd Zaejjd3ddd Zbdd Zcdd Zddd ZeeSddĄ ZfddƄ Zgejj^dǃddɄ Zhdd˄ ZieSdd̈́ Zjddτ Zkddф Zlddӄ ZmddՄ Znejjd3dd5dd؄ ZoeSddڄ Zpdd܄ Zqddބ Zrejjd3ddd Zsejjd3dd5dd Ztdd Zuejjd3dd5dd Zvdd Zwdd Zxejjdddd Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd  Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zejjd3d#d5d$d% Zd&S ('  TestSystematicc             C   s<   t dd tjtddgdd t dd tjtd	dg d S )
Nc             S   s   t j| d S )Nr   )r)   airy)r/   r0   r0   r1   rE     s    z,TestSystematic.test_airyai.<locals>.<lambda>g    חAgh㈵>)r8   c             S   s   t j| d S )Nr   )r)   r2  )r/   r0   r0   r1   rE     s    g     @@g    חg     @)r   r   airyair
   )selfr0   r0   r1   test_airyai  s    
zTestSystematic.test_airyaic             C   s   t dd tjt g d S )Nc             S   s   t j| d S )Nr   )r)   r2  )r/   r0   r0   r1   rE     s    z4TestSystematic.test_airyai_complex.<locals>.<lambda>)r   r   r3  r   )r4  r0   r0   r1   test_airyai_complex  s    z"TestSystematic.test_airyai_complexc             C   s@   t dd dd td
dgdd t dd dd tdd	g d S )Nc             S   s   t j| d S )Nr    )r)   r2  )r/   r0   r0   r1   rE     s    z2TestSystematic.test_airyai_prime.<locals>.<lambda>c             S   s   t j| ddS )Nr    )
derivative)r   r3  )r/   r0   r0   r1   rE     s    g    חAgh㈵>)r8   c             S   s   t j| d S )Nr    )r)   r2  )r/   r0   r0   r1   rE     s    c             S   s   t j| ddS )Nr    )r7  )r   r3  )r/   r0   r0   r1   rE     s    g     @@g    חg     @)r   r
   )r4  r0   r0   r1   test_airyai_prime  s
    
z TestSystematic.test_airyai_primec             C   s   t dd dd t g d S )Nc             S   s   t j| d S )Nr    )r)   r2  )r/   r0   r0   r1   rE     s    z:TestSystematic.test_airyai_prime_complex.<locals>.<lambda>c             S   s   t j| ddS )Nr    )r7  )r   r3  )r/   r0   r0   r1   rE     s    )r   r   )r4  r0   r0   r1   test_airyai_prime_complex  s    z(TestSystematic.test_airyai_prime_complexc             C   s@   t dd dd td
dgdd t dd dd tdd	g d S )Nc             S   s   t j| d S )Nr   )r)   r2  )r/   r0   r0   r1   rE     s    z,TestSystematic.test_airybi.<locals>.<lambda>c             S   s
   t j| S )N)r   airybi)r/   r0   r0   r1   rE     s    g    חAgh㈵>)r8   c             S   s   t j| d S )Nr   )r)   r2  )r/   r0   r0   r1   rE     s    c             S   s
   t j| S )N)r   r:  )r/   r0   r0   r1   rE     s    g     @@g    חg     @)r   r
   )r4  r0   r0   r1   test_airybi  s
    
zTestSystematic.test_airybic             C   s   t dd dd t g d S )Nc             S   s   t j| d S )Nr   )r)   r2  )r/   r0   r0   r1   rE     s    z4TestSystematic.test_airybi_complex.<locals>.<lambda>c             S   s
   t j| S )N)r   r:  )r/   r0   r0   r1   rE     s    )r   r   )r4  r0   r0   r1   test_airybi_complex  s    z"TestSystematic.test_airybi_complexc             C   s@   t dd dd td
dgdd t dd dd tdd	g d S )Nc             S   s   t j| d S )NrW   )r)   r2  )r/   r0   r0   r1   rE     s    z2TestSystematic.test_airybi_prime.<locals>.<lambda>c             S   s   t j| ddS )Nr    )r7  )r   r:  )r/   r0   r0   r1   rE     s    g    חAgh㈵>)r8   c             S   s   t j| d S )NrW   )r)   r2  )r/   r0   r0   r1   rE     s    c             S   s   t j| ddS )Nr    )r7  )r   r:  )r/   r0   r0   r1   rE     s    g     @@g    חg     @)r   r
   )r4  r0   r0   r1   test_airybi_prime  s
    
z TestSystematic.test_airybi_primec             C   s   t dd dd t g d S )Nc             S   s   t j| d S )NrW   )r)   r2  )r/   r0   r0   r1   rE     s    z:TestSystematic.test_airybi_prime_complex.<locals>.<lambda>c             S   s   t j| ddS )Nr    )r7  )r   r:  )r/   r0   r0   r1   rE     s    )r   r   )r4  r0   r0   r1   test_airybi_prime_complex  s    z(TestSystematic.test_airybi_prime_complexc             C   s"   t tjtdd tddg d S )Nc             S   s   t jd| ftS )Nr   )r   beiHYPERKW)r/   r0   r0   r1   rE     s    z)TestSystematic.test_bei.<locals>.<lambda>g     @@g     @)r   r)   r?  r   r
   )r4  r0   r0   r1   test_bei  s    
zTestSystematic.test_beic             C   s"   t tjtdd tddg d S )Nc             S   s   t jd| ftS )Nr   )r   berr@  )r/   r0   r0   r1   rE     s    z)TestSystematic.test_ber.<locals>.<lambda>g     @@g     @)r   r)   rB  r   r
   )r4  r0   r0   r1   test_ber  s    
zTestSystematic.test_berc             C   s&   t dd dd tddgddd d S )Nc             S   s   t jt| t|  S )N)r)   	bernoullir   )r>   r0   r0   r1   rE     s    z/TestSystematic.test_bernoulli.<locals>.<lambda>c             S   s   t tjt| S )N)r:   r   rD  r   )r>   r0   r0   r1   rE     s    r   i2  g&.>)r8   r>   )r   r   )r4  r0   r0   r1   test_bernoulli  s    
zTestSystematic.test_bernoullic             C   s*   t tjtdd tddt gdd d S )Nc             S   s   t j| |ftS )N)r   besselir@  )rD   r/   r0   r0   r1   rE     s    z-TestSystematic.test_besseli.<locals>.<lambda>g}Ô%ITgJD)rX   g}Ô%I)r   r)   ivr   r
   )r4  r0   r0   r1   test_besseli  s    
zTestSystematic.test_besselic             C   s(   t dd tdd tddt g d S )Nc             S   s   t j| j|S )N)r)   rG  rC   )rD   r/   r0   r0   r1   rE     s    z5TestSystematic.test_besseli_complex.<locals>.<lambda>c             S   s   t j| |ftS )N)r   rF  r@  )rD   r/   r0   r0   r1   rE     s    g}Ô%ITg}Ô%I)r   r   r
   r   )r4  r0   r0   r1   test_besseli_complex  s    
z#TestSystematic.test_besseli_complexc             C   sZ   t tjtdd tddtddgdd t tjtdd tddtddgdd	d
 d S )Nc             S   s   t j| |ftS )N)r   besseljr@  )rD   r/   r0   r0   r1   rE      s    z-TestSystematic.test_besselj.<locals>.<lambda>g}Ô%ITg     @@T)r   c             S   s   t j| |ftS )N)r   rJ  r@  )rD   r/   r0   r0   r1   rE     s    g    חAgh㈵>)r   r8   g}Ô%Ig     @g}Ô%Ig    ח)r   r)   jvr   r
   )r4  r0   r0   r1   test_besselj  s    

zTestSystematic.test_besseljc             C   s$   t dd tdd t t g d S )Nc             S   s   t j| j|S )N)r)   rK  rC   )rD   r/   r0   r0   r1   rE     s    z5TestSystematic.test_besselj_complex.<locals>.<lambda>c             S   s   t j| |ftS )N)r   rJ  r@  )rD   r/   r0   r0   r1   rE     s    )r   r   r
   r   )r4  r0   r0   r1   test_besselj_complex  s    
z#TestSystematic.test_besselj_complexc             C   s,   t tjtjtddtdtjgddd d S )Nr6   r   Fg-q=)nan_okr8   i8)r   r)   kvr   besselkr
   r!   r'  )r4  r0   r0   r1   test_besselk  s    zTestSystematic.test_besselkc             C   s,   t tjtjtddtdtjgddd d S )Nr6   r   Fg-q=)rN  r8   i8)	r   r)   knr   rP  r   r
   r!   r'  )r4  r0   r0   r1   test_besselk_int  s    zTestSystematic.test_besselk_intc             C   s(   t dd tdd tddt g d S )Nc             S   s   t j| j|S )N)r)   rO  rC   )rD   r/   r0   r0   r1   rE     s    z5TestSystematic.test_besselk_complex.<locals>.<lambda>c             S   s   t j| |ftS )N)r   rP  r@  )rD   r/   r0   r0   r1   rE     s    g}Ô%ITg}Ô%I)r   r   r
   r   )r4  r0   r0   r1   test_besselk_complex  s    
z#TestSystematic.test_besselk_complexc             C   s2   dd }t tjt|tddtddgdd d S )	Nc             S   sN   t tj| |ft}t|dkr0tjtj| }t|dkrJ|dkrJtjS |S )NgقnQ:Br   )	r:   r   besselyr@  r   r!   r'  signnan)rD   r?   r-   r0   r0   r1   	mpbessely"  s    z.TestSystematic.test_bessely.<locals>.mpbesselyg}Ô%ITg    חAi  )r>   g}Ô%Ig    ח)r   r)   yvr   r
   )r4  rX  r0   r0   r1   test_bessely!  s
    	zTestSystematic.test_besselyc             C   s,   dd }t dd t|t t gdd d S )Nc          
   S   sL   t tj| |ft}t|dkrHtjdd tjtj| }W d Q R X |S )NgقnQ:Br   )r   )	r&   r   rU  r@  r   r!   r   r'  rV  )rD   r?   r-   r0   r0   r1   rX  1  s
    z6TestSystematic.test_bessely_complex.<locals>.mpbesselyc             S   s   t j| j|S )N)r)   rY  rC   )rD   r/   r0   r0   r1   rE   8  s    z5TestSystematic.test_bessely_complex.<locals>.<lambda>i:  )r>   )r   r   r
   r   )r4  rX  r0   r0   r1   test_bessely_complex0  s
    
z#TestSystematic.test_bessely_complexc             C   s0   dd }t dd t|tddtddg d S )	Nc             S   s.   t tj| |}t|dkr*|dkr*tjS |S )Nr   )r:   r   rU  r   r!   rW  )rD   r?   r-   r0   r0   r1   rX  >  s    z2TestSystematic.test_bessely_int.<locals>.mpbesselyc             S   s   t jt| |S )N)r)   Zynr   )rD   r/   r0   r0   r1   rE   D  s    z1TestSystematic.test_bessely_int.<locals>.<lambda>i  g    חAig    ח)r   r   r   r
   )r4  rX  r0   r0   r1   test_bessely_int=  s    zTestSystematic.test_bessely_intc                sV   g  d fdd	t tjfddt t gddd t tjtj ddd	d
 d S )NFc                sj   | dk s|dk rt jS | dk s&|dk r^tt| | d dkr^|r^ jt| t|f t jS tj| |S )Ng   mBr   r    g   mg   m)r!   rW  r   r:   r%   r   r   )rb   ra   nonzero)
bad_pointsr0   r1   r   K  s    (z&TestSystematic.test_beta.<locals>.betac                s    | |ddS )NT)r]  r0   )rb   ra   )r   r0   r1   rE   [  s    z*TestSystematic.test_beta.<locals>.<lambda>i  T)r   r   gdy=)r   r   rX   )F)r   r)   r   r
   r!   r(   )r4  r0   )r^  r   r1   r   H  s    

zTestSystematic.test_betac             C   s,   t tjt tdd t t t g d S )Nc             S   s   t j| |d|ddS )Nr   T)r  )r   betainc)rb   ra   r?   r0   r0   r1   rE   i  s    z-TestSystematic.test_betainc.<locals>.<lambda>)r   r)   r_  r   r   r
   )r4  r0   r0   r1   test_betaincg  s    zTestSystematic.test_betaincc                sR   g  d
 fdd	t tjfddt t gdd t tjtj ddd	 d S )NFc                sx   t |dt | d  krtjS | |k rlt t| | tjt| |  dk rl|rl jt| t|f tjS tj| |S )Ng    חAr    gV瞯<)r   r!   rW  r:   rf   r%   r   binomial)r>   kr]  )r^  r0   r1   ra  o  s    .z+TestSystematic.test_binom.<locals>.binomialc                s    | |ddS )NT)r]  r0   )r>   rb  )ra  r0   r1   rE     s    z+TestSystematic.test_binom.<locals>.<lambda>i  )r   g+=)r   rX   )F)r   r)   Zbinomr
   r!   r(   )r4  r0   )r^  ra  r1   
test_binoml  s    

zTestSystematic.test_binomc             C   s(   t dd tdd t t gdd d S )Nc             S   s   t jt| |S )N)r)   eval_chebytr   )r>   r?   r0   r0   r1   rE     s    z0TestSystematic.test_chebyt_int.<locals>.<lambda>c             S   s   t j| |ftS )N)r   chebytr@  )r>   r?   r0   r0   r1   rE     s    r3   )r   )r   r   r   r
   )r4  r0   r0   r1   test_chebyt_int  s    
zTestSystematic.test_chebyt_intFz'some cases in hyp2f1 not fully accurate)runreasonc             C   s&   t tjdd tddt gdd d S )Nc             S   s   t  ttj| |ftS )N)r   r   r   re  r@  )r>   r?   r0   r0   r1   rE     s    z,TestSystematic.test_chebyt.<locals>.<lambda>e   i'  )r>   i)r   r)   rd  r
   )r4  r0   r0   r1   test_chebyt  s    zTestSystematic.test_chebytc             C   s(   t dd tdd t t gdd d S )Nc             S   s   t jt| |S )N)r)   eval_chebyur   )r>   r?   r0   r0   r1   rE     s    z0TestSystematic.test_chebyu_int.<locals>.<lambda>c             S   s   t j| |ftS )N)r   chebyur@  )r>   r?   r0   r0   r1   rE     s    r3   )r   )r   r   r   r
   )r4  r0   r0   r1   test_chebyu_int  s    
zTestSystematic.test_chebyu_intc             C   s"   t tjdd tddt g d S )Nc             S   s   t  ttj| |ftS )N)r   r   r   rl  r@  )r>   r?   r0   r0   r1   rE     s    z,TestSystematic.test_chebyu.<locals>.<lambda>ri  i)r   r)   rk  r
   )r4  r0   r0   r1   test_chebyu  s    zTestSystematic.test_chebyuc             C   s8   dd }t |tjt g t |tjtdddgg d S )Nc             S   s   t j| d S )Nr    )r)   shichi)r?   r0   r0   r1   chi  s    z$TestSystematic.test_chi.<locals>.chiX   g&.>gU@g   V@)r   r   rp  r
   r   )r4  rp  r0   r0   r1   test_chi  s    zTestSystematic.test_chic             C   s8   dd }t |tjtttj dttjdgdd d S )Nc             S   s   t j| d S )Nr    )r)   ro  )r/   r0   r0   r1   rp    s    z,TestSystematic.test_chi_complex.<locals>.chig    חAg-q=)r8   g    ח)r   r   rp  r   r&   r!   r'  )r4  rp  r0   r0   r1   test_chi_complex  s
    zTestSystematic.test_chi_complexc             C   s"   dd }t |tjtddg d S )Nc             S   s   t j| d S )Nr    )r)   sici)r?   r0   r0   r1   ci  s    z"TestSystematic.test_ci.<locals>.cig    חAg    ח)r   r   ru  r
   )r4  ru  r0   r0   r1   test_ci  s    zTestSystematic.test_cic             C   s8   dd }t |tjttdtj tdtjgdd d S )Nc             S   s   t j| d S )Nr    )r)   rt  )r/   r0   r0   r1   ru    s    z*TestSystematic.test_ci_complex.<locals>.cig    חAg:0yE>)r8   g    ח)r   r   ru  r   r&   r!   r'  )r4  ru  r0   r0   r1   test_ci_complex  s
    zTestSystematic.test_ci_complexc             C   s(   t jtj}tttjt gd|d d S )NF)rN  r8   )	r!   r  r:   r  r   r   r   r  r
   )r4  r  r0   r0   r1   
test_cospi  s    zTestSystematic.test_cospic             C   s   t ttjt gddd d S )NFgvIh%<=)rN  r8   )r   r   r   r  r   )r4  r0   r0   r1   test_cospi_complex  s    z!TestSystematic.test_cospi_complexc             C   s"   t tjttjt gddd d S )Ng-q=r3   )r8   r   )r   r)   r  r   r   r
   )r4  r0   r0   r1   test_digamma  s    zTestSystematic.test_digammac             C   s,   dd }t tjttjt gdd|d d S )Nc             S   s$   t j| jdk t j| jdk @ ddS )Nr   gQ?FT)r!   whererC   r   r#  )r/   r0   r0   r1   param_filter  s    z9TestSystematic.test_digamma_complex.<locals>.param_filtergvIh%<=r  )r8   r   r|  )r   r)   r  r   r   r   )r4  r|  r0   r0   r1   test_digamma_complex  s
    
z#TestSystematic.test_digamma_complexc             C   s   t tjtjt gdd d S )Ng+=)r8   )r   r)   exp1r   e1r
   )r4  r0   r0   r1   test_e1  s    zTestSystematic.test_e1c             C   s   t tjtjtttj dttjdgdd t tjtjtj	dddd d d f tj
dtjddd	tjddd
 f d  j dd t tjtjtj	dddd dd d S )Ng    חAgdy=)r8   r3      r   rW   r   =   r   y              ?#   i'  y                g    חir   r   ii)r   r)   r~  r   r  r   r&   r!   r'  r#   r   r"   r   )r4  r0   r0   r1   test_e1_complex  s    zTestSystematic.test_e1_complexc          
   C   s   t tjdd ttjtjtjj tjtjtjjdg t tjdd tj	ddddd	tj
gd
d ttjtjtj
 ttjtj
 dk d S )Nc             S   s    | dkrt j| |  S t jdS )Nr   z1.0)r   expm1mpf)r?   r0   r0   r1   rE     s    z,TestSystematic.test_exprel.<locals>.<lambda>)rb   ra   c             S   s    | dkrt j| |  S t jdS )Nr   z1.0)r   r  r  )r?   r0   r0   r1   rE     s    g-q=gW:r   g   mBgyCxDgdy=)r8   )r   r)   Zexprelr
   r!   r   r  doubler   r(   r'  r   isinf)r4  r0   r0   r1   test_exprel  s    2zTestSystematic.test_exprelc             C   s.   t tjtjtttj dttjdg d S )Ng    cAg    c)r   r)   r  r   r   r&   r!   r'  )r4  r0   r0   r1   test_expm1_complex  s    z!TestSystematic.test_expm1_complexc             C   s   t tjdd t gdd d S )Nc             S   s   t j| d S )Nr    )r   r   )r?   r0   r0   r1   rE     s    z3TestSystematic.test_log1p_complex.<locals>.<lambda><   )r   )r   r)   log1pr   )r4  r0   r0   r1   test_log1p_complex  s    z!TestSystematic.test_log1p_complexc             C   s   t tdd t gddd d S )Nc             S   s   t j| d |  S )Nr    )r   r   )r?   r0   r0   r1   rE   
  s    z-TestSystematic.test_log1pmx.<locals>.<lambda>r  g+=)r   r8   )r   r   r
   )r4  r0   r0   r1   test_log1pmx  s    zTestSystematic.test_log1pmxc             C   s   t tjtjt gdd d S )Ngdy=)r8   )r   r)   r*   r   r'   r
   )r4  r0   r0   r1   test_ei  s    zTestSystematic.test_eic             C   s2   t tjtjtttj dttjdgdd d S )Ng    חAg&.>)r8   g    ח)	r   r)   r*   r   r'   r   r&   r!   r'  )r4  r0   r0   r1   test_ei_complex  s    zTestSystematic.test_ei_complexc             C   s   t tjtjtddg d S )Ng      ?)ra   )r   r)   elliper   r
   )r4  r0   r0   r1   test_ellipe  s    zTestSystematic.test_ellipec             C   s$   t tjtjtddtddg d S )Ng     @@g      ?)ra   g     @)r   r)   	ellipeincr   r  r
   )r4  r0   r0   r1   test_ellipeinc  s    zTestSystematic.test_ellipeincc             C   s   t tjtjt t g d S )N)r   r)   r  r   r  r
   )r4  r0   r0   r1   test_ellipeinc_largephi$  s    z&TestSystematic.test_ellipeinc_largephic             C   s    t tjtjtddt g d S )Ng     @@g     @)r   r)   	ellipkincr   ellipfr
   )r4  r0   r0   r1   test_ellipf)  s    zTestSystematic.test_ellipfc             C   s   t tjtjt t g d S )N)r   r)   r  r   r  r
   )r4  r0   r0   r1   test_ellipf_largephi.  s    z#TestSystematic.test_ellipf_largephic             C   s:   t tjtjtddg t tjdd tddgdd d S )	Ng      ?)ra   c             S   s   t jd|  S )Nr    )r   r   )r  r0   r0   r1   rE   8  s    z,TestSystematic.test_ellipk.<locals>.<lambda>g        )rb   i  )r   )r   r)   r   r   r
   Zellipkm1)r4  r0   r0   r1   test_ellipk3  s    
zTestSystematic.test_ellipkc             C   s.   dd }t tj|tddtddgdd d S )	Nc             S   s   t jd| |S )Nr   )r   ellippi)phir  r0   r0   r1   r  =  s    z0TestSystematic.test_ellipkinc.<locals>.ellipkincg     @@g      ?)ra   T)r   g     @)r   r)   r  r
   )r4  r  r0   r0   r1   test_ellipkinc<  s
    zTestSystematic.test_ellipkincc             C   s*   dd }t tj|t tddgdd d S )Nc             S   s   t jd| |S )Nr   )r   r  )r  r  r0   r0   r1   r  E  s    z9TestSystematic.test_ellipkinc_largephi.<locals>.ellipkincg      ?)ra   T)r   )r   r)   r  r
   )r4  r  r0   r0   r1   test_ellipkinc_largephiD  s
    z&TestSystematic.test_ellipkinc_largephic             C   s2   dd }t dd |tddtdddgd	d
 d S )Nc             S   s    | dkrdS t jd| |dS d S )Nr   sn)r  r  )r   r  )r  r  r0   r0   r1   r  M  s    z+TestSystematic.test_ellipfun_sn.<locals>.snc             S   s   t j| |d S )Nr   )r)   r  )r  r  r0   r0   r1   rE   W  s    z1TestSystematic.test_ellipfun_sn.<locals>.<lambda>g    .Ar   r    )rb   ra   g:0yE>)r8   g    .)r   r
   )r4  r  r0   r0   r1   test_ellipfun_snL  s
    
zTestSystematic.test_ellipfun_snc             C   s.   t dd dd td
dtdddgdd	 d S )Nc             S   s   t j| |d S )Nr    )r)   r  )r  r  r0   r0   r1   rE   ^  s    z1TestSystematic.test_ellipfun_cn.<locals>.<lambda>c             S   s   t jd| |dS )NZcn)r  r  )r   r  )r  r  r0   r0   r1   rE   _  s    g    .Ar   r    )rb   ra   g:0yE>)r8   g    .)r   r
   )r4  r0   r0   r1   test_ellipfun_cn\  s    zTestSystematic.test_ellipfun_cnc             C   s.   t dd dd td
dtdddgdd	 d S )Nc             S   s   t j| |d S )Nr   )r)   r  )r  r  r0   r0   r1   rE   e  s    z1TestSystematic.test_ellipfun_dn.<locals>.<lambda>c             S   s   t jd| |dS )Nr  )r  r  )r   r  )r  r  r0   r0   r1   rE   f  s    g    .Ar   r    )rb   ra   g:0yE>)r8   g    .)r   r
   )r4  r0   r0   r1   test_ellipfun_dnc  s    zTestSystematic.test_ellipfun_dnc             C   s   t tjdd t g d S )Nc             S   s
   t j| S )N)r   r   )r/   r0   r0   r1   rE   l  s    z)TestSystematic.test_erf.<locals>.<lambda>)r   r)   r   r
   )r4  r0   r0   r1   test_erfj  s    zTestSystematic.test_erfc             C   s   t tjdd t gdd d S )Nc             S   s
   t j| S )N)r   r   )r/   r0   r0   r1   rE   q  s    z1TestSystematic.test_erf_complex.<locals>.<lambda>r6   )r>   )r   r)   r   r   )r4  r0   r0   r1   r   o  s    zTestSystematic.test_erf_complexc             C   s"   t tjtdd t gdd d S )Nc             S   s
   t j| S )N)r   r   )r/   r0   r0   r1   rE   v  s    z*TestSystematic.test_erfc.<locals>.<lambda>gvIh%<=)r8   )r   r)   r   r   r
   )r4  r0   r0   r1   	test_erfct  s    
zTestSystematic.test_erfcc             C   s"   t tjtdd t gdd d S )Nc             S   s
   t j| S )N)r   r   )r/   r0   r0   r1   rE   {  s    z2TestSystematic.test_erfc_complex.<locals>.<lambda>r6   )r>   )r   r)   r   r   r   )r4  r0   r0   r1   test_erfc_complexy  s    
z TestSystematic.test_erfc_complexc             C   s   t tjtjt gdd d S )Nr6   )r>   )r   r)   erfir   r
   )r4  r0   r0   r1   	test_erfi~  s    zTestSystematic.test_erfic             C   s   t tjtjt gdd d S )Nr6   )r>   )r   r)   r  r   r   )r4  r0   r0   r1   test_erfi_complex  s    z TestSystematic.test_erfi_complexc             C   s"   t tjtdd t gdd d S )Nc             S   s
   t j| S )N)r   ncdf)r/   r0   r0   r1   rE     s    z*TestSystematic.test_ndtr.<locals>.<lambda>r6   )r>   )r   r)   ndtrr   r
   )r4  r0   r0   r1   	test_ndtr  s    
zTestSystematic.test_ndtrc             C   s0   t tjdd ttddtdddgdd d S )	Nc             S   s   t j|  tjd d S )Ng       @)r   r   r!   sqrt)r/   r0   r0   r1   rE     s    z2TestSystematic.test_ndtr_complex.<locals>.<lambda>i'  )rb   ra   i  )r>   ii)r   r)   r  r   r&   )r4  r0   r0   r1   test_ndtr_complex  s    z TestSystematic.test_ndtr_complexc             C   s$   t tjtdd t gddd d S )Nc             S   s   t jt j| S )N)r   r   r  )r/   r0   r0   r1   rE     s    z.TestSystematic.test_log_ndtr.<locals>.<lambda>iX  i,  )r>   r   )r   r)   log_ndtrr   r
   )r4  r0   r0   r1   test_log_ndtr  s    
zTestSystematic.test_log_ndtrc             C   s6   t tjtdd ttd	d
tdddgddd d S )Nc             S   s    t jt j|  tjd d S )Ng       @)r   r   r   r!   r  )r/   r0   r0   r1   rE     s    z6TestSystematic.test_log_ndtr_complex.<locals>.<lambda>i'  r7   )rb   ra   r6   i,  )r>   r   ii)r   r)   r  r   r   r&   )r4  r0   r0   r1   test_log_ndtr_complex  s    

z$TestSystematic.test_log_ndtr_complexc             C   s"   t dd tjtddgdd d S )Nc             S   s   t j| d S )Nr    rj   )r)   Zeuler)r>   r0   r0   r1   rE     s    z.TestSystematic.test_eulernum.<locals>.<lambda>r    i'  )r>   )r   r   Zeulernumr   )r4  r0   r0   r1   test_eulernum  s    zTestSystematic.test_eulernumc             C   s,   t tjtjtddtdtjgddd d S )Nr   r6   gvIh%<=   )r8   r   )	r   r)   r=   r   r;   r   r
   r!   r'  )r4  r0   r0   r1   test_expint  s    zTestSystematic.test_expintc             C   s   dd }t |tjt g d S )Nc             S   s   t j| d S )Nr   )r)   fresnel)r?   r0   r0   r1   fresnels  s    z.TestSystematic.test_fresnels.<locals>.fresnels)r   r   r  r
   )r4  r  r0   r0   r1   test_fresnels  s    zTestSystematic.test_fresnelsc             C   s   dd }t |tjt g d S )Nc             S   s   t j| d S )Nr    )r)   r  )r?   r0   r0   r1   fresnelc  s    z.TestSystematic.test_fresnelc.<locals>.fresnelc)r   r   r  r
   )r4  r  r0   r0   r1   test_fresnelc  s    zTestSystematic.test_fresnelcc             C   s   t tjttjt g d S )N)r   r)   gammar   r   r
   )r4  r0   r0   r1   
test_gamma  s    zTestSystematic.test_gammac             C   s    t tjttjt gdd d S )Ng-a=)r8   )r   r)   r  r   r   r   )r4  r0   r0   r1   test_gamma_complex  s    z!TestSystematic.test_gamma_complexc             C   s0   t tjdd tddddtddgddd d S )	Nc             S   s   t j| |ddS )NT)ra   r  )r   r  )r/   ra   r0   r0   r1   rE     s    z.TestSystematic.test_gammainc.<locals>.<lambda>r   g     @F)inclusive_agdy=)rN  r8   )r   r)   r  r
   )r4  r0   r0   r1   test_gammainc  s    zTestSystematic.test_gammaincc             C   s0   t tjdd tddddtddgddd d S )	Nc             S   s   t j| |ddS )NT)rb   r  )r   r  )r/   rb   r0   r0   r1   rE     s    z/TestSystematic.test_gammaincc.<locals>.<lambda>r   g     @F)r  gdy=)rN  r8   )r   r)   Z	gammainccr
   )r4  r0   r0   r1   test_gammaincc  s    zTestSystematic.test_gammainccc             C   s"   dd }t tjt|t g d S )Nc             S   s   t j| jS )N)r   r   rC   )r/   r0   r0   r1   f  s    z&TestSystematic.test_gammaln.<locals>.f)r   r)   Zgammalnr   r
   )r4  r  r0   r0   r1   test_gammaln  s    zTestSystematic.test_gammaln)rg  c             C   s(   t tjttjtddt t g d S )Ng     @@g     @)r   r)   eval_gegenbauerr   r   
gegenbauerr
   )r4  r0   r0   r1   test_gegenbauer  s    zTestSystematic.test_gegenbauerc          
   C   st   dd }dd }t |t|tddtddt gddd	d
d t |t|tddt ttjdddgdd	d d S )Nc             S   s   t |dkrtjS | dkr d}n$| dkr6d| | }ntj| ||}t|dkr|d	k rt|tt|krtj| |tjd |}t |tjdk rtjd}t |dkrtjS |S )
Ng}Ô%ITr   g      ?r    r   z1e-50z0.0g\4@Iwrj   )	r   r!   rW  r   r  r:   r   r  r'  )r>   rb   r?   r-   r0   r0   r1   r    s    (
z6TestSystematic.test_gegenbauer_int.<locals>.gegenbauerc             S   s(   t jt| ||}t|dkr$tjS |S )Ng\4@Iw)r)   r  r   r   r!   r'  )r>   rb   r?   r-   r0   r0   r1   sc_gegenbauer  s    z9TestSystematic.test_gegenbauer_int.<locals>.sc_gegenbauerr   r7   g    eAi@  Tgư>)r>   r   r   r8   r   r5   )r   r   g    ei)r   r   r   r
   r   r!   r"   )r4  r  r  r0   r0   r1   test_gegenbauer_int  s    
z"TestSystematic.test_gegenbauer_intc             C   s*   t dd ttjtddt t g d S )Nc             S   s   t jt| |j|S )N)r)   r  r   rC   )r>   rb   r?   r0   r0   r1   rE     s    z8TestSystematic.test_gegenbauer_complex.<locals>.<lambda>r   r7   )r   r   r   r  r   r
   r   )r4  r0   r0   r1   test_gegenbauer_complex  s    z&TestSystematic.test_gegenbauer_complexc             C   s*   t dd ttjtddt t g d S )Nc             S   s   t j| j|j|S )N)r)   r  rC   )r>   rb   r?   r0   r0   r1   rE     s    z@TestSystematic.test_gegenbauer_complex_general.<locals>.<lambda>g     @@g     @)r   r   r   r  r
   r   )r4  r0   r0   r1   test_gegenbauer_complex_general  s    z.TestSystematic.test_gegenbauer_complex_generalc             C   s&   t tjtdd tddt g d S )Nc             S   s   t j| |ftS )N)r   hankel1r@  )rD   r?   r0   r0   r1   rE     s   
z-TestSystematic.test_hankel1.<locals>.<lambda>g@xDg@x)r   r)   r  r   r
   )r4  r0   r0   r1   test_hankel1  s    
zTestSystematic.test_hankel1c             C   s&   t tjtdd tddt g d S )Nc             S   s   t j| |ftS )N)r   hankel2r@  )rD   r?   r0   r0   r1   rE     s    z-TestSystematic.test_hankel2.<locals>.<lambda>g@xDg@x)r   r)   r  r   r
   )r4  r0   r0   r1   test_hankel2  s    
zTestSystematic.test_hankel2z%issues at intermediately large ordersc             C   s&   t dd ttjtddt g d S )Nc             S   s   t jt| |S )N)r)   Zeval_hermiter   )r>   r?   r0   r0   r1   rE   $  s    z-TestSystematic.test_hermite.<locals>.<lambda>r   i'  )r   r   r   Zhermiter   r
   )r4  r0   r0   r1   test_hermite"  s    zTestSystematic.test_hermitec                s:   t ddd ttj fddtddtddgd	d
 d S )Ni  i  )r/  r0  c                s   t j| |f S )N)r   rB   )rb   r?   )KWr0   r1   rE   /  s    z,TestSystematic.test_hyp0f1.<locals>.<lambda>g    cAr   g     j@i  )r>   g    c)ro   r   r)   rB   r
   )r4  r0   )r  r1   test_hyp0f1*  s
    
zTestSystematic.test_hyp0f1c          	   C   s8   t dd tdd tddttddtddg d S )	Nc             S   s   t j| j|S )N)r)   rB   rC   )rb   r/   r0   r0   r1   rE   8  s    z4TestSystematic.test_hyp0f1_complex.<locals>.<lambda>c             S   s   t j| |ftS )N)r   rB   r@  )rb   r?   r0   r0   r1   rE   9  s    r   rA   iii)r   r   r
   r   r&   )r4  r0   r0   r1   test_hyp0f1_complex7  s    
z"TestSystematic.test_hyp0f1_complexc          	   C   s<   dd }t tj|td	dtddddtd
dgddd d S )Nc             S   s*   yt j| ||S  tk
r$   tjS X d S )N)r   hyp1f1ZeroDivisionErrorr!   r'  )rb   ra   r?   r0   r0   r1   mpmath_hyp1f1@  s    z1TestSystematic.test_hyp1f1.<locals>.mpmath_hyp1f1r3   r    F)r  i  )r>   rN  ii)r   r)   r  r
   )r4  r  r0   r0   r1   test_hyp1f1?  s    zTestSystematic.test_hyp1f1c             C   s8   t tdd tdd tddtddt gdd d S )	Nc             S   s   t j| j|j|S )N)r)   r  rC   )rb   ra   r?   r0   r0   r1   rE   P  s    z4TestSystematic.test_hyp1f1_complex.<locals>.<lambda>c             S   s   t j| ||ftS )N)r   r  r@  )rb   ra   r?   r0   r0   r1   rE   Q  s    g     @@i  )r>   g     @g     @)r   r   r   r
   r   )r4  r0   r0   r1   test_hyp1f1_complexN  s    
z"TestSystematic.test_hyp1f1_complexc             C   s<   t dd tdd tddtddtd	dt gdd d S )
Nc             S   s   t j| j|j|j|S )N)r)   rh   rC   )rb   ra   rg   r?   r0   r0   r1   rE   X  s    z4TestSystematic.test_hyp2f1_complex.<locals>.<lambda>c             S   s   t j| |||ftS )N)r   rh   r@  )rb   ra   rg   r?   r0   r0   r1   rE   Y  s    g      Y@r   )r>   g      Yg      Yg      Y)r   r   r
   r   )r4  r0   r0   r1   test_hyp2f1_complexU  s    
z"TestSystematic.test_hyp2f1_complexc             C   s&   t tjtdd t t t g d S )Nc             S   s   t j| ||ftS )N)r   r`   r@  )rb   ra   r?   r0   r0   r1   rE   `  s    z,TestSystematic.test_hyperu.<locals>.<lambda>)r   r)   r`   r   r
   )r4  r0   r0   r1   test_hyperu]  s    
zTestSystematic.test_hyperuz:mpmath issue gh-342: unsupported operand mpz, long for powc             C   s0   dd }t t|tddddtddgdd d S )	Nc             S   s"   t j|| t j|  t j|  S )N)r   powerr$   r  )rb   r?   r0   r0   r1   mp_igam_face  s    z1TestSystematic.test_igam_fac.<locals>.mp_igam_facr   g  ļBF)r  g|=)r8   )r   r   r
   )r4  r  r0   r0   r1   test_igam_facc  s
    zTestSystematic.test_igam_facc             C   s8   t tjtjtddg t tjtjtddgdd d S )Ng     @@g    חAgh㈵>)r8   g     @g    ח)r   r)   Zj0r   r
   )r4  r0   r0   r1   test_j0m  s    
zTestSystematic.test_j0c             C   s8   t tjtjtddg t tjtjtddgdd d S )Ng     @@g    חAgh㈵>)r8   g     @g    ח)r   r)   Zj1r   r
   )r4  r0   r0   r1   test_j1{  s    
zTestSystematic.test_j1c             C   sR   t tjtdd t t t t g t dd tdd t t t t g d S )Nc             S   s   t j| |||ftS )N)r   jacobir@  )rb   ra   rg   r?   r0   r0   r1   rE     s    z,TestSystematic.test_jacobi.<locals>.<lambda>c             S   s   t jt| |||S )N)r)   eval_jacobir   )r>   ra   rg   r?   r0   r0   r1   rE     s    c             S   s   t j| |||ftS )N)r   r  r@  )rb   ra   rg   r?   r0   r0   r1   rE     s    )r   r)   r  r   r
   r   )r4  r0   r0   r1   test_jacobi  s    

zTestSystematic.test_jacobic                s:   dd  t dd  fddt t t t gddd d S )	Nc             S   s   | dkrdS t j| |||S )Nr   g      ?)r   r  )r>   rb   ra   r?   r0   r0   r1   r    s    z.TestSystematic.test_jacobi_int.<locals>.jacobic             S   s   t jt| |||S )N)r)   r  r   )r>   rb   ra   r?   r0   r0   r1   rE     s    z0TestSystematic.test_jacobi_int.<locals>.<lambda>c                s   t  | |||ftS )N)r   r@  )r>   rb   ra   r?   )r  r0   r1   rE     s    i N  r3   )r>   r   )r   r   r
   )r4  r0   )r  r1   test_jacobi_int  s
    
zTestSystematic.test_jacobi_intc             C   s&   dd }t tj|tddgdd d S )Nc             S   s&   | dkrt  d S ttjd| ftS )Nr   r5   )r   r   r   keir@  )r?   r0   r0   r1   r    s    
z$TestSystematic.test_kei.<locals>.keigꌠ9Y>)Fi  )r>   gꌠ9Y>))r   r)   r  r
   )r4  r  r0   r0   r1   test_kei  s    zTestSystematic.test_keic             C   s&   t tjtdd tddgdd d S )Nc             S   s   t jd| ftS )Nr   )r   kerr@  )r?   r0   r0   r1   rE     s    z)TestSystematic.test_ker.<locals>.<lambda>gꌠ9Y>)Fi  )r>   gꌠ9Y>))r   r)   r  r   r
   )r4  r0   r0   r1   test_ker  s    
zTestSystematic.test_kerc             C   s"   t ttjdd t t g d S )Nc             S   s   t tj| |ftS )N)r   r   laguerrer@  )r>   r?   r0   r0   r1   rE     s    z.TestSystematic.test_laguerre.<locals>.<lambda>)r   r   r)   eval_laguerrer
   )r4  r0   r0   r1   test_laguerre  s    
zTestSystematic.test_laguerrec             C   s$   t dd dd t t gdd d S )Nc             S   s   t jt| |S )N)r)   r  r   )r>   r?   r0   r0   r1   rE     s    z2TestSystematic.test_laguerre_int.<locals>.<lambda>c             S   s   t tj| |ftS )N)r   r   r  r@  )r>   r?   r0   r0   r1   rE     s    i N  )r>   )r   r   r
   )r4  r0   r0   r1   test_laguerre_int  s    z TestSystematic.test_laguerre_intzsee gh-3551 for bad pointsc             C   s4   t dd dd ttj tjtddgddd d S )	Nc             S   s   t j| t|jS )N)r)   r$  r   rC   )r?   rb  r0   r0   r1   rE     s    z3TestSystematic.test_lambertw_real.<locals>.<lambda>c             S   s   t j| t|jS )N)r   r$  r   rC   )r?   rb  r0   r0   r1   rE     s    r   r   gvIh%<=F)r8   rN  )r   r   r!   r'  r   )r4  r0   r0   r1   test_lambertw_real  s    z!TestSystematic.test_lambertw_realc                sB   d}t jd d fdd}t|tjtd|ddgd	d
 d S )NgGase@r    g  E@c                s|   t jddf |  d   | d  }|t jkr>|t|  }n0|  d   d| d   }|t|  }||9 }W d Q R X |S )Nr   )Zoverg      ?)r!   r   r'  r   )r?   ZfacrG   )egr0   r1   r    s    
z:TestSystematic.test_lanczos_sum_expg_scaled.<locals>.gammar   F)r  gvIh%<=)r8   )r!   r$   r   r   r  r
   )r4  Zmaxgammar  r0   )r  r  r1   test_lanczos_sum_expg_scaled  s    
z+TestSystematic.test_lanczos_sum_expg_scaledc             C   s   t tjtjt t g d S )N)r   r)   eval_legendrer   legendrer
   )r4  r0   r0   r1   test_legendre  s    zTestSystematic.test_legendrec          	   C   sL   t dd dd t t gdd t dd dd t ttjddd
g d S )Nc             S   s   t jt| |S )N)r)   r  r   )r>   r?   r0   r0   r1   rE     s    z2TestSystematic.test_legendre_int.<locals>.<lambda>c             S   s   t tj| |ftS )N)r   r   r  r@  )r>   r?   r0   r0   r1   rE     s    i N  )r>   c             S   s   t jt| |S )N)r)   r  r   )r>   r?   r0   r0   r1   rE     s    c             S   s   t tj| |ftS )N)r   r   r  r@  )r>   r?   r0   r0   r1   rE     s    r   r5   rS   ir  )r   r   r
   r   r!   r"   )r4  r0   r0   r1   test_legendre_int  s    
z TestSystematic.test_legendre_intc             C   sd   dd }dd }dd }t ||tddtddt g t ||tddtddtddgd	d
 d S )Nc             S   sT   yt j|| |d d }W n tk
r0   tjS X t|dkrPtjtj|j }|S )Nr   r    g)#vrj   rj   )rj   rj   )	r)   Zlpmn
ValueErrorr!   rW  r   r'  rV  rC   )r>   r  r/   rD   r0   r0   r1   lpnm  s    z(TestSystematic.test_legenp.<locals>.lpnmc             S   s0   t j|| |}t|dkr,tjtj|j }|S )Ng)#v)r)   r   r   r!   r'  rV  rC   )r>   r  r/   rD   r0   r0   r1   lpnm_2  s    z*TestSystematic.test_legenp.<locals>.lpnm_2c             S   s   |dks|dkrLt | | krL|dkrH| dk r6|  d } tjtj|| S dS t|dk r^tjS t|dk rndnd}ttj| |||d}t|dkrtj	tj|j
 }|S )	Nr    r   gV瞯<r   rW   )typeg)#vrj   )r   r   r  rV  r   r!   rW  r   r   r'  rC   )r>   r  r/   typrD   r0   r0   r1   r     s    
z*TestSystematic.test_legenp.<locals>.legenpr7   r    g|=)rX   iiiirj   )r   r   r
   )r4  r  r  r   r0   r0   r1   test_legenp  s    
zTestSystematic.test_legenpc             C   s   dd }dd }t jddddd	ddd
dg	}t jddddg}|d d d f d|d d d f   j }t||tddddddgtddddddgt|gddd d S )Nc             S   s:   yt j|j| j|ddd d S  tk
r4   tjS X d S )Nr   )r  r   r    rj   rj   )rj   rj   )r)   clpmnrC   r  r!   rW  )r>   r  r/   r0   r0   r1   clpnm  s    z3TestSystematic.test_legenp_complex_2.<locals>.clpnmc             S   s4   t |dk rtjS ttjt| jt|j|ddS )NgV瞯<r   )r  )r   r!   rW  r   r   r   r   rC   )r>   r  r/   r0   r0   r1   r     s    z4TestSystematic.test_legenp_complex_2.<locals>.legenpr   gGz?g      ?r   gh㈵>rS   g     @@g     @@g?y              ?r    r   gư>i  )r8   r>   rk   gGzg      g     @g      rk   rj   rk   rj   )r!   r(   r   r   r   )r4  r  r   r?   rF   r/   r0   r0   r1   test_legenp_complex_2  s    (,z$TestSystematic.test_legenp_complex_2c             C   s   dd }dd }t jddddd	ddd
dg	}t jddddg}|d d d f d|d d d f   j }t||tddddddgtddddddgt|gddd d S )Nc             S   s:   yt j|j| j|ddd d S  tk
r4   tjS X d S )NrW   )r  r   r    rj   rj   )rj   rj   )r)   r  rC   r  r!   rW  )r>   r  r/   r0   r0   r1   r  -  s    z3TestSystematic.test_legenp_complex_3.<locals>.clpnmc             S   s4   t |dk rtjS ttjt| jt|j|ddS )NgV瞯<rW   )r  )r   r!   rW  r   r   r   r   rC   )r>   r  r/   r0   r0   r1   r   3  s    z4TestSystematic.test_legenp_complex_3.<locals>.legenpr   gGz?g      ?r   gh㈵>rS   g     @@g     @@g?y              ?r    r   gư>i  )r8   r>   rk   gGzg      g     @g      rk   rj   rk   rj   )r!   r(   r   r   r   )r4  r  r   r?   rF   r/   r0   r0   r1   test_legenp_complex_3,  s    (,z$TestSystematic.test_legenp_complex_3z*apparently picks wrong function at |z| > 1c             C   s4   dd }dd }t ||tddtddt g d S )Nc             S   s   t j|| |d d S )Nr   r    rj   rj   )rj   rj   )r)   lqmn)r>   r  r/   r0   r0   r1   lqnmF  s    z(TestSystematic.test_legenq.<locals>.lqnmc             S   s(   t |dk rtjS ttj| ||ddS )NgV瞯<r   )r  )r   r!   rW  r   r   legenq)r>   r  r/   r0   r0   r1   r  I  s    z*TestSystematic.test_legenq.<locals>.legenqr   r7   )r   r   r
   )r4  r  r  r0   r0   r1   test_legenqD  s
    zTestSystematic.test_legenqc             C   s8   dd }dd }t ||tddtddt gdd d S )Nc             S   s"   t jt|jt| j|d d S )Nr   r    rj   rj   )rj   rj   )r)   r  r   rC   )r>   r  r/   r0   r0   r1   r  U  s    z0TestSystematic.test_legenq_complex.<locals>.lqnmc             S   s4   t |dk rtjS ttjt| jt|j|ddS )NgV瞯<r   )r  )r   r!   rW  r   r   r  r   rC   )r>   r  r/   r0   r0   r1   r  X  s    z2TestSystematic.test_legenq_complex.<locals>.legenqr   r7   )r>   )r   r   r   )r4  r  r  r0   r0   r1   test_legenq_complexS  s    z"TestSystematic.test_legenq_complexc             C   s,   dd }dd }t t|t gdd|d d S )Nc             S   s    t jt j| | k| dk@ ddS )Nr   FT)r!   r{  floor)r?   r0   r0   r1   r|  d  s    z0TestSystematic.test_lgam1p.<locals>.param_filterc             S   s   t jd|  jS )Nr    )r   r   rC   )r/   r0   r0   r1   	mp_lgam1ph  s    z-TestSystematic.test_lgam1p.<locals>.mp_lgam1pgvIh%<=r7   )r8   r   r|  )r   r   r
   )r4  r|  r  r0   r0   r1   test_lgam1pc  s    
zTestSystematic.test_lgam1pc             C   s&   dd }t tj|t gdddd d S )Nc             S   s6   yt j| }W n" tk
r0   ttjtj}Y nX |S )N)r   r   r  r&   r!   rW  )r/   rG   r0   r0   r1   mpmath_loggammar  s
    z5TestSystematic.test_loggamma.<locals>.mpmath_loggammaFgvIh%,=)rN  Zdistinguish_nan_and_infr8   )r   r)   r   r   )r4  r  r0   r0   r1   test_loggammaq  s
    zTestSystematic.test_loggammac             C   s(   dd }t |tdd t t g d S )Nc             S   s   t j| |d S )Nr   )r)   Zpbdv)rD   r?   r0   r0   r1   pcfd  s    z&TestSystematic.test_pcfd.<locals>.pcfdc             S   s   t j| |ftS )N)r   r  r@  )rD   r?   r0   r0   r1   rE     s    z*TestSystematic.test_pcfd.<locals>.<lambda>)r   r   r
   )r4  r  r0   r0   r1   	test_pcfd~  s    
zTestSystematic.test_pcfdzHit's not the same as the mpmath function --- maybe different definition?c             C   s(   dd }t |dd t t gdd d S )Nc             S   s   t j| |d S )Nr   )r)   Zpbvv)rD   r?   r0   r0   r1   pcfv  s    z&TestSystematic.test_pcfv.<locals>.pcfvc             S   s   t  ttj| |ftS )N)r   r   r   r  r@  )rD   r?   r0   r0   r1   rE     s    z*TestSystematic.test_pcfv.<locals>.<lambda>i  )r>   )r   r
   )r4  r  r0   r0   r1   	test_pcfv  s    zTestSystematic.test_pcfvc             C   sb   dd }dd }dd }t |tjtddtddgdd	d
 t ||tddtddgdd	d
 d S )Nc             S   s   t j| |d S )Nr   )r)   pbwa)rb   r?   r0   r0   r1   pcfw  s    z&TestSystematic.test_pcfw.<locals>.pcfwc             S   s   t j| |d S )Nr    )r)   r	  )rb   r?   r0   r0   r1   dpcfw  s    z'TestSystematic.test_pcfw.<locals>.dpcfwc             S   s   t jt j| |fdS )Nr   r    )r   r    )r   Zdiffr
  )rb   r?   r0   r0   r1   mpmath_dpcfw  s    z.TestSystematic.test_pcfw.<locals>.mpmath_dpcfwrR   g:0yU>r7   )r8   r>   g&.!>rY   rY   rY   rY   )r   r   r
  r
   )r4  r
  r  r  r0   r0   r1   	test_pcfw  s    zTestSystematic.test_pcfwzCissues at large arguments (atol OK, rtol not) and <eps-close to z=0c             C   s*   t tjt ttjtddt g d S )Nr   i  )r   r)   Z	polygammar   r   r   r   r
   )r4  r0   r0   r1   test_polygamma  s    zTestSystematic.test_polygammac             C   s&   t tjtjtdtjgdddd d S )Ni@  i  FT)r>   rN  r   i)r   r)   r   r   r
   r!   r'  )r4  r0   r0   r1   test_rgamma  s    zTestSystematic.test_rgammac             C   s    t tjttjt gdd d S )Ng-a=)r8   )r   r)   r   r   r   r   )r4  r0   r0   r1   test_rgamma_complex  s    z"TestSystematic.test_rgamma_complexzNsee gh-3551 for bad points on 32 bit systems and gh-8095 for another bad point)rh  c             C   s@   t tjt dkrtj}ndd }ttj|t t gdd d S )Nz1.0.0c             S   sN   t | | t| | krBt | | dkrBtj| } t| | |  }tj| |S )Nr   )r:   r   r   r  rf)rb   r  r0   r0   r1   mppoch  s    (
z&TestSystematic.test_rf.<locals>.mppochi  )r   )r   r   r   r  r   r)   Zpochr
   )r4  r  r0   r0   r1   test_rf  s    	
zTestSystematic.test_rfc             C   s(   t jtj}tttjt gd|d d S )NF)rN  r8   )	r!   r  r:   r  r   r   r   r  r
   )r4  r  r0   r0   r1   
test_sinpi  s    zTestSystematic.test_sinpic             C   s   t ttjt gddd d S )NFg+=)rN  r8   )r   r   r   r  r   )r4  r0   r0   r1   test_sinpi_complex  s    z!TestSystematic.test_sinpi_complexc             C   s8   dd }t |tjt g t |tjtdddgg d S )Nc             S   s   t j| d S )Nr   )r)   ro  )r?   r0   r0   r1   shi  s    z$TestSystematic.test_shi.<locals>.shirq  g&.>gU@g   V@)r   r   r  r
   r   )r4  r  r0   r0   r1   test_shi  s    zTestSystematic.test_shic             C   s8   dd }t |tjtttj dttjdgdd d S )Nc             S   s   t j| d S )Nr   )r)   ro  )r/   r0   r0   r1   r    s    z,TestSystematic.test_shi_complex.<locals>.shig    חAg-q=)r8   g    ח)r   r   r  r   r&   r!   r'  )r4  r  r0   r0   r1   test_shi_complex  s
    zTestSystematic.test_shi_complexc             C   s   dd }t |tjt g d S )Nc             S   s   t j| d S )Nr   )r)   rt  )r?   r0   r0   r1   si  s    z"TestSystematic.test_si.<locals>.si)r   r   r  r
   )r4  r  r0   r0   r1   test_si  s    zTestSystematic.test_sic             C   s8   dd }t |tjttdtj tdtjgdd d S )Nc             S   s   t j| d S )Nr   )r)   rt  )r/   r0   r0   r1   r    s    z*TestSystematic.test_si_complex.<locals>.sig    חAg-q=)r8   g    ח)r   r   r  r   r&   r!   r'  )r4  r  r0   r0   r1   test_si_complex  s
    zTestSystematic.test_si_complexc             C   s,   dd }t tjt|tdtjgdd d S )Nc             S   s   t jdd|  S )Nr   r    )r   r  )r?   r0   r0   r1   dilog  s    z)TestSystematic.test_spence.<locals>.dilogr   g+=)r8   )r   r)   r  r   r
   r!   r'  )r4  r  r0   r0   r1   test_spence  s    zTestSystematic.test_spencec             C   s&   dd }t tjt|t gdd d S )Nc             S   s   t jdd|  S )Nr   r    )r   r  )r/   r0   r0   r1   r    s    z1TestSystematic.test_spence_complex.<locals>.dilogg+=)r8   )r   r)   r  r   r   )r4  r  r0   r0   r1   test_spence_complex  s    z"TestSystematic.test_spence_complexc          
   C   sJ   dd }t |tjtddtddtdtdtddt dgddd	d
 d S )Nc             S   s   || krt jS tj|| ||S )N)r!   rW  r)   Zsph_harm)lr  r   r  r0   r0   r1   	spherharm  s    z0TestSystematic.test_spherharm.<locals>.spherharmr   r7   )rb   ra   r   g:0yE>ip  rI   )rX   r>   r   )r   r   r   r   r
   r   )r4  r   r0   r0   r1   test_spherharm  s    zTestSystematic.test_spherharmc             C   s,   t tjttjtddtddgdd d S )Ng     @r   g&.>)r8   g     )r   r)   Zstruver   r   Zstruvehr
   )r4  r0   r0   r1   test_struveh  s    zTestSystematic.test_struvehc             C   s4   dd }t tjt|tddtddgddd d S )	Nc             S   sR   | dk rF||  k rFt | dkrFtjj}zdtj_tj| |S |tj_X tj| |S )Nr   i  i,  )r   r   r   r   Zstruvel)rD   r/   r   r0   r0   r1   
mp_struvel  s    
z/TestSystematic.test_struvel.<locals>.mp_struvelg     @r   g&.>T)r8   r   g     )r   r)   Z	modstruver   r
   )r4  r#  r0   r0   r1   test_struvel  s    zTestSystematic.test_struvelc             C   s*   dd }t tj|td	dgdddd d S )
Nc             S   s   t jt j| t jdS )Nz-0.5)r   r$  r$   r  )r?   r0   r0   r1   mpmath_wrightomega_real)  s    zETestSystematic.test_wrightomega_real.<locals>.mpmath_wrightomega_reali  gPKDg+<r   F)r8   rX   rN  i)r   r)   r)  r
   )r4  r%  r0   r0   r1   test_wrightomega_real(  s    
z$TestSystematic.test_wrightomega_realc             C   s    t tjdd t gddd d S )Nc             S   s
   t | dS )Nr&  )r%  )r/   r0   r0   r1   rE   :  s    z1TestSystematic.test_wrightomega.<locals>.<lambda>g+=F)r8   rN  )r   r)   r)  r   )r4  r0   r0   r1   test_wrightomega8  s    zTestSystematic.test_wrightomegac             C   s.   t tjttjtddddtdddg d S )Nr    g    _BF)rb   ra   r  r   )rb   r  )r   r)   zetar   r   r
   )r4  r0   r0   r1   test_hurwitz_zeta=  s    z TestSystematic.test_hurwitz_zetac             C   s"   t tjtjtddgddd d S )Nr7   FgvIh%<=)rN  r8   i)r   r)   r(  r   r
   )r4  r0   r0   r1   test_riemann_zetaC  s    
z TestSystematic.test_riemann_zetac             C   s&   t tjdd tddgdddd d S )	Nc             S   s   t j| d S )Nr    )r   r(  )r?   r0   r0   r1   rE   N  s    z+TestSystematic.test_zetac.<locals>.<lambda>r7   F-   gvIh%<=)rN  r   r8   i)r   r)   Zzetacr
   )r4  r0   r0   r1   
test_zetacL  s    
zTestSystematic.test_zetacc             C   s4   dd }t tjt|tdddt gdddd	 d S )
Nc             S   sB   t jj| } t jj|}|dkr,t jj| S t jj| || S d S )Nr   )r   r   r  r   powm1)r?   lmbdar0   r0   r1   	mp_boxcoxT  s
    z-TestSystematic.test_boxcox.<locals>.mp_boxcoxr   F)rb   r  r6   r  gvIh%<=)r>   r   r8   )r   r)   Zboxcoxr   r
   )r4  r/  r0   r0   r1   test_boxcoxR  s    zTestSystematic.test_boxcoxc             C   s4   dd }t tjt|td
ddt gdddd	 d S )Nc             S   sV   t jj| } t jj|}t jjd}|dkr<t jj||  S t jj||  || S d S )Nr    r   )r   r   r  r   r-  )r?   r.  Zoner0   r0   r1   mp_boxcox1pe  s    z1TestSystematic.test_boxcox1p.<locals>.mp_boxcox1pr    F)rb   r  r6   r  gvIh%<=)r>   r   r8   rj   )r   r)   Zboxcox1pr   r
   )r4  r1  r0   r0   r1   test_boxcox1pc  s    	zTestSystematic.test_boxcox1pc             C   s4   dd }t dd t|tddtd
dgdd	 d S )Nc             S   sP   t j|}t j| t jdd  |t jd| t j  }|jdkrH|jS |S d S )Nr    r   r   )r   	mpmathifyrJ  r  r  r   r#  rC   )r>   r/   argoutr0   r0   r1   mp_spherical_jnv  s    

z9TestSystematic.test_spherical_jn.<locals>.mp_spherical_jnc             S   s   t jt| |S )N)r)   spherical_jnr   )r>   r/   r0   r0   r1   rE     s    z2TestSystematic.test_spherical_jn.<locals>.<lambda>r   r6   g    חAi,  )r   g    ח)r   r   r   r
   )r4  r6  r0   r0   r1   test_spherical_jnu  s
    	z TestSystematic.test_spherical_jnc             C   s,   dd }t dd t|tddt g d S )Nc             S   sP   t j|}t j| t jdd  |t jd| t j  }|jdkrH|jS |S d S )Nr    r   r   )r   r3  rJ  r  r  r   r#  rC   )r>   r/   r4  r5  r0   r0   r1   r6    s    

zATestSystematic.test_spherical_jn_complex.<locals>.mp_spherical_jnc             S   s   t jt| j|S )N)r)   r7  r   rC   )r>   r/   r0   r0   r1   rE     s    z:TestSystematic.test_spherical_jn_complex.<locals>.<lambda>r   r6   )r   r   r   r   )r4  r6  r0   r0   r1   test_spherical_jn_complex  s    	z(TestSystematic.test_spherical_jn_complexc             C   s4   dd }t dd t|tddtd
dgdd	 d S )Nc             S   sP   t j|}t j| t jdd  |t jd| t j  }|jdkrH|jS |S d S )Nr    r   r   )r   r3  rU  r  r  r   r#  rC   )r>   r/   r4  r5  r0   r0   r1   mp_spherical_yn  s    

z9TestSystematic.test_spherical_yn.<locals>.mp_spherical_ync             S   s   t jt| |S )N)r)   spherical_ynr   )r>   r/   r0   r0   r1   rE     s    z2TestSystematic.test_spherical_yn.<locals>.<lambda>r   r6   g    _Br7   )r   g    _)r   r   r   r
   )r4  r:  r0   r0   r1   test_spherical_yn  s
    	z TestSystematic.test_spherical_ync             C   s,   dd }t dd t|tddt g d S )Nc             S   sP   t j|}t j| t jdd  |t jd| t j  }|jdkrH|jS |S d S )Nr    r   r   )r   r3  rU  r  r  r   r#  rC   )r>   r/   r4  r5  r0   r0   r1   r:    s    

zATestSystematic.test_spherical_yn_complex.<locals>.mp_spherical_ync             S   s   t jt| j|S )N)r)   r;  r   rC   )r>   r/   r0   r0   r1   rE     s    z:TestSystematic.test_spherical_yn_complex.<locals>.<lambda>r   r6   )r   r   r   r   )r4  r:  r0   r0   r1   test_spherical_yn_complex  s    	z(TestSystematic.test_spherical_yn_complexc             C   s2   dd }t dd t|tddt gddd	 d S )Nc             S   sP   t j|}t j| t jdd  |t jd| t j  }|jdkrH|jS |S d S )Nr    r   r   )r   r3  rF  r  r  r   r#  rC   )r>   r/   r4  r5  r0   r0   r1   mp_spherical_in  s    

z9TestSystematic.test_spherical_in.<locals>.mp_spherical_inc             S   s   t jt| |S )N)r)   spherical_inr   )r>   r/   r0   r0   r1   rE     s    z2TestSystematic.test_spherical_in.<locals>.<lambda>r   r6   r   i  )r   rX   ig訰6)r   r   r   r
   )r4  r>  r0   r0   r1   test_spherical_in  s
    	z TestSystematic.test_spherical_inc             C   s,   dd }t dd t|tddt g d S )Nc             S   sP   t j|}t j| t jdd  |t jd| t j  }|jdkrH|jS |S d S )Nr    r   r   )r   r3  rF  r  r  r   r#  rC   )r>   r/   r4  r5  r0   r0   r1   r>    s    

zATestSystematic.test_spherical_in_complex.<locals>.mp_spherical_inc             S   s   t jt| j|S )N)r)   r?  r   rC   )r>   r/   r0   r0   r1   rE     s    z:TestSystematic.test_spherical_in_complex.<locals>.<lambda>r   r6   )r   r   r   r   )r4  r>  r0   r0   r1   test_spherical_in_complex  s    	z(TestSystematic.test_spherical_in_complexc             C   s0   dd }t dd t|tddt gdd d S )	Nc             S   sR   t j| t jdd  |t jt jdt j|   }t j|jdkrJ|jS |S d S )Nr    r   r   )r   rP  r  r  r   r3  r#  rC   )r>   r/   r5  r0   r0   r1   mp_spherical_kn  s
    z9TestSystematic.test_spherical_kn.<locals>.mp_spherical_knc             S   s   t jt| |S )N)r)   spherical_knr   )r>   r/   r0   r0   r1   rE     s    z2TestSystematic.test_spherical_kn.<locals>.<lambda>r   rI   r7   )r   )r   r   r   r
   )r4  rB  r0   r0   r1   test_spherical_kn  s
    z TestSystematic.test_spherical_knz.Accuracy issues near z = -1 inherited from kv.c             C   s0   dd }t dd t|tddt gdd d S )Nc             S   sP   t j|}t j| t jdd  |t jd| t j  }|jdkrH|jS |S d S )Nr    r   r   )r   r3  rP  r  r  r   r#  rC   )r>   r/   r4  r5  r0   r0   r1   rB    s    

zATestSystematic.test_spherical_kn_complex.<locals>.mp_spherical_knc             S   s   t jt| j|S )N)r)   rC  r   rC   )r>   r/   r0   r0   r1   rE     s    z:TestSystematic.test_spherical_kn_complex.<locals>.<lambda>r   r6   )r   )r   r   r   r   )r4  rB  r0   r0   r1   test_spherical_kn_complex  s
    	z(TestSystematic.test_spherical_kn_complexN)__name__
__module____qualname__r5  r6  r8  r9  r;  r<  r=  r>  rA  rC  rE  rH  rI  rL  rM  rQ  rS  rT  rZ  r[  r\  r   r`  rc  rf  pytestmarkZxfailrj  rm  rn  rr  rs  rv  rw  rx  ry  rz  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  r  r   r  r  r  r  r  r  r  r  r  r  Zxfail_on_32bitr  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*  r,  r0  r2  r8  r9  r<  r=  r@  rA  rD  rE  r0   r0   r0   r1   r1    s  



		
	0

	
3
			
	r1  )K__doc__Znumpyr!   Znumpy.testingr   r   r   rI  rm   Zdistutils.versionr   Zscipy.specialZspecialr)   Zscipy.special._testutilsr   r   r   r	   Zscipy.special._mptestutilsr
   r   r   r   r   r   r   r   r   r   Zscipy.special._ufuncsr   r   r   r   r   r   r   ImportErrorr2   r@   rH   rQ   rc   rr   r   r   r   rJ  Zslowr   r   r   r   r   r   r   r  r  r	  r
  r  r  r  r  r!  r%  r+  r,  r-  r.  ro   r@  objectr1  r0   r0   r0   r1   <module>   sr   
0  8'