U
    #cK8                     @   s   d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZ d dlmZmZmZmZmZ G dd deZG dd de	ZG dd dZG d	d
 d
ZG dd dZdS )    )logspacelinspace	geomspacedtypearraysctypesarangeisnanndarraysqrt	nextafterstackerrstate)assert_assert_equalassert_raisesassert_array_equalassert_allclosec                   @   sL   e Zd Zdd Zdd ZeZdd Zdd Zd	d
 ZeZ	dd Z
dd ZdS )PhysicalQuantityc                 C   s   t | |S N)float__new__)clsvalue r   G/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_function_base.pyr      s    zPhysicalQuantity.__new__c                 C   s"   t t|t tt|t|  S r   r   
isinstancer   r   selfxr   r   r   __add__   s    zPhysicalQuantity.__add__c                 C   s"   t t|t tt| t| S r   r   r   r   r   r   __sub__   s    zPhysicalQuantity.__sub__c                 C   s"   t t|t tt|t|  S r   r   r   r   r   r   __rsub__   s    zPhysicalQuantity.__rsub__c                 C   s   t t|t|  S r   r   r   r   r   r   r   __mul__   s    zPhysicalQuantity.__mul__c                 C   s   t t| t| S r   r$   r   r   r   r   __div__   s    zPhysicalQuantity.__div__c                 C   s   t t|t|  S r   r$   r   r   r   r   __rdiv__"   s    zPhysicalQuantity.__rdiv__N)__name__
__module____qualname__r   r!   __radd__r"   r#   r%   __rmul__r&   r'   r   r   r   r   r   
   s   r   c                   @   s   e Zd ZdZdS )PhysicalQuantity2
   N)r(   r)   r*   Z__array_priority__r   r   r   r   r-   &   s   r-   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestLogspacec              	   C   s   t dd}tt|dk t dddd}t|d dk t dddd	}t|d dk  t ddd
d}t|dddddddg d S )Nr      2   d   num@B Fendpoint      r.        @@     @     j@    .A)r   r   lenr   r   yr   r   r   
test_basic,   s    
zTestLogspace.test_basicc                    s   t ddg}t ddg t| d}tdd t| D dd	}t|| t| d
 d}t fdd|D dd	}t|| t| ddd	}t||j d S )N              ?g      @      @r0   c                 S   s   g | ]\}}t ||d qS )r0   r   .0_start_stopr   r   r   
<listcomp>:   s   z6TestLogspace.test_start_stop_array.<locals>.<listcomp>r:   Zaxisr   c                    s   g | ]}t | d  dqS )r   r0   rF   rH   rI   stopr   r   rK   >   s   r5   )r   r   r   zipr   Tr   startt1t2t3t4t5r   rN   r   test_start_stop_array6   s$    

z"TestLogspace.test_start_stop_arrayc                 C   s^   t dddd}t|jtd t dddd}t|jtd t dddd}t|jtd d S Nr   r0   float32r   float64int32)r   r   r   r@   r   r   r   
test_dtypeD   s    zTestLogspace.test_dtypec                 C   s*   t d}t d}tt||tdd d S NrD   g      @)r   r   r   r   abr   r   r   test_physical_quantitiesL   s    z%TestLogspace.test_physical_quantitiesc                 C   sx   t dt}t dt}t||}t|tks6tt|tdd t||d}t|tksbtt|tddd d S Nr:   r9   rD   rE   )r   viewr-   r   typeAssertionErrorr   r   rb   rc   Zlsr   r   r   test_subclassQ   s    
zTestLogspace.test_subclassN)r(   r)   r*   rB   rY   r_   rd   rj   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d Z	dd Z
dd Zdd ZdS )TestGeomspacec              	   C   s   t dd}tt|dk t dddd}t|d dk t dddd	}t|d dk  t ddd
d}t|dddddddg t dddd}t|dddg t|jd t dddd}t|dddg t|jd t dddd}t|dddg t|jd d S )Nr:   r>   r1   r2   r3   r5   r6   Fr7   r9   r.   r;   r<   r=               r   i)r   r   r?   r   r   imagr@   r   r   r   rB   ^   s"    
zTestGeomspace.test_basicc                 C   s   d}d}t ||dd}t|d | t ||ddd}t|d | t ||dd}t|d | t|d	 | t ||ddd}t|d | d S )
Ng333333?gL4@r:   r3   r   Fr4   r8   rn   r5   )r   r   r   rS   rO   rA   r   r   r   ,test_boundaries_match_start_and_stop_exactlyt   s    z:TestGeomspace.test_boundaries_match_start_and_stop_exactlyc              	   C   s   t dd tdddd}W 5 Q R X t|d d tt|d	d
   t|d d t dd tddddd}W 5 Q R X t|d d tt|d	d    d S )Nignore)invalidrn   ro   r3   r   g      r:   r5   g      @Frr   )r   r   r   r   r	   allr@   r   r   r   test_nan_interior   s    zTestGeomspace.test_nan_interiorc              	   C   s  t dddd}t|dddddg t|jd t d	d
