3
Od%                 @   s   d dl Zd dlmZmZmZmZmZ d dlm	Z	 d dl
mZmZmZ d dlmZ d dl mZmZ dd Zd	d
 Zdd Zdd Zdd ZdS )    N)assert_equalassert_almost_equalassert_allcloseassert_suppress_warnings)assert_func_equal)
ellip_harmellip_harm_2ellip_normal)IntegrationWarning)sqrtpic        	         s   dd  dd dd fdd}  fd	d
}dt dddt ddddfdt dddt ddddfg}t x}|jtd |jtd xX|D ]P}t|}|| }| | \}}t||dd|d tt|| dt| k | qW W d Q R X d S )Nc             S   s   t | d |d  |d  ||  }t | d | |d |  ||d   |||   }t | d | ||d   ||d   |||   }|||fS )N   )r   )lambda1munuh2k2xyz r   W/var/www/html/virt/lib64/python3.6/site-packages/scipy/special/tests/test_ellip_harm.pychange_coefficient   s    $44z0test_ellip_potential.<locals>.change_coefficientc             S   s0   t ||||| t ||||| t ||||| S )N)r   )r   r   r   npr   r   r   r   r   solid_int_ellip   s    z-test_ellip_potential.<locals>.solid_int_ellipc             S   s0   t ||||| t||||| t||||| S )N)r	   r   )r   r   r   r   r   r   r   r   r   r   solid_int_ellip2   s    z.test_ellip_potential.<locals>.solid_int_ellip2c                s   d}d}	xt dD ]}
d}xht dd|
 d D ]R}|dt  ||||
|||| |||
|||  t|||
|d|
 d   7 }q.W t|d| t|	 k rP |	|7 }	qW |	|fS )Ng:0yE>r         r      g?)ranger   r
   abs)r   mu1nu1lambda2mu2nu2r   r   ZtolZsum1r   Zxsumr   )r   r   r   r   	summation   s    ."z'test_ellip_potential.<locals>.summationc                s\    | ||||\}}	}
 |||||\}}}t || d ||	 d  ||
 d  }d| S )Nr   r   )r   )r   r#   r$   r%   r&   r'   r   r   x1y1Zz1Zx2y2Zz2res)r   r   r   	potential,   s    (z'test_ellip_potential.<locals>.potentialx      r   )               g	@      g333333@r   z The occurrence of roundoff errorz"The maximum number of subdivisionsr   g:0yE>)Zatolrtolerr_msg
   )r   r   filterr   reprr   r   r"   )	r(   r-   Zptssupr   r8   exactresultZ	last_termr   )r   r   r   r   test_ellip_potential   s     
r?   c                  s  dd } dd }dd }dd }d	d
 }dd }dd }dd }dd }dd }	dd }
dd }dd }dd }dd }dd  }d3| d4|d5|d6|d7|d8|d9|d:|d;|d<|
d=|	d>|d?|d@|dA|dB|ifd)d* t j   fd+d,}t jjd- t jjd.d"d/}|d"t jjd.|jd/  }g }xVtd%D ]J}xBtd"d#| d# D ],}|j||t j|j|t j|j|f qBW q*W t j	|}t
 "}|jtd0 tt||d1d2 W d Q R X d S )CNc             S   s   dt  S )Nr    )r   )r   r   r   r   r   G01E   s    ztest_ellip_norm.<locals>.G01c             S   s   dt  |  | d S )Nr       )r   )r   r   r   r   r   G11H   s    ztest_ellip_norm.<locals>.G11c             S   s   dt  |  ||   d S )Nr    rA   )r   )r   r   r   r   r   G12K   s    ztest_ellip_norm.<locals>.G12c             S   s   dt  | ||   d S )Nr    rA   )r   )r   r   r   r   r   G13N   s    ztest_ellip_norm.<locals>.G13c             S   s   d| d |d   d|  | | d |d    d| d  |d   t | d |d  | |  d| d |d   d|  | | |     }dt d | S )Nr   r       rA   r4   i  )r   r   )r   r   r,   r   r   r   G22Q   s    BFztest_ellip_norm.<locals>.G22c             S   s   d| d |d   d|  | | d |d    d| d  |d   t | d |d  | |  d| d |d   d|  | | |     }dt d | S )Nr   r    rE   rA   r4   i  )r   r   )r   r   r,   r   r   r   G21V   s    ztest_ellip_norm.<locals>.G21c             S   s    dt  | d  | ||   d S )Nr    r   r2   )r   )r   r   r   r   r   G23[   s    ztest_ellip_norm.<locals>.G23c             S   s    dt  |  |d  ||   d S )Nr    r   r2   )r   )r   r   r   r   r   G24^   s    ztest_ellip_norm.<locals>.G24c             S   s    dt  |  | ||  d  d S )Nr    r   r2   )r   )r   r   r   r   r   G25a   s    ztest_ellip_norm.<locals>.G25c             S   s   d| d |d   d|  | | d |d    d| d  |d   t d| d |d   d|  |  d| d |d   d	|  | | |     }dt d
 | |  | S )Nr4   r    $   r   .         rA   r6   iE3  i)r   r   )r   r   r,   r   r   r   G32d   s    vztest_ellip_norm.<locals>.G32c             S   s   d| d |d   d|  | | d |d    d| d  |d   t d| d |d   d|  |  d| d |d   d	|  | | |     }dt d
 |  | | S )Nr4   r    rL   r   rM   rN   rO   rA   r6   iE3  )r   r   )r   r   r,   r   r   r   G31j   s    vztest_ellip_norm.<locals>.G31c             S   s   d| d  d|d   d| d  |  d|  |d   d| d  |d   t | d d|d   | |  d| d  d	|d   d
