U
    #cq                     @   s\  d dl Z d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZ dZdZeege Zd ZdZd	d
 Zdd Zdd Zdd Zdd Zejjdd Zdd Zdd Zdd Z d;ddZ!dd  Z"ejjd!d" Z#ejjd#d$ Z$d%d& Z%d'd( Z&d)d* Z'd+d, Z(d<d-d.Z)d/d0 Z*d1d2 Z+d3d4 Z,d5d6 Z-d7d8 Z.G d9d: d:Z/dS )=    N)solve_diophantineinternal_overlap)_umath_tests)
as_strided)assert_assert_raisesassert_equalassert_array_equal   
   c              	   C   sl   | dkrt d gS g }dD ]L}dD ]B}t d | | | d  }|| | |  }|t||||  q"q|S )zGReturns slices of length nelems, from start onwards, in direction sign.r   r
      r
   )r   r   )sizeappendslice)nelemsresstepsignstartstop r   E/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_mem_overlap.py_indices_for_nelems   s    
r   c                  C   s,   g } dD ]}t |}| t|| q| S )z$Returns (src, dst) pairs of indices.)r   r
      )r   extend	itertoolsproduct)r   r   indr   r   r   _indices_for_axis%   s
    r    c                 C   s   t  }tj|| dS )zKReturns ((axis0_src, axis0_dst), (axis1_src, axis1_dst), ... ) index pairs.)repeat)r    r   r   )ndimsr   r   r   r   _indices0   s    r#   c                 C   sV   t t tt}| }||  ||< ||  ||< tt ||kd|| f  dS )z1Check assignment arr[dstidx] = arr[srcidx] works.zassigning arr[%s] = arr[%s]N)nparanger   shapereshapecopyr   all)srcidxdstidxZarrcpyr   r   r   _check_assignment7   s    
r-   c                  C   sD   t t} | D ]2}tdd |D }tdd |D }t|| qd S )Nc                 S   s   g | ]}|d  qS r   r   .0ar   r   r   
<listcomp>K   s     z0test_overlapping_assignments.<locals>.<listcomp>c                 S   s   g | ]}|d  qS r   r   r/   r   r   r   r2   L   s     )r#   r"   tupler-   )Zindsr   r*   r+   r   r   r   test_overlapping_assignmentsE   s
    r5   c                     s6  t jdt t jj} tdD ]}d}d}d|d  }t|||k r"djddt jdd   jddt jdd t|   t| d t	 fd	d
t|D }t	fdd
t|D }t| d t
dd
 t||D }tjd|d t jd|dkr||k rdt||}|d krt||dd}	t|	d k|||	f t	dd
 t||D }
d}|
D ]}|t|9 }qz|dk r.ttfdd
tj|
 D   |d7 }q<t||dd}	t|	d k	|||	f tt
dd
 t||D k ttdd
 t||D  |d7 }q<q"d S )N  r   r     r      dtype   c                 3   s(   | ] }t jd  d  tjdV  qdS )r   r9   Nintrandintr$   intpr0   j)A_maxrngr   r   	<genexpr>f   s   z(test_diophantine_fuzz.<locals>.<genexpr>c                 3   s(   | ] }t jd  d tjdV  qdS )r   r
   r9   Nr<   r@   )U_maxrC   r   r   rD   h   s   r
   c                 s   s   | ]\}}|| V  qd S Nr   r0   r1   ubr   r   r   rD   k   s     r   )Zsimplifyc                 s   s&   | ]\}}t d || d |V  qdS )r   r   NrangerG   r   r   r   rD   {   s     i c                 3   s   | ]}t | kV  qd S rF   )sum)r0   w)br   r   rD      s     c                 s   s   | ]\}}|| V  qd S rF   r   r0   r1   xr   r   r   rD      s     c                 s   s*   | ]"\}}d |  ko|kn  V  qdS r   Nr   )r0   rO   rH   r   r   r   rD      s     )r$   randomRandomStateiinfor?   maxrJ   minr>   r4   rK   zipr=   r   r   lenanyr   r   r)   )Zmax_intndimZfeasible_countZinfeasible_count	min_countAUZb_ubXZX_simplifiedrangesr   rr   )rB   rE   rM   rC   r   test_diophantine_fuzzQ   sJ    
"

