3
Od7                 @   s  d dl Zd dlmZmZmZmZ d dlZd dl mZm	Z	m
Z
mZmZmZmZmZmZ d dlmZmZmZmZ d dlmZ G dd dZG dd	 d	ZG d
d dZG dd dZG dd dZG dd dZG dd deZG dd deZG dd deZ G dd deZ!G dd dZ"dS )    N)assert_almost_equalassert_allcloseassert_array_almost_equalsuppress_warnings)	sincossinhcoshexpinfnanr_pi)spherical_jnspherical_ynspherical_inspherical_kn)quadc               @   sL   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S )TestSphericalJnc             C   sT   t jdddddg}ttd|d	| d|d   t| d|d  t|   d S )
NgQ?gGz?gGz(@g^@g     J@         )nparrayr   r   r   r   )selfx r   ]/var/www/html/virt/lib64/python3.6/site-packages/scipy/special/tests/test_spherical_bessel.pytest_spherical_jn_exact   s    
z'TestSphericalJn.test_spherical_jn_exactc             C   sT   t jdddddg}d}tt|d |t|d | d| d | t||  d S )	Nr   r   r         g?y              ?y?      ?)r   r   r   r   )r   nr   r   r   r   $test_spherical_jn_recurrence_complex   s    z4TestSphericalJn.test_spherical_jn_recurrence_complexc             C   sT   t jdddddg}d}tt|d |t|d | d| d | t||  d S )Nr   r   r   r    r!   gQ?)r   r   r   r   )r   r"   r   r   r   r   !test_spherical_jn_recurrence_real   s    z1TestSphericalJn.test_spherical_jn_recurrence_realc             C   s2   d}t jt tg}tt||t jddg d S )N   r   )r   r   r   r   r   )r   r"   r   r   r   r   test_spherical_jn_inf_real%   s    z*TestSphericalJn.test_spherical_jn_inf_realc             C   sd   d}t jt d td td g}t 2}|jtd tt||t jddtd g W d Q R X d S )	Nr    y                r   y              ?z%invalid value encountered in multiplyr   y      ?      ?y      ?      ?)r   r   r   r   filterRuntimeWarningr   r   )r   r"   r   supr   r   r   test_spherical_jn_inf_complex+   s
    z-TestSphericalJn.test_spherical_jn_inf_complexc             C   s   t tddd d S )Nr   g%-@g<]3?g<]3)r   r   )r   r   r   r   test_spherical_jn_large_arg_13   s    z-TestSphericalJn.test_spherical_jn_large_arg_1c             C   s   t tddd d S )Nr   i'  g|	 ?)r   r   )r   r   r   r   test_spherical_jn_large_arg_29   s    z-TestSphericalJn.test_spherical_jn_large_arg_2c          	   C   s@   t jddddddg}d}tt||t jddddddg d S )Nr   r   r      
   d   )r   r   r   r   )r   r"   r   r   r   r   test_spherical_jn_at_zero?   s    z)TestSphericalJn.test_spherical_jn_at_zeroN)__name__
__module____qualname__r   r#   r$   r&   r*   r+   r,   r0   r   r   r   r   r      s   r   c               @   sD   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S )TestSphericalYnc             C   sT   t jdddddg}ttd|d| d|d   t| d|d  t|   d S )	NgQ?gGz?gGz(@g^@g     J@r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   test_spherical_yn_exactH   s    
z'TestSphericalYn.test_spherical_yn_exactc             C   sT   t jdddddg}d}tt|d |t|d | d| d | t||  d S )Nr   r   r   r    r!   gQ?)r   r   r   r   )r   r"   r   r   r   r   !test_spherical_yn_recurrence_realP   s    z1TestSphericalYn.test_spherical_yn_recurrence_realc             C   sT   t jdddddg}d}tt|d |t|d | d| d | t||  d S )	Nr   r   r   r    r!   g?y              ?y?      ?)r   r   r   r   )r   r"   r   r   r   r   $test_spherical_yn_recurrence_complexW   s    z4TestSphericalYn.test_spherical_yn_recurrence_complexc             C   s2   d}t jt tg}tt||t jddg d S )Nr%   r   )r   r   r   r   r   )r   r"   r   r   r   r   test_spherical_yn_inf_real^   s    z*TestSphericalYn.test_spherical_yn_inf_realc             C   sd   d}t jt d td td g}t 2}|jtd tt||t jddtd g W d Q R X d S )	Nr    y                r   y              ?z%invalid value encountered in multiplyr   y      ?      ?y      ?      ?)r   r   r   r   r'   r(   r   r   )r   r"   r   r)   r   r   r   test_spherical_yn_inf_complexd   s
    z-TestSphericalYn.test_spherical_yn_inf_complexc             C   s:   t jddddddg}d}tt||t j|jt  d S )Nr   r   r   r-   r.   r/   )r   r   r   r   fullshaper   )r   r"   r   r   r   r   test_spherical_yn_at_zerol   s    z)TestSphericalYn.test_spherical_yn_at_zeroc             C   s8   t jddddddg}d}tt||t j|jt d S )	Nr   r   r   r-   r.   r/   y                y                )r   r   r   r   r:   r;   r   )r   r"   r   r   r   r   !test_spherical_yn_at_zero_complexr   s    z1TestSphericalYn.test_spherical_yn_at_zero_complexN)