| d  |  d|  |d     }dt d |  ||   | S )NrE   r    r4      rA      "   r   rO   	      iE3  i)r   r   )r   r   r,   r   r   r   G34p   s    ztest_ellip_norm.<locals>.G34c             S   s   d| d  d|d   d| d  |  d|  |d   d| d  |d   t | d d|d   | |  d| d  d	|d   d
| d  |  d|  |d     }dt d |  ||   | S )NrE   r    r4   rR   rA   rS   rT   r   rO   rU   rV   iE3  )r   r   )r   r   r,   r   r   r   G33v   s    ztest_ellip_norm.<locals>.G33c             S   s   d| d  d|d   d| d  |  d|  |d   d| d  |d   t d| d  |d  | |  d| d  d|d   d
| d  |  d|  |d     }dt d | ||   | S )Nr4   r    rE   rS   rA   rR   rT   r   rO   rV   rU   iE3  i)r   r   )r   r   r,   r   r   r   G36|   s    ztest_ellip_norm.<locals>.G36c             S   s   d| d  d|d   d| d  |  d|  |d   d| d  |d   t d| d  |d  | |  d	| d  d|d   d
| d  |  d|  |d     }dt d | ||   | S )Nr4   r    rE   rS   rA   rR   rT   r   rO   rV   rU   iE3  )r   r   )r   r   r,   r   r   r   G35   s    ztest_ellip_norm.<locals>.G35c             S   s(   dt  | d  |d  ||  d  d S )Nr    r   i   )r   )r   r   r   r   r   G37   s    ztest_ellip_norm.<locals>.G37r   r   r   rA   r       rE   rN   c                s    | |f }|||S )Nr   )r   r   r   r   func)known_funcsr   r   _ellip_norm   s    z$test_ellip_norm.<locals>._ellip_normc                s    ||| |S )Nr   )r   r   r   r   )r`   r   r   ellip_normal_known   s    z+test_ellip_norm.<locals>.ellip_normal_knowni  g      ?)sizez The occurrence of roundoff errorg-q=)r7   )r   r   )r   r   )r   r   )r   rA   )r   r   )r   r   )r   rA   )r   r    )r   r]   )rA   r   )rA   r   )rA   rA   )rA   r    )rA   r]   )rA   rE   )rA   rN   )npZ	vectorizerandomseedparetorb   r!   appendfullarrayr   r:   r   r   r
   )r@   rB   rC   rD   rG   rH   rI   rJ   rK   rP   rQ   rW   rX   rY   rZ   r\   ra   r   r   pointsr   r   r<   r   )r`   r_   r   test_ellip_normC   sD    