"
 r`   c                  C   sr   t t jj} t t jj}|| krn|d |d d f}|d |d d f}d|d  d }tt|||d d S )Nr
   r   )r   r   )r$   rS   r?   rT   int64r   r   )Zmax_intpZ	max_int64r[   r\   rM   r   r   r   test_diophantine_overflow   s    rb   c                 C   s   t j| |td}tt | |t j| |td | d |d | d | }d}||krddd| jd d |jd d  f d	| j	f d
|j	f d| j
f d|j
f d| jf d|jf g }t|||d d S )NZmax_workr   r    z    z
    zbase_a - base_b = %rdatazshape_a = %rzshape_b = %rzstrides_a = %rzstrides_b = %rzsize_a = %rzsize_b = %rerr_msg)r$   may_share_memoryMAY_SHARE_EXACTr   MAY_SHARE_BOUNDSfillrX   join__array_interface__r&   stridesr   )r1   rM   gotexactrg   r   r   r   check_may_share_memory_exact   s(    


 






rq   c               
   C   s  t jddddgt jdt jddddgt jdd d d d d d dd d f g} g }| D ]<}tjtd td d dgfd	  D ]}|| }|| qzqV|D ]}tt |d d d
d d f |d d dd d f  tt j|d d d
d d f |d d dd d f d d t	|d d d
d d f |d d dd d f  t	|d d d d df |d d dd df  z&|
 }|jjr~W q|t j}W n tk
r   Y qY nX t	|
 dd |ddddd d d d df  t	|d d d d df |dddd t	|d d d d df |ddddd d dd df  t	|
 dd |ddddd d d d df  qt jdgt jd}t	|| t	||  d S )N            r9   .   r
   r      r   r   rc      r   r;   r8   )r$   zerosint8r   r   r   r   r   rh   rq   ZravelflagsZowndataviewint16
ValueErrorr'   r(   )Zxs0xsrO   ssxpr   r   r   test_may_share_memory_manual   sF    4$
48..

   
r   TFc                 #   sR  t jd|r|rt fdd fdd| | fV  tdddD ]D}| |d  | d |  fV  | d	|d f | d	d | f fV  qHt| j}d
|d
< t| | j|d}| |fV  ||fV  t| j}|d
 dkrd|d
< t| | j|d}| |fV  ||fV  t	fddt| j
D }t	 fddt| j|D }t | j
}| |rb|}	nt | j
}	|	 | | }
|r|
jd
krqt	fddt| j||
jD }t	fddt| j||
jD }n(|r|}nt	fddt| j
D }|s(t	 fddt| j|D }|
|}
| | |	}|
|fV  qd S )Nr6   c                    s`    j d| d tjd} j || d tjd} j ddtjddkrT|| }}|d9 }t|||S Nr   r   r9   r
   r   r>   r$   r?   r   nr   r   r   rC   r   r   random_slice   s    
z,iter_random_view_pairs.<locals>.random_slicec                    sn     d| d ||  }||d |  d }  dddkrb|d |d  }}|dk rZd }|d9 }t|||S )Nr   r   r
   r   )r>   r   )r   r   r   r   r   r   r   r   random_slice_fixed_size   s    z7iter_random_view_pairs.<locals>.random_slice_fixed_sizer   rx   r   .r   )r&   rn   c                 3   s:   | ]2} j d dtjdd kr. j ddtjdndV  qdS r      r9   r   r8   Nr>   r$   r?   r@   r   r   r   rD     s   z)iter_random_view_pairs.<locals>.<genexpr>c                 3   s   | ]\}} ||V  qd S rF   r   r0   psr   r   r   rD     s     c              	   3   sB   | ]:\}}}  d dd kr6  dtd|d|  ndV  qdS )r   r   r   r
   N)r>   rT   r0   r   r   par   r   r   rD   -  s   c                 3   s    | ]\}}} |||V  qd S rF   r   r   )r   r   r   rD   0  s   c                 3   s:   | ]2} j d dtjdd kr. j ddtjdndV  qdS r   r   r@   r   r   r   rD   5  s   c                 3   s   | ]\}} ||V  qd S rF   r   r   r   r   r   rD   :  s     )r$   rQ   rR   r~   rJ   listrn   r   r&   r4   rY   rV   r%   shuffler   	transpose)rO   
same_steps
equal_sizerA   rn   r   stepss1t1t2r1   Zsteps2s2rM   r   )r   r   rC   r   iter_random_view_pairs   sd    
&