r1   r2   r3   r5   r6   r7   r8   r9   r<   r=   r   r   r   r   r4   G   s   r4   c               @   s   e Zd Zdd Zdd ZdS )TestSphericalJnYnCrossProductc             C   sj   t jdddg}t jdddg}t|d |t|| t||t|d |  }d|d  }t|| d S )Nr   r-      g?r.   r   )r   r   r   r   r   )r   r"   r   leftrightr   r   r   $test_spherical_jn_yn_cross_product_1~   s    zBTestSphericalJnYnCrossProduct.test_spherical_jn_yn_cross_product_1c             C   sr   t jdddg}t jdddg}t|d |t|| t||t|d |  }d| d |d  }t|| d S )Nr   r-   r?   g?r.   r   r   )r   r   r   r   r   )r   r"   r   r@   rA   r   r   r   $test_spherical_jn_yn_cross_product_2   s    zBTestSphericalJnYnCrossProduct.test_spherical_jn_yn_cross_product_2N)r1   r2   r3   rB   rC   r   r   r   r   r>   }   s   	r>   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestSphericalInc             C   sR   t jddddg}ttd|d| d|d   t| d|d  t|   d S )NgQ?gGz?gGz(@g^@r   r   r   )r   r   r   r   r   r	   )r   r   r   r   r   test_spherical_in_exact   s    
z'TestSphericalIn.test_spherical_in_exactc             C   sT   t jdddddg}d}tt|d |t|d | d| d | t||  d S )Nr   r   r   r    r!   gQ?)r   r   r   r   )r   r"   r   r   r   r   !test_spherical_in_recurrence_real   s    z1TestSphericalIn.test_spherical_in_recurrence_realc             C   sT   t jdddddg}d}tt|d |t|d | d| d | t||  d S )	Nr   r   r   r    r!   g?y              ?y?      ?)r   r   r   r   )r   r"   r   r   r   r   $test_spherical_in_recurrence_complex   s    z4TestSphericalIn.test_spherical_in_recurrence_complexc             C   s4   d}t jt tg}tt||t jt tg d S )Nr-   )r   r   r   r   r   )r   r"   r   r   r   r   test_spherical_in_inf_real   s    z*TestSphericalIn.test_spherical_in_inf_realc             C   sD   d}t jt d td td g}tt||t jt ttg d S )Nr    y                r   y              ?y      ?      ?)r   r   r   r   r   r   )r   r"   r   r   r   r   test_spherical_in_inf_complex   s    z-TestSphericalIn.test_spherical_in_inf_complexc          	   C   s@   t jddddddg}d}tt||t jddddddg d S )Nr   r   r   r-   r.   r/   )r   r   r   r   )r   r"   r   r   r   r   test_spherical_in_at_zero   s    z)TestSphericalIn.test_spherical_in_at_zeroN)	r1   r2   r3   rE   rF   rG   rH   rI   rJ   r   r   r   r   rD      s   rD   c               @   sD   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S )TestSphericalKnc             C   sT   t jddddg}ttd|td t|  d| d|d   d|d     d S )NgQ?gGz?gGz(@g^@r   r   r   )r   r   r   r   r   r
   )r   r   r   r   r   test_spherical_kn_exact   s    