2
rk   c              C   s   dd } t  }|jtd t| dddddtd   ttddd	ddd
 ttddd	d	dd ttddd	ddd ttddd	ddd ttddd	ddd W d Q R X d S )Nc          	   S   sp   t | |dd|dt| |dd|  t | |dd|dt| |dd|   t | |dd|dt| |dd|   }|S )Nr   rA   r   )r	   r   )r   r   sr,   r   r   r   I1   s    F&ztest_ellip_harm_2.<locals>.I1z The occurrence of roundoff errorr]   rO   r9   r   d   r   g$;Q?gyoVQ?rA   g<i`Q?r    gϙar~Q?gTzL۰Q?_   \   i$"  )r   r:   r   r   r   r	   )rm   r<   r   r   r   test_ellip_harm_2   s    rq   c                  s  dd } dd }dd }dd }d	d
 }dd }dd }dd }dd }dd }	dd }
dd }dd }dd }dd }dd  }t td!d"d#d$d%d#d#td!d"d#d$d% d3| d4|d5|d6|d7|d8|d9|d:|d;|d<|	d=|
d>|d?|d@|dA|dB|i g  fd+d,}tjjd- tjjd.d/d0}|d#tjjd.|jd0  }tjjd.|jd0}g }xft|jD ]X}xPtd(D ]D}x<td#d$| d$ D ]&}|j|| || |||| f qzW qbW qTW tj	|}t
t||d1d2 d S )CNc             S   s   dS )Nr   r   )r   r   rl   r   r   r   E01   s    ztest_ellip_harm.<locals>.E01c             S   s   |S )Nr   )r   r   rl   r   r   r   E11   s    ztest_ellip_harm.<locals>.E11c             S   s   t t|| |  S )N)r   r"   )r   r   rl   r   r   r   E12   s    ztest_ellip_harm.<locals>.E12c             S   s   t t|| | S )N)r   r"   )r   r   rl   r   r   r   E13   s    ztest_ellip_harm.<locals>.E13c             S   s8   || d| | t t| | | |  d|  |     S )Nr   rA   gUUUUUU?)r   r"   )r   r   rl   r   r   r   E21   s    ztest_ellip_harm.<locals>.E21c             S   s8   || d| | t t| | | |  d|  |     S )Nr   rA   gUUUUUU?)r   r"   )r   r   rl   r   r   r   E22   s    ztest_ellip_harm.<locals>.E22c             S   s   |t t|| |   S )N)r   r"   )r   r   rl   r   r   r   E23   s    ztest_ellip_harm.<locals>.E23c             S   s   |t t|| |  S )N)r   r"   )r   r   rl   r   r   r   E24   s    ztest_ellip_harm.<locals>.E24c             S   s    t t|| |  || |  S )N)r   r"   )r   r   rl   r   r   r   E25   s    ztest_ellip_harm.<locals>.E25c             S   sD   || | |d d| |  t d| |  | |  d|  |     S )Nr]   r   r    r2   )r   )r   r   rl   r   r   r   E31   s    .ztest_ellip_harm.<locals>.E31c             S   sD   || | |d d| |  t d| |  | |  d|  |     S )Nr]   r   r    r2   )r   )r   r   rl   r   r   r   E32   s    .ztest_ellip_harm.<locals>.E32c          
   S   sX   t t|| |  || d| d|  t t| d|  | d|   d|  |      S )Nr   r]   r   g?)r   r"   )r   r   rl   r   r   r   E33   s    *ztest_ellip_harm.<locals>.E33c          
   S   sX   t t|| |  || d| d|  t t| d|  | d|   d|  |      S )Nr   r]   r   g?)r   r"   )r   r   rl   r   r   r   E34   s    *ztest_ellip_harm.<locals>.E34c          	   S   sX   t t|| | || dd|  | t td|  | d|  |  d|  |      S )Nr   r]   r   g?)r   r"   )r   r   rl   r   r   r   E35   s    .ztest_ellip_harm.<locals>.E35c          	   S   sX   t t|| | || dd|  | t td|  | d|  |  d|  |      S )Nr   r]   r   g?)r   r"   )r   r   rl   r   r   r   E36   s    .ztest_ellip_harm.<locals>.E36c             S   s$   |t t|| |  || |   S )N)r   r"   )r   r   rl   r   r   r   E37   s    ztest_ellip_harm.<locals>.E37r]   rO   r   r   g      @r   rA   r    rE   rN   c                sR   xLt | jD ]>} t|| t|| f }j|| | || ||  qW S )N)r!   rb   intrg   )r   r   r   r   rl   ir^   )r_   	point_refr   r   ellip_harm_known   s    "z)test_ellip_harm.<locals>.ellip_harm_knowni  g      ?   )rb   g-q=)r7   )r   r   )r   r   )r   r   )r   rA   )r   r   )r   r   )r   rA   )r   r    )r   r]   )rA   r   )rA   r   )rA   rA   )rA   r    )rA   r]   )rA   rE   )rA   rN   )r   r   rc   rd   re   rf   rb   r!   rg   ri   r   )rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   rl   rj   r   r   r   r   )r_   r   r   test_ellip_harm   sF    2
r   c              C   s2   d} d|  d }t dd| |d}tj|s.td S )Nr    r   g      ?g       @g?)r   rc   isnanAssertionError)r   r   r>   r   r   r   test_ellip_harm_invalid_p  s    r   )Znumpyrc   Znumpy.testingr   r   r   r   r   Zscipy.special._testutilsr   Zscipy.specialr   r	   r
   Zscipy.integrater   r   r   r?   rk   rq   r   r   r   r   r   r   <module>   s   4dU