r   c                 C   s   t jddddgt jd}d}d}t||}t|||k rt|\}}t ||}	t ||}
t j||| ||d}t j||td}||krt|| |
|	krt|
|	 |	r*|r|d7 }q*|d7 }q*d S )	N   "   G   a   r9   r   rc   r   )	r$   ry   r}   r   rU   nextrh   ri   r   )get_max_workr   rZ   rO   ZfeasibleZ
infeasibleZ	pair_iterr1   rM   Zbounds_overlapZmay_share_answerZeasy_answerZexact_answerr   r   r    check_may_share_memory_easy_fuzzB  s$    



r   c                   C   s   t dd ddd d S )Nc                 S   s   dS Nr   r   r1   rM   r   r   r   <lambda>g      z1test_may_share_memory_easy_fuzz.<locals>.<lambda>T  r   r   rZ   r   r   r   r   r   test_may_share_memory_easy_fuzzb  s    r   c                   C   s   t dd ddd d S )Nc                 S   s   t | j|jd S )Nr
   )rT   r   r   r   r   r   r   u  r   z3test_may_share_memory_harder_fuzz.<locals>.<lambda>Fr   r   r   r   r   r   r   !test_may_share_memory_harder_fuzzl  s    	r   c                  C   s   t jdddgt jd} tt | | d tt | |  d | d d d d dd d df }| d d d d dd d df }tt ||d tt j||d d	d tt jt j||d
d	 d S )Nrw   r   r;   r9   TFr
   r   rc   r   )r$   ry   rz   r   shares_memoryr(   r   ZTooHardError)rO   r1   rM   r   r   r   test_shares_memory_apiz  s    r   c                  C   s@   t dg} ttt j| | dd d ttt j| | dd d d S )Nr   r   d   rc   )r$   ry   r   OverflowErrorrh   r   )rO   r   r   r   "test_may_share_memory_bad_max_work  s    r   c                  C   s*   d
dd} | dddd | ddd	d d S )Nc                 S   s   t | |ddd}|d kr |d k	}|d k	rttdd t| |D tdd t| |D k ttdd t||D  ttdd t||D  |rt|d k	t| nt|d kt| d S )	Nr   r   )Zrequire_ub_nontrivialc                 s   s   | ]\}}|| V  qd S rF   r   rN   r   r   r   rD     s     zCtest_internal_overlap_diophantine.<locals>.check.<locals>.<genexpr>c                 s   s   | ]\}}|| d  V  qdS r
   Nr   )r0   r1   ur   r   r   rD     s     c                 s   s*   | ]"\}}d |  ko|kn  V  qdS rP   r   r0   rO   r   r   r   r   rD     s     c                 s   s   | ]\}}||d  kV  qdS r   r   r   r   r   r   rD     s     )r   r   rK   rV   r)   rX   repr)r[   r\   existsr]   r   r   r   check  s    4z0test_internal_overlap_diophantine.<locals>.check)r   r
   )rw   r;   T)r   )r;   r
   )   rw   F)Nr   )r   r   r   r   !test_internal_overlap_diophantine  s    