dd}t|d	dddd
g t|jd t dddd}t|ddddg t dddd}t|ddddg t dddtd}t|dddg t ddd}t|ddtd dtd  dg t ddd}t|ddtd dtd  dg t dd d}t|ddtd dtd  d g t ddd}t|ddtd dtd  dg t d!d"d#}t|d!d$d%d&d'd(d"g t dd)d}t|dd)g t d)dd}t|d)dg d S )*N              ?              0@   r3   y               @y              @y               @r                            @ty             (y             By             [      ?      ?y     @@     @@ro   y      $@      $@y      Y@      Y@y            ?y     @     @@y      $      $@y      Y      Y@r5   r:   rn   r4   r   y              @y              rw   rm   y      @        y              y             y      @      @r9   y9ҿŒ~y{xC @V]yMuU@PrN	y0@5Sy
m^>@w@@)r   r   r   realcomplexr   r@   r   r   r   test_complex   s@    $$$$  zTestGeomspace.test_complexc                 C   s   t dddd}t|jtd t dddd}t|jtd t dddd}t|jtd t ddtd}t|jtd t ddtd}t|jtd d S )	Nr:   r>   r[   r\   r]   r^   Zfloat_r   )r   r   r   r   r   r@   r   r   r   r_      s    zTestGeomspace.test_dtypec           
      C   s   t ddgdd}t ddgdd}t ddgd	d}t|d
 |d d}t|d
 |d d}t|d
 |d d}tddd}tddd}tddd}	t||dd t||dd t||	dd d S )Nx   r2   int8r\   rp       uint16r   r:   r|         ^@      Y@      ^      Y     @r;   g{Gz?)Zrtolgh㈵>)r   r   r   
r   lim1lim2Zlim3rT   rU   rV   rW   rX   Zt6r   r   r   test_start_stop_array_scalar   s    z*TestGeomspace.test_start_stop_array_scalarc                    s   t ddddddg}t ddd	d
ddg t| d}tdd t| D dd}t|| t| d d}t fdd|D dd}t|| t| ddd}t||j d S )NrD   g      @@rz   r}   r   r5   r<          @r{   r~   y     @     @r:   r|   c                 S   s   g | ]\}}t ||d qS r|   r   rG   r   r   r   rK      s   z7TestGeomspace.test_start_stop_array.<locals>.<listcomp>rL   r   c                    s   g | ]}t | d  dqS r   r|   r   rM   rN   r   r   rK      s   )r   r   r   rP   r   rQ   rR   r   rN   r   rY      s$    

z#TestGeomspace.test_start_stop_arrayc                 C   s*   t d}t d}tt||tdd d S r`   )r   r   r   ra   r   r   r   rd      s    z&TestGeomspace.test_physical_quantitiesc                 C   sx   t dt}t dt}t||}t|tks6tt|tdd t||d}t|tksbtt|tddd d S re   )r   rf   r-   r   rg   rh   r   )r   rb   rc   Zgsr   r   r   rj      s    
zTestGeomspace.test_subclassc                 C   s.   t ttdd t ttdd t ttdd d S )Nr   r.   )r   
ValueErrorr   r   r   r   r   test_bounds   s    zTestGeomspace.test_boundsN)r(   r)   r*   rB   rt   ry   r   r_   r   rY   rd   rj   r   r   r   r   r   rk   \   s   (
rk   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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 ) TestLinspacec                 C   sl   t dd}tt|dk t dddd}t|d dk t dddd	}t|d dk  ttt dddd d S )
Nr   r.   r1   rm   r2   r3   r5   Fr7   )r   r   r?   r   r   r@   r   r   r   rB     s    
zTestLinspace.test_basicc                 C   s6   t tddd}t|dgk| tttdddd d S )Nr   r:   rC   g      @r3   )listr   r   r   	TypeErrorr@   r   r   r   test_corner  s    zTestLinspace.test_cornerc                 C   sB   t dddj}t dddj}t dddj}t|| t|| d S )Nr   r:   rm   )r   r   r   )r   rT   rU   rV   r   r   r   	test_type  s
    
zTestLinspace.test_typec                 C   s^   t dddd}t|jtd t dddd}t|jtd t dddd}t|jtd d S rZ   )r   r   r   r@   r   r   r   r_     s    zTestLinspace.test_dtypec           
      C   s   t ddgdd}t ddgdd}t ddgd	d}t|d
 |d d}t|d
 |d d}t|d
 |d d}tddd}tddd}tddd}	t|| t|| t||	 d S )Nr   r2   r   r\   r   rp   r   r   r   r   r:   r|   r   r   r   r   r   r;   )r   r   r   r   r   r   r   r     s    