z'TestSphericalKn.test_spherical_kn_exactc             C   st   t jdddddg}d}td|d  t|d | d|d  t|d |  d	| d| d  | t||  d S )
Nr   r   r   r    r!   gQ?r   r   r   )r   r   r   r   )r   r"   r   r   r   r   !test_spherical_kn_recurrence_real   s    4z1TestSphericalKn.test_spherical_kn_recurrence_realc             C   st   t jdddddg}d}td	|d  t|d | d
|d  t|d |  d| d| d  | t||  d S )Nr   r   r   r    r!   g?y              ?y?      ?r   r   r   )r   r   r   r   )r   r"   r   r   r   r   $test_spherical_kn_recurrence_complex   s    4z4TestSphericalKn.test_spherical_kn_recurrence_complexc             C   s4   d}t jt tg}tt||t jt dg d S )Nr-   r   )r   r   r   r   r   )r   r"   r   r   r   r   test_spherical_kn_inf_real   s    z*TestSphericalKn.test_spherical_kn_inf_realc             C   sD   d}t jt d td td g}tt||t jt dtg d S )Nr    y                r   y              ?r   y      ?      ?)r   r   r   r   r   r   )r   r"   r   r   r   r   test_spherical_kn_inf_complex   s    z-TestSphericalKn.test_spherical_kn_inf_complexc             C   s8   t jddddddg}d}tt||t j|jt d S )Nr   r   r   r-   r.   r/   )r   r   r   r   r:   r;   r   )r   r"   r   r   r   r   test_spherical_kn_at_zero   s    z)TestSphericalKn.test_spherical_kn_at_zeroc             C   s8   t jddddddg}d}tt||t j|jt d S )	Nr   r   r   r-   r.   r/   y                y                )r   r   r   r   r:   r;   r   )r   r"   r   r   r   r   !test_spherical_kn_at_zero_complex   s    z1TestSphericalKn.test_spherical_kn_at_zero_complexN)
r1   r2   r3   rL   rM   rN   rO   rP   rQ   rR   r   r   r   r   rK      s   	rK   c               @   s4   e Zd Zdd Zejjdd Zejjdd ZdS )SphericalDerivativesTestCasec                s@   t  fdd||\}}t|j |j | |d d S )Nc                s   j  | S )N)df)z)r"   r   r   r   <lambda>   s    zBSphericalDerivativesTestCase.fundamental_theorem.<locals>.<lambda>)Zatol)r   r   f)r   r"   abZintegralZ	tolerancer   )r"   r   r   fundamental_theorem   s    z0SphericalDerivativesTestCase.fundamental_theoremc             C   s   | j ddd d S )Nr   g      @g      .@)rZ   )r   r   r   r   test_fundamental_theorem_0   s    z7SphericalDerivativesTestCase.test_fundamental_theorem_0c             C   s   | j ddd d S )Nr    g      ?g333333?)rZ   )r   r   r   r   test_fundamental_theorem_7   s    z7SphericalDerivativesTestCase.test_fundamental_theorem_7N)	r1   r2   r3   rZ   pytestmarkZslowr[   r\   r   r   r   r   rS      s   rS   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestSphericalJnDerivativesc             C   s
   t ||S )N)r   )r   r"   rU   r   r   r   rW     s    zTestSphericalJnDerivatives.fc             C   s   t ||ddS )NT)
derivative)r   )r   r"   rU   r   r   r   rT     s    zTestSphericalJnDerivatives.dfc          	   C   s@   t jddddddg}tt|dddt jdd	ddddg d S )
Nr   r   r   r   r       T)r`   gUUUUUU?)r   r   r   r   )r   r"   r   r   r   test_spherical_jn_d_zero  s    z3TestSphericalJnDerivatives.test_spherical_jn_d_zeroN)r1   r2   r3   rW   rT   rb   r   r   r   r   r_      s   r_   c               @   s   e Zd Zdd Zdd ZdS )TestSphericalYnDerivativesc             C   s
   t ||S )N)r   )r   r"   rU   r   r   r   rW     s    zTestSphericalYnDerivatives.fc             C   s   t ||ddS )NT)r`   )r   )r   r"   rU   r   r   r   rT     s    zTestSphericalYnDerivatives.dfN)r1   r2   r3   rW   rT   r   r   r   r   rc     s   rc   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestSphericalInDerivativesc             C   s
   t ||S )N)r   )r   r"   rU   r   r   r   rW     s    zTestSphericalInDerivatives.fc             C   s   t ||ddS )NT)r`   )r   )r   r"   rU   r   r   r   rT     s    zTestSphericalInDerivatives.dfc             C   s2   t jdddddg}tt|dddt jd	 d S )