r   c                     s   t jddddgt jd} t jdfdd d	}d
}||k rtfddt| jD }t | j}	| t fddt
| j|D }| | |}tt|  |d7 }q8d S )Nr   r   r   r   r9   r6   c                    s`    j d| d tjd} j || d tjd} j ddtjddkrT|| }}|d9 }t|||S r   r   r   r   r   r   r     s    
z2test_internal_overlap_slices.<locals>.random_slicer     c                 3   s:   | ]2} j d dtjdd kr. j ddtjdndV  qdS r   r   r@   r   r   r   rD     s   z/test_internal_overlap_slices.<locals>.<genexpr>c                 3   s   | ]\}} ||V  qd S rF   r   r   r   r   r   rD     s     r   )r$   ry   r}   rQ   rR   r4   rJ   rY   r%   r   rV   r&   r   r   r   )rO   ZcasesrZ   r   r   r   r1   r   )r   rC   r   test_internal_overlap_slices  s    
r   c                 C   s   t | }t }tdd | jD }tj| D ]:}tdd t| j|D }||kr\d} qlq,|	| q,d}||krt
||t| j| jfd |d k	r||krt
|| |S )Nc                 s   s   | ]}t |V  qd S rF   rI   )r0   r   r   r   r   rD     s     z)check_internal_overlap.<locals>.<genexpr>c                 s   s   | ]\}}|| V  qd S rF   r   )r0   r   rL   r   r   r   rD     s     TFrf   )r   setr4   r&   r   r   rK   rV   rn   addr   r   )r1   Zmanual_expectedro   mr^   voffsetexpectedr   r   r   check_internal_overlap  s    
r   c                  C   s   t dt j} t| d t| g d t| ddd}t|d t| ddd}t|d t| ddd}t|d t| dd	d}t|d t| dd
d}t|d t| ddd}t|d t| ddd}t|d t| ddd}t|d d S )Nr   F)r   rw   )rw   rw   rn   r&   )r   rw   Tr.   r3   )r
   )r   i)W   ru   )r   ru   )r   ru   )r$   r%   astyperz   r   r'   r   )rO   r1   r   r   r   test_internal_overlap_manual  s&    







r   c            	         s   t dt j} d}d}d}t jd t|||k r jddt jd}t	 fddt
|D }t	 fd	dt
|D }t| ||d
}t|}|r|d7 }q*|d7 }q*d S )Nr   r   r   r6   rw   r9   c                 3   s    | ]} j d dtjdV  qdS )i  r9   Nr   r@   r   r   r   rD     s   z-test_internal_overlap_fuzz.<locals>.<genexpr>c                 3   s    | ]} j d dtjdV  qdS )r   r   r9   Nr   r@   r   r   r   rD     s   r   )r$   r%   r   rz   rQ   rR   rU   r>   r?   r4   rJ   r   r   )	rO   overlapZ
no_overlaprZ   rY   rn   r&   r1   resultr   r   r   test_internal_overlap_fuzz  s$    
r   c               	   C   s   G dd d} G dd d}| |f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  q$d S )	Nc                   @   s    e Zd Zdd Zedd ZdS )z(test_non_ndarray_inputs.<locals>.MyArrayc                 S   s
   || _ d S rF   re   selfre   r   r   r   __init__  s    z1test_non_ndarray_inputs.<locals>.MyArray.__init__c                 S   s   | j jS rF   )re   rm   r   r   r   r   rm   "  s    z<test_non_ndarray_inputs.<locals>.MyArray.__array_interface__N)__name__
__module____qualname__r   propertyrm   r   r   r   r   MyArray  s   r   c                   @   s   e Zd Zdd Zdd ZdS )z)test_non_ndarray_inputs.<locals>.MyArray2c                 S   s
   || _ d S rF   r   r   r   r   r   r   '  s    z2test_non_ndarray_inputs.<locals>.MyArray2.__init__c                 S   s   | j S rF   r   r   r   r   r   	__array__*  s    z3test_non_ndarray_inputs.<locals>.MyArray2.__array__N)r   r   r   r   r   r   r   r   r   MyArray2&  s   r   r   r
   r   r   )r$   r%   r   rh   r   )r   r   clsrO   r   r   r   test_non_ndarray_inputs  s    
(*(r   c                 C   s8   ddl m} t| j}d|d< dg|d< t||| S )z@Construct an array viewing the first byte of each element of `x`r   )
DummyArray|b1Ztypestr)rd   r   descr)numpy.lib.stride_tricksr   dictrm   r$   Zasarray)rO   r   Z	interfacer   r   r   view_element_first_byte7  s
    

r   c                 K   sj   ||d< t |}| |d< | }| |||d< | }||d< | || }||k rft|| dS )z}
    Check that operation(*args, out=out) produces results
    equivalent to out[...] = operation(*args, out=out.copy())
    out.N)r   r(   rX   r   )	operationargsr   kwargsZkwargs2Zout_origr   ro   r   r   r   assert_copy_equivalent@  s    r   c                   @   s   e Zd ZdZejdfddZejj	dd Z
ejj	dd Zd	d
 Zdd Zdd Zdd Zejj	dd Zdd Zdd Zdd Zejj	dd Zdd ZdS )	TestUFuncz1
    Test ufunc call memory overlap handling
    r   c                 C   s  ddddddg}t jd}tdd	D ]}|jd
d|d | d|}t|ddd}	||d d  }
d
}||
k r&t|	\}}| }| }|d krt	||g|d t 
||r|d7 }qltt|d gD ]0}||d< ||d< ||||\}}|dkrqtd g| }|d kr\|d kr@td
dgd
g|d   }ntd
|gd
g|d   }nb|d kr|j| d }|dkrt||d ||< n|||< n"|j| |ksttd
|||< |t| }|r|g }t 
||r|d7 }t	||g||d qqlq&d S )Nrx   rr      rs          r6   r   r;   r   i   )r   FTr   r   r
   r   .skipr   axis)r$   rQ   rR   rJ   r>   r   r   r   r(   r   r   r   chainr   r&   AssertionErrorr4   r'   )r   r   get_out_axis_sizer:   countshapesrC   rY   rO   itrZ   overlappingr1   rM   a_origb_origr   ZoutsizeZ	scalarizeslkZb_outr   r   r   check_unary_fuzzZ  sN    







zTestUFunc.check_unary_fuzzc                 C   s   |  tjd tj d S rF   )r   r$   invertr}   r   r   r   r   test_unary_ufunc_call_fuzz  s    z$TestUFunc.test_unary_ufunc_call_fuzzc                 C   s   | j tjd tjdd d S )Nr7   )r   )r   r$   negative
complex128r   r   r   r   "test_unary_ufunc_call_complex_fuzz  s    z,TestUFunc.test_unary_ufunc_call_complex_fuzzc                 C   s$   dd }| j tjj|tjdd d S )Nc                 S   s4   |d kr"| j dkr| jdfS dS n| j| dfS d S Nr   F)r   FrY   r   r&   r1   rM   r   r   r   r   r     s
    

zFTestUFunc.test_binary_ufunc_accumulate_fuzz.<locals>.get_out_axis_sizer7   r:   r   )r   r$   r   
accumulater}   r   r   r   r   r   !test_binary_ufunc_accumulate_fuzz  s
    	 z+TestUFunc.test_binary_ufunc_accumulate_fuzzc                 C   s$   dd }| j tjj|tjdd d S )Nc                 S   s   d |d kp| j dkfS r   )rY   r  r   r   r   r     s    zBTestUFunc.test_binary_ufunc_reduce_fuzz.<locals>.get_out_axis_sizer7   r  )r   r$   r   reducer}   r  r   r   r   test_binary_ufunc_reduce_fuzz  s
     z'TestUFunc.test_binary_ufunc_reduce_fuzzc                 C   s(   dd }dd }| j ||tjdd d S )Nc                 S   s4   |d kr"| j dkr| jdfS dS n| j| dfS d S r   r   r  r   r   r   r     s
    

zDTestUFunc.test_binary_ufunc_reduceat_fuzz.<locals>.get_out_axis_sizec                 S   s^   |d krt | }|t | }n| j| }| j| |j|  }td||}tjj| |||dS )Nr   r   )rW   r&   r$   r%   r   reduceat)r1   r   r   r   r   idxr   r   r   do_reduceat  s    
z>TestUFunc.test_binary_ufunc_reduceat_fuzz.<locals>.do_reduceatr7   r  )r   r$   r}   )r   r   r
  r   r   r   test_binary_ufunc_reduceat_fuzz  s    	
 z)TestUFunc.test_binary_ufunc_reduceat_fuzzc                 C   sd   dd }t jdt jd}|t j||d d d  | t jdt jd}|t j||d d d | d S )Nc                 S   s:   | j | | | d}| j |||d}t|| d S Nr   )r  r(   r	   )ufuncr1   r   r   c1c2r   r   r   r     s    z:TestUFunc.test_binary_ufunc_reduceat_manual.<locals>.check'  r9   r   )r$   r%   r}   r   r(   )r   r   r1   r   r   r   !test_binary_ufunc_reduceat_manual  s
    z+TestUFunc.test_binary_ufunc_reduceat_manualc              
   C   s  ddddddg}t j}tjd}tdd	D ]}|j|d |  }t|d
dd}d|d d  }d}||k r,t|\}	}
t	|	j
dd  dk sft	|
j
dd  dk sf|	j
d dk rqf|
j
d |
j
d kr|
ddd d f }
n|
dd d df }
|	j
d }||d  d }||
j
d kr6|dkr6|
dd |f }
nTtdtt|
j
d d }||d  d }|	dd |d d f }	|
dd |f }
t|	|
r|d7 }tjddd t||	g|
d W 5 Q R X qfq,d S )Nrx   rr   r   rs   r   r   r6   r
   r;   FTr   r7   r   r   r   .ignore)Zoverinvalidr   )r   Zeuclidean_pdistr$   rQ   rR   rJ   randr   r   rU   r&   rT   r=   sqrtr   errstater   )r   r   ZgufuncrC   rY   rO   r   rZ   r   r1   rM   r   r   r   r   r   test_unary_gufunc_fuzz  s6    :
z TestUFunc.test_unary_gufunc_fuzzc                 C   sr   ddd}t jdt jd}|t j|d d d | t jdt jd}t jdddt jd}|t j|||d	d
  d S )Nc                 S   s   |  }|d kr>| ||   |  }| || |  }n4| ||  |   |  }| ||| |  }t|| d S rF   )r(   atr	   )r  r1   r   rM   Za0r  r  r   r   r   r     s    
z-TestUFunc.test_ufunc_at_manual.<locals>.checkr  r9   r   r   r   r
      K   )N)r$   r%   r}   r   r   )r   r   r1   r   r   r   r   test_ufunc_at_manual  s    
zTestUFunc.test_ufunc_at_manualc                    s   fdd}t jt jt jt jt jt jt jt jg}dd |D }|D ]}t 	|t j
r^t j nt j d}d}t jd | t j|||  t j|d d d t j|| d |d d t jd d	| d	 t j||d	|  d	 t jd	| d d d
 t j|d	|  d |d d
 g}t||D ]\}}t jdd|d	  | |d}	|	| }
|	| }t jddd ||
| ||
d d | ||
dd  | ||
d d g | ||
dd  g | W 5 Q R X q qBd S )Nc           	         s   |   }|  }|  } | |d} | |d}t|| t|tj}|| d< ||d<  | |  |  d  }|| d< ||d<  | ||  d  }|| d< ||d<  | ||d  }t|| t|| d S )Nr   .r   where)r(   r	   r   r|   r$   bool_)	r1   rM   r   r   Zb0r  r  maskc3r  r   r   r   "  s$    

z3TestUFunc.test_unary_ufunc_1d_manual.<locals>.checkc                 S   s   g | ]}t |qS r   )r$   r:   )r0   rO   r   r   r   r2   @  s     z8TestUFunc.test_unary_ufunc_1d_manual.<locals>.<listcomp>r   r   r   r   r
   r  r9   r  )r)   )r$   rz   r}   int32ra   float32float64	complex64r   Z
issubdtypeintegerr   Z
reciprocal	index_expr   r   r%   r  r'   )r   r   Zdtypesr:   r   r   indicesxiyir   rO   yr   r"  r   test_unary_ufunc_1d_manual  s@      

z$TestUFunc.test_unary_ufunc_1d_manualc                    sT   t j  fdd}t dt j}|||| ||| | ||||  d S )Nc                    s2    | |  |  d} | ||d}t|| d S )Nr  r(   r	   )r1   r   r   r  r  r"  r   r   r   g  s    z4TestUFunc.test_unary_ufunc_where_same.<locals>.checkr   )r$   r   r%   r   r  r(   )r   r   rO   r   r"  r   test_unary_ufunc_where_samec  s    z%TestUFunc.test_unary_ufunc_where_samec                    s  t j  fdd}t jt jt jt jt jt jt jt j	fD ]}d}d}g }dD ]n}|
t jd || | t j||||  | t j|| d d |  t j|||  d |d |  g qLt|||D ]\}}}	t d| |}
|
| }|
| }|
|	 }	||||	 ||d d ||	 ||dd  ||	 ||d d g ||	 ||dd  g ||	 |||d d |	 |||dd  |	 |||d d g |	 |||dd  g |	 qq6d S )	Nc                    s2   |  } | ||d} | ||d}t|| d S r  r.  )r1   rM   cZc0r  r  r"  r   r   r   v  s    z4TestUFunc.test_binary_ufunc_1d_manual.<locals>.checkr   r   r   r   r;   r   )r$   r   rz   r}   r#  ra   r$  r%  r&  r   r   r(  r   r   r%   r   r'   )r   r   r:   r   r   r)  r   rO   r,  zr   r   r"  r   test_binary_ufunc_1d_manualr  s@       
 z%TestUFunc.test_binary_ufunc_1d_manualc                 C   s6   t jd}|dd}||j7 }t||j d d S )Nr6      r   )r$   rQ   rR   r  Tr	   )r   rC   rO   r   r   r   test_inplace_op_simple_manual  s    
z'TestUFunc.test_inplace_op_simple_manualN)r   r   r   __doc__r$   r}   r   pytestmarkslowr   r   r  r  r  r  r  r  r-  r/  r2  r5  r   r   r   r   r   U  s(   
?


+D
+r   )TF)N)0r   r7  Znumpyr$   Znumpy.core._multiarray_testsr   r   Z
numpy.corer   r   r   Znumpy.testingr   r   r   r	   r"   r   r4   r&   rj   ri   r   r    r#   r-   r5   r8  r9  r`   rb   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sL   
<3
X 
	

%	