z)TestLinspace.test_start_stop_array_scalarc                    s   t ddgdd}t ddgdd t| d}tdd	 t| D d
d}t|| t| d d}t fdd	|D d
d}t|| t| ddd}t||j d S )Nr   r   r   r\   r2   rp   r|   c                 S   s   g | ]\}}t ||d qS r   r   rG   r   r   r   rK   1  s   z6TestLinspace.test_start_stop_array.<locals>.<listcomp>r:   rL   r   c                    s   g | ]}t | d  dqS r   r   rM   rN   r   r   rK   5  s   r5   )r   r   r   rP   r   rQ   rR   r   rN   r   rY   -  s$    

z"TestLinspace.test_start_stop_arrayc                 C   sT   t ddd}tdddddg}t ddd}tdd	d
ddg}t|| t|| d S )Ny      ?       @y      @      @r|   y      ?      @y       @      @y      @      @rz   r.   y      @      ?y      @      ?y      @      ?y      $@        )r   r   r   )r   r   rT   r   rU   r   r   r   r   ;  s    
zTestLinspace.test_complexc                 C   s*   t d}t d}tt||tdd d S )NrC   rD   )r   r   r   ra   r   r   r   rd   C  s    z%TestLinspace.test_physical_quantitiesc                 C   sx   t dt}t dt}t||}t|tks6tt|tdd t||d}t|tksbtt|tddd d S )Nr   r:   rC   rD   )r   rf   r-   r   rg   rh   r   ri   r   r   r   rj   H  s    
zTestLinspace.test_subclassc                 C   sH   G dd d}|t ddd}|t ddd}tt||tdd d S )Nc                   @   s,   e Zd ZdZdd Zedd Zdd ZdS )	z3TestLinspace.test_array_interface.<locals>.Arrayisha  
            A generic object that supports the __array_interface__ and hence
            can in principle be converted to a numeric scalar, but is not
            otherwise recognized as numeric, but also happens to support
            multiplication by floats.

            Data should be an object that implements the buffer interface,
            and contains at least 4 bytes.
            c                 S   s
   || _ d S r   _data)r   datar   r   r   __init__b  s    z<TestLinspace.test_array_interface.<locals>.Arrayish.__init__c                 S   s   dd| j ddS )Nr   <i4rn   )shapeZtypestrr   versionr   r   r   r   r   __array_interface__e  s    zGTestLinspace.test_array_interface.<locals>.Arrayish.__array_interface__c                 S   s   | S r   r   )r   otherr   r   r   r%   j  s    z;TestLinspace.test_array_interface.<locals>.Arrayish.__mul__N)r(   r)   r*   __doc__r   propertyr   r%   r   r   r   r   ArrayishW  s
   

r   r:   r   r\   r|   )r   r   r   )r   r   ZoneZfiver   r   r   test_array_interfaceR  s    z!TestLinspace.test_array_interfacec              
   C   sB   t d D ]4}t|d|dd }tttd|dd|d qd S )Nr   r   r:   r|   r.   F)r8   r   )r   r   r   anyr   )r   ZftyperO   r   r   r   test_denormal_numberst  s    z"TestLinspace.test_denormal_numbersc                 C   s8   t dD ]*}ttd||d tdt|d td qd S )Nr   r   r:   r\   )ranger   r   intr   )r   jr   r   r   test_equivalent_to_arange{  s    z&TestLinspace.test_equivalent_to_arangec              	   C   s   dD ]}dD ]}t dd||dd}t|tr8t|dks<t|dkrz|rPdd	gndd
g}t|d | t|d |d  q|dkr|st|d dg t|d d	 qt|d dgd |  t|d stqqd S )N)r   r:   rm   )FTr   r:   T)r8   Zretsteprm   rC   rD   g      ?)r   r   tupler?   rh   r   r   r	   )r   r4   ZeptrA   Z	y0_expectr   r   r   test_retstep  s    zTestLinspace.test_retstepc                 C   s<   t ddd}t ddd}t||d}t|t dddg d S )	Nr:   Or\   rm   rn   rD   g      ?r   )r   r   r   rs   r   r   r   test_object  s    zTestLinspace.test_objectc              	   C   s:   t dddtd}tddddddddgtd}t|| d S )	Nr5   rn   rl   r   r   r:   rm   r\   )r   r   r   r   )r   rA   tr   r   r   test_round_negative  s    z TestLinspace.test_round_negativeN)r(   r)   r*   rB   r   r   r_   r   rY   r   rd   rj   r   r   r   r   r   r   r   r   r   r   r      s   	
"r   N)Znumpyr   r   r   r   r   r   r   r	   r
   r   r   r   r   Znumpy.testingr   r   r   r   r   r   r   r-   r/   rk   r   r   r   r   r   <module>   s   <2 %