Nr   r   r   r    ra   r   T)r`   r-   )r   r   r   r   Zzeros)r   r"   r   r   r   test_spherical_in_d_zero  s    z3TestSphericalInDerivatives.test_spherical_in_d_zeroN)r1   r2   r3   rW   rT   re   r   r   r   r   rd     s   rd   c               @   s   e Zd Zdd Zdd ZdS )TestSphericalKnDerivativesc             C   s
   t ||S )N)r   )r   r"   rU   r   r   r   rW   #  s    zTestSphericalKnDerivatives.fc             C   s   t ||ddS )NT)r`   )r   )r   r"   rU   r   r   r   rT   &  s    zTestSphericalKnDerivatives.dfN)r1   r2   r3   rW   rT   r   r   r   r   rf   "  s   rf   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSphericalOldc             C   s   t jd}d}td||d d< td||d d< td|dd|d d< td|dd|d d< |d d }|d d d|d d   }t|d t jdd	gd
 t|d ||gd
 d S )Nr   g?r   r   T)r`   g       @gA\?gc"?r!   )r   r   g      $@)r   emptyr   r   r   )r   Zi1nr   Zinp0Zinp1r   r   r   test_sph_in.  s    
zTestSphericalOld.test_sph_inc             C   s   d}t jd}td||d< td|dd|d< t jt j|| t j|| t j||d   g}tt| | t jd	}td||d< td|dd|d< t jdt	 t
|  | d
t	 t
|  d| d|d    g}tt| | d S )Ng      ?r   r   T)r`   r   g      ?)r   )r   g      )r   rh   r   r   r   r	   r   r   r   r   r
   )r   r   Zsph_i0Zsph_i0_expectedZsph_k0Zsph_k0_expectedr   r   r   test_sph_in_kn_order0>  s    
$
*z&TestSphericalOld.test_sph_in_kn_order0c             C   s   t jd}d}td||d d< td||d d< td||d d< td|dd|d d< td|dd|d d< td|dd|d d< |d d  }|d d d|d d   }|d d d|d d   }t|d d
ddgd t|d |||gd d S )Nr   r   g?r   r   T)r`   g       @g      @gkG~?gk?g)qe?r!   )r   r   g      $@g      .@)r   rh   r   r   )r   s1r   Zs10Zs11Zs12r   r   r   test_sph_jnN  s    


zTestSphericalOld.test_sph_jnc             C   s   t jd}d}td||d d< td||d d< td||d d< td|dd|d d< td|dd|d d< td|dd|d d< |d d  }|d d  d|d d   }|d d  d|d d   }t|d d
ddgd t|d |||gd d S )Nr   r   g?r   r   T)r`   g       @g      @gDT@g3̱wJC@g-uAI@r!   	   )r   r   g      $@g      .@)r   rh   r   r   )r   knr   Zkn0Zkn1Zkn2r   r   r   test_sph_kna  s    


zTestSphericalOld.test_sph_knc             C   sf   t dd}t dd}t|dd t|dd t dddt dd  d }t ddd	d
}t||d d S )Nr   g?r   g[_$ew@r-   g&$@r   r   T)r`      g[_$ewg&$)r   r   )r   Zsy1Zsy2ZsphpyZsy3r   r   r   test_sph_ynt  s    

zTestSphericalOld.test_sph_ynN)r1   r2   r3   ri   rj   rl   ro   rq   r   r   r   r   rg   *  s
   rg   )#Znumpyr   Znumpy.testingr   r   r   r   r]   r   r   r   r	   r
   r   r   r   r   Zscipy.specialr   r   r   r   Zscipy.integrater   r   r4   r>   rD   rK   rS   r_   rc   rd   rf   rg   r   r   r   r   <module>   s    ,96.1