
    fr                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmc mZ d dl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 m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d dl(m)Z) ej                  j                   jT                  jW                         D  cg c]  }  e,| ejZ                        r|  c} Z.e.D cg c]  }|j^                  dk(  s| c}Z0e0D cg c]  }d	|jb                  v s| c}Z2e.D cg c]  }|j^                  d
k(  s| c}Z3e3D cg c]  } e4|d      s|jj                  dk(  s|  c}Z6d Z7d Z8d Z9 G d d      Z: G d d      Z; G d d      Z< G d d      Z= G d d      Z> G d d      Z?d Z@d ZA G d d      ZB G d d       ZC G d! d"      ZD G d# d$      ZE G d% d&      ZF G d' d(      ZG G d) d*      ZH G d+ d,e:      ZI G d- d.      ZJ G d/ d0      ZK G d1 d2      ZL G d3 d4      ZM G d5 d6      ZN G d7 d8      ZOg d9g d:g d;g d<g d:g d:g d:g d:d=ZP G d> d?      ZQ G d@ dA      ZR G dB dCe:      ZS G dD dE      ZT G dF dG      ZU G dH dI      ZVdJ ZWdK ZX G dL dM      ZYdN ZZdO Z[dP Z\dQ Z]dR Z^ G dS dT      Z_ G dU dV      Z` G dW dXe:      Za G dY dZe:      Zb G d[ d\e:      Zc G d] d^e:      Zd G d_ d`      Ze G da db      Zf G dc dd      Zg G de df      Zh G dg dh      Zi G di dj      Zj G dk dl      Zk G dm dn      Zl G do dp      Zm G dq dr      Zn G ds dt      Zo G du dv      Zp G dw dx      Zq G dy dz      Zr G d{ d|      Zs G d} d~      Zt G d d      Zu G d d      Zv G d d      ZwdddexfdZyd Zzd Z{d Z|d Z}ej                  j                   ej                   ej                         ej                   ej                        k(  d      ej                  j                   e j                         j                  d      d      d               Zd Zd Zd Zd Zej                  j                   ej                   ej                         ej                   ej                        k(  d      ej                  j                   e j                         j                  d      d      d               Zd Zd Zd Zd Zd Zd Zd Zej                  j'                  dej(                  ej*                  g      d        Zej                  j'                  de6D cg c])  }|jb                  D ]  }|d   dk(  r|d    dvr||d    f + c}}      d        Zej                  j'                  de6D cg c]7  }|jb                  D ]&  }|d    |d   k(  r|d    |d   k(  r|d    dvr||d    f( 9 c}}      d        Zd Zej                  j'                  d ej4                  d
       ej6                  d dg       ej6                  d dgd
dgg      g      d        Zd Zd Zd Zej                  j'                  d ej4                  d      g dg      d        Zyc c} w c c}w c c}w c c}w c c}w c c}}w c c}}w )    N)Fractionreduce)
namedtuple)_umath_tests)assert_assert_equalassert_raisesassert_raises_regexassert_array_equalassert_almost_equalassert_array_almost_equalassert_array_max_ulpassert_allcloseassert_no_warningssuppress_warnings_gen_alignment_dataassert_array_almost_equal_nulpIS_WASMIS_MUSLIS_PYPY)_glibc_older_than   zf->f   
accumulatec              #     
K   d}t        j                  d||      }t        j                  d||      }| |d<   ||d<   d }|d   |d   |df d }|d   |d   |d	f ||d<   ||d<   d
D ]5  
| |
<   ||
<   
fd}|||d
 f ||
   |d
 df ||
<   ||
<   7 dD ]4  }|dd|   }|dd|   }	| |d<   ||	d<   d }||	|d| f ||d<   ||	d<   6 yw)a  
    Helper to create "interesting" operands to cover common code paths:
    * scalar inputs
    * only first "values" is an array (e.g. scalar division fast-paths)
    * Longer array (SIMD) placing the value of interest at different positions
    * Oddly strided arrays which may not be SIMD compatible

    It does not attempt to cover unaligned access or mixed dtypes.
    These are normally handled by the casting/buffering machinery.

    This is not a fixture (currently), since I believe a fixture normally
    only yields once?
    r   i'  )dtype
fill_valuer   c                     | S N ress    =/usr/lib/python3/dist-packages/numpy/core/tests/test_umath.py<lambda>z,interesting_binop_operands.<locals>.<lambda>@       C     scalarsc                     | S r    r!   r"   s    r$   r%   z,interesting_binop_operands.<locals>.<lambda>C   r&   r'   )r   .zscalar-arrays)
r   r   r            c                     |    S r    r!   )r#   poss    r$   r%   z,interesting_binop_operands.<locals>.<lambda>N   s    C r'   zoff-z-with-scalar)r-   q   N
   c                     | d   S )Nr4   r!   r"   s    r$   r%   z,interesting_binop_operands.<locals>.<lambda>[   s
    B r'   zstride-)npfull)val1val2r   r   arr1arr2	extractorstrideop1op2r2   s             @r$   interesting_binop_operandsr@   *   sc     J775*=D775*=DDGDGI
q'47Iy
00I
v,Vi
@@ DGDG1 	S	S	(	D)tC5\11DIyD\*BBBS	S		  
8V8n8V8nBB'	3	WVH#555BB
s   CC c                  z    t        j                         dk(  xs# t        j                         j                  d      S )z/ True if we are running on a Power PC platform.powerpcppc)platform	processormachine
startswithr!   r'   r$   
on_powerpcrH   b   s4    9, 0((/0r'   c                  .   t        j                         dk(  rd} nt               rd} nyt        j                  t        j
                  |             }t        j                  t        j                  |             j                  }t        ||z  dz
        dkD  S )zThe blocklisted trig functions are not accurate on aarch64/PPC for
    complex256. Rather than dig through the actual problem skip the
    test. This should be fixed when we can move past glibc2.17
    which is the version in manylinux2014
    aarch64g٣wv=gz	ӯ=F      ?gQ@-(;)	rD   rF   rH   r6   arcsinhfloat128
complex256realabs)xv1v2s      r$   bad_arcsinhrT   h   sr     Y&		BKKN	#B	BMM!$	%	*	*BR3%''r'   c                       e Zd Zd Zd Zy)_FilterInvalidsc                 :    t        j                  d      | _        y )Nignoreinvalidr6   seterrolderrselfs    r$   setup_methodz_FilterInvalids.setup_method{   s    ii1r'   c                 B    t        j                  di | j                   y Nr!   r[   r^   s    r$   teardown_methodz_FilterInvalids.teardown_method~   s    
		 DKK r'   N)__name__
__module____qualname__r`   rc   r!   r'   r$   rV   rV   z   s    2!r'   rV   c                       e Zd Zd Zd Zd Zy)TestConstantsc                 :    t        t        j                  dd       y )Ng-DT!	@V瞯<)r   ncupir^   s    r$   test_pizTestConstants.test_pi   s     159r'   c                 :    t        t        j                  dd       y )NgiW
@rj   )r   rk   er^   s    r$   test_ezTestConstants.test_e   s    0%8r'   c                 :    t        t        j                  dd       y )Ngox?rj   )r   rk   euler_gammar^   s    r$   test_euler_gammazTestConstants.test_euler_gamma   s    );UCr'   N)rd   re   rf   rm   rp   rs   r!   r'   r$   rh   rh      s    :9Dr'   rh   c                       e Zd Zd Zd Zy)TestOutc           
         dD ]  }t        j                  d      }t        j                  d      }t        j                  |d||      }t	        ||u        t        j                  |d||      }t	        ||u        t        j                  |d|f|      }t	        ||u        t        j                  d      }t        j                  d      }t        j                  dt         j
                        }t        j                  ||d |      \  }}	t	        ||u        t        j                  |d ||      \  }}	t	        |	|u        t        j                  ||||      \  }}	t	        ||u        t	        |	|u        t        j                  ||d f|      \  }}	t	        ||u        t        j                  |d |f|      \  }}	t	        |	|u        t        j                  |||f|      \  }}	t	        ||u        t	        |	|u        t        t              5  t        j                  |||      \  }}	d d d        t        t        t         j                  |d|||       t        t        t         j                  |d|||       t        t        t         j                  |dd ||       t        t        t         j                  |d||f|       t        t        t         j                  |dd|       t        t        t         j                  |dg |       t        t        t         j                  |dg |       t        t        t         j                  |dg f|       d	|j                  _        t        t        t         j                  |d||       t        t        t         j                  |d||       t        t        t         j                  |d|f|        y # 1 sw Y   xY w)
NTF      ?r!   r   subokoutrz   @r   F)r6   arrayemptyaddr   int32frexpr
   	TypeError
ValueErrorflags	writeable)
r_   rz   aordo1o2r1r2s
             r$   test_out_subokzTestOut.test_out_subok   s   " .	KEAAq!Qe,AAFOq!%0AAFOq!!U3AAFOA"B"BHH-BXXaT7FBB"HXXar7FBB"HXXaRu5FBB"HB"HXXab$Zu=FBB"HXXadBZu=FBB"HXXab"XU;FBB"HB"Hy) :!59B: )RVVQ1auE)RVVQ1!5I)RVVQ4QeL*bffaAeL*bffa%H)RVVQ2UC)RVVQrG)RVVQuEJ %AGG*bffaAUC*bffaG*bffaEJ].	K>: :s   OO 	c                     G d dt         j                        }dD ]  } |dg      }t        j                  |d|      }|rt        t	        ||             n%t        t        |      t         j                  k(         t        j                  |dd |      }|rt        t	        ||             n%t        t        |      t         j                  k(         t        j                  |dd |      }|rt        t	        ||             n%t        t        |      t         j                  k(         t        j                  |dd|      }|rt        t	        ||             n%t        t        |      t         j                  k(          |d	g      }t        j                  d
      }t        j                  d
t         j                        }t        j                  |||      \  }}	|rt        t	        |	|             n%t        t        |	      t         j                  k(         t        j                  ||d |      \  }}	|rt        t	        |	|             n%t        t        |	      t         j                  k(         t        j                  |d ||      \  }}	|rt        t	        ||             n%t        t        |      t         j                  k(         t        j                  ||d f|      \  }}	|rt        t	        |	|             n%t        t        |	      t         j                  k(         t        j                  |d |f|      \  }}	|rt        t	        ||             n%t        t        |      t         j                  k(         t        t              5  t        j                  |||      \  }}	d d d         y # 1 sw Y   xY w)Nc                       e Zd ZdZd Zd Zy).TestOut.test_out_wrap_subok.<locals>.ArrayWrapr4   c                 f    t        j                  |      j                  |       j                         S r    r6   asarrayviewcopy)clsarrs     r$   __new__z6TestOut.test_out_wrap_subok.<locals>.ArrayWrap.__new__   s$    zz#++C05577r'   c                 6    |j                  t        |             S r    r   typer_   r   contexts      r$   __array_wrap__z=TestOut.test_out_wrap_subok.<locals>.ArrayWrap.__array_wrap__       xxT
++r'   Nrd   re   rf   __array_priority__r   r   r!   r'   r$   	ArrayWrapr      s    !#8,r'   r   rw   rx   r   ry   r{   r    r}   r   r~   )r6   ndarrayr   r   
isinstancer   r   r   r   r
   r   )
r_   r   rz   r   r   r   r   r   r   r   s
             r$   test_out_wrap_subokzTestOut.test_out_wrap_subok   s   	,

 	, # ?	:E3% Aq!5)A
1i01Q2::-.q!T/A
1i01Q2::-.q!U3A
1i01Q2::-.q!6A
1i01Q2::-.3% A$B$bhh/BXXa51FB
2y12RBJJ./XXaT7FB
2y12RBJJ./XXar7FB
2y12RBJJ./XXab$Zu=FB
2y12RBJJ./XXadBZu=FB
2y12RBJJ./y) :!59B: :{?	:z: :s   N88O	N)rd   re   rf   r   r   r!   r'   r$   ru   ru      s    /KbI:r'   ru   c                      e Zd ZddlZej
                  j                  dej                  d   ej                  d   z   ej                  d   z   ej                  gz         ej
                  j                  dej                  ej                  fej                  ej                  fej                  ej                  fej                   ej"                  fej$                  ej&                  fej(                  ej*                  fg      d               Zd	 Zd
 Zd Zd Zd Zej
                  j                  dddg      ej
                  j                  dej                  ej                  fej                  ej                  fej                  ej                  fej                   ej"                  fej$                  ej&                  fej(                  ej*                  fg      ej
                  j                  dddg      d                      Zej
                  j                  dej:                  d         ej
                  j                  dej                  ej                  fej                  ej                  fej                  ej                  fej                   ej"                  fej$                  ej&                  fej(                  ej*                  fg      ej
                  j                  dddg      d                      Zy)TestComparisonsr   Nr   uintintfloatzpy_comp,np_compc           
         |t         j                  k(  rIt         j                  j                  ddgd      }t         j                  j                  ddgd      }d}ndt         j                  j	                  ddd      j                  |      }t         j                  j	                  ddd      j                  |      }d}t        j                  |      j                  |      }|j                         }|j                         }	 |||      j                  t         j                        }
t        ||	      D cg c]  \  }}t         |||             }}} |||      j                  t         j                        }|	D cg c]  }t         |||             }} |||      j                  t         j                        }|D cg c]  }t         |||             }}t        |
j                         |k(  d	|j                   d
       t        |j                         |k(  d	|j                   d
       t        |j                         |k(  d	|j                   d
       y c c}}w c c}w c c}w )NFT  )r   sizer   r4   lowhighr   r,   zFailed comparison ())r6   bool_randomchoicerandintastyper   r   tolistr   uint8zipr   r   rd   )r_   r   py_compnp_compr   bscalar	np_scalara_lstb_lstcomp_brQ   ycomp_b_listcomp_s1comp_s1_listcomp_s2comp_s2_lists                     r$   test_comparison_functionsz)TestComparisons.test_comparison_functions  s    BHH		  E4=t <A		  E4=t <AF		!!abt!<CCEJA		!!abt!<CCEJAFHHUO((0	

 A##BHH-69%6GHdas71a=)HH )Q',,RXX69>?AGFA./?? !Y',,RXX69>?AGAv./?? 	;.!'"2"2!315	7 L0!'"2"2!315	7 L0!'"2"2!315	7 I @ @s   :I%I+I0c                    t        j                  t        j                  g d      d gt              }t        t        t         j
                  ||        G d d      }t        j                   |       g      }t        t        t         j
                  ||       t        j                  t         j                  gt              }t        t        j
                  ||      dg       y )Nr   r   r*   r~   c                       e Zd Zd Zy)GTestComparisons.test_ignore_object_identity_in_equal.<locals>.FunkyTypec                     t        d      NzI won't comparer   r_   others     r$   __eq__zNTestComparisons.test_ignore_object_identity_in_equal.<locals>.FunkyType.__eq__B       122r'   N)rd   re   rf   r   r!   r'   r$   	FunkyTyper   A      3r'   r   F)	r6   r   objectr
   r   equalr   nanr	   r_   r   r   s      r$   $test_ignore_object_identity_in_equalz4TestComparisons.test_ignore_object_identity_in_equal:  s     HHbhhy)40?j"((Aq1	3 	3 HHik]#i1a0 HHbffXV,RXXa^eW-r'   c                    t        j                  t        j                  g d      d gt              }t        t        t         j
                  ||        G d d      }t        j                   |       g      }t        t        t         j
                  ||       t        j                  t         j                  gt              }t        t        j
                  ||      dg       y )Nr   r~   c                       e Zd Zd Zy)KTestComparisons.test_ignore_object_identity_in_not_equal.<locals>.FunkyTypec                     t        d      r   r   r   s     r$   __ne__zRTestComparisons.test_ignore_object_identity_in_not_equal.<locals>.FunkyType.__ne__T  r   r'   N)rd   re   rf   r   r!   r'   r$   r   r   S  r   r'   r   T)	r6   r   r   r
   r   	not_equalr   r   r	   r   s      r$   (test_ignore_object_identity_in_not_equalz8TestComparisons.test_ignore_object_identity_in_not_equalL  s     HHbhhy)40?j",,15	3 	3 HHik]#iq!4 HHbffXV,R\\!Q'$0r'   c                     t        j                  ddg      }t        t         j                  j	                  |t
              d       t        t        t         j                  j                  |       y )Nr   r~   T)r6   r   r	   r   r   boolr
   r   r_   r   s     r$   test_error_in_equal_reducez*TestComparisons.test_error_in_equal_reduce^  sE     HHaVRXX__Qd_3T:i!4r'   c                     t        j                  ddgt              j                  t        k(  sJ t        j                  ddgd      j                  t        k(  sJ y )Nr   r~   )NNO)	signature)r6   r   r   r   r^   s    r$   test_object_dtypez!TestComparisons.test_object_dtypef  sI    xxA3f-33v===xxA3*;<BBfLLLr'   c                    t        j                  ddgt              j                  t        k(  sJ t	        j
                  t        d      5  t        j                  ddt         j                         d d d        t	        j
                  t        d      5  t        j                  ddd       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)Nr   r~   zNo loop matchingmatch)NNl)sig)r6   r   r   r   pytestraisesr   int64r^   s    r$   test_object_nonbool_dtype_errorz/TestComparisons.test_object_nonbool_dtype_errorj  s    xxA3d+11T999 ]]9,>? 	+HHQ*	+ ]]9,>? 	2HHQ01	2 	2	+ 	+	2 	2s   'B8C8CCdtypesqQQqzpy_comp, np_compvals)                       )r   r   c                 v   t        j                  dg|d         }t        j                  dg|d         } |dd      } |||      |k(  sJ  |||      |k(  sJ |d   }|d   }	t        |t         j                        sJ t        |	t         j                        sJ  |||	      |k(  sJ  |||	      |k(  sJ y )Nr   r   r~   r   r   )r6   r   r   integer)
r_   r   r   r   r   a1a2expecteds1s2s
             r$   $test_large_integer_direct_comparisonz4TestComparisons.test_large_integer_direct_comparisonu  s     XXugVAY/XXyk35'*r2(***r2(***UU"bjj)))"bjj)))r2(***r2(***r'   UnsignedIntegerzpy_comp_func, np_comp_funcflipTFc                 p   |rfd}fd}n}}t        j                  t        j                  |      j                  g|      } |t	        |d         d      } ||d      |k(  sJ  ||d      |k(  sJ |d   }	t        |	t         j                        sJ  ||	d      |k(  sJ  ||	d      |k(  sJ y )Nc                      ||       S r    r!   )rQ   r   py_comp_funcs     r$   r%   zHTestComparisons.test_unsigned_signed_direct_comparison.<locals>.<lambda>      <1#5 r'   c                      ||       S r    r!   )rQ   r   np_comp_funcs     r$   r%   zHTestComparisons.test_unsigned_signed_direct_comparison.<locals>.<lambda>  r
  r'   r~   r   r-   )r6   r   iinfomaxr   r   r   )
r_   r   r	  r  r  r   r   r   r  r   s
     ``      r$   &test_unsigned_signed_direct_comparisonz6TestComparisons.test_unsigned_signed_direct_comparison  s     5G5G"G"Ghh++,E:3s1v;+sB8+++sB8+++Q&"**---vr"h...vr"h...r'   )rd   re   rf   operatorr   markparametrizer6   sctypesr   ltlessle
less_equalgtgreatergegreater_equaleqr   ner   r   r   r   r   r   r   r  	typecodesr  r!   r'   r$   r   r     s   [[Wbjj&82::e;L&LZZ0'146HH:'> ?[[.	bgg	bmm$	bjj!	b&&'	bhh	bll#1  7? 7D.$1$5M	2 [[Xd|4[[/	bgg	bmm$	bjj!	b&&'	bhh	bll#2  [[V&68H%IJ+ K 5+$ [[Wbll3D&EF[[9	bgg	bmm$	bjj!	b&&'	bhh	bll#<  [[VdE]3/ 4 G/r'   r   c                       e Zd Zd Zy)TestAddc                     t        j                  ddt         j                  fdt         j                  fg      }d|d<   t	        |d   j                         d       y )Nr   r   r   r~   r-   r   )r6   zerosr   float64r	   sumr   s     r$   test_reduce_alignmentzTestAdd.test_reduce_alignment  sG    
 HHQRXXbjj0ABC#QsVZZ\1%r'   N)rd   re   rf   r%  r!   r'   r$   r   r     s    &r'   r   c                   h   e Zd Zd Zej
                  j                  ed      ej
                  j                  d e	j                  ej                  d   ej                  d   z   d            d               Zej
                  j                  ed      ej
                  j                  d e	j                  ej                  d   ej                  d   z   d	            d
               Zej
                  j                  d ej                  dd       ej                  dd      df ej                  dd       ej                  dd      df ej                  dd       ej                  dd      df ej                  dd       ej                  dd      df ej                  dd       ej                  dd      df ej                  dd       ej                  dd      df ej                  dd      d ej                  dd      f ej                  dd      d ej                  dd      f ej                  dd      d ej                  dd      f ej                  dd      d ej                  dd      f ej                  dd      d ej                  dd      f ej                  dd      d ej                  dd      f ej                  dd      d ej                  dd      fg      d        Zd Zd Zd Zd Zej
                  j                   eej,                  d      d      ej
                  j                  ed      ej
                  j                  dej.                  d         d                       Zej
                  j                  dej.                  d         d!        Zy")#TestDivisionc                     t        j                  g d      }ddk(  rt        |dz  g d       nt        |dz  g d       t        |dz  g d       t        |dz  g d       y )N)	r,   r4   Z   d   iirx   r*  )	g?皙?g?r   g皙gr-   g333333)	r   r   r   r   r-   r-   r-   r-   r.   )	r,   r4   r)  r   _   r)  r4   r   P   )r6   r   r	   r_   rQ   s     r$   test_division_intzTestDivision.test_division_int  s\    HH?@S=S #@ A S"BCQ#X?@QW?@r'   fp errors don't work in wasmreasonzdtype,ex_valr   r   )z\np.array(range(fo.max-lsize, fo.max)).astype(dtype),np.arange(lsize).astype(dtype),range(15)zunp.arange(fo.min, fo.min+lsize).astype(dtype),np.arange(lsize//-2, lsize//2).astype(dtype),range(fo.min, fo.min + 15)znp.array(range(fo.max-lsize, fo.max)).astype(dtype),np.arange(lsize).astype(dtype),[1,3,9,13,neg, fo.min+1, fo.min//2, fo.max//3, fo.max//4]c                    t        j                  |      j                  dk  rdnd}d}t        |      \  }}}|j	                         |j	                         }	}fd}
t        j
                  d      5  |j                         }||z  }||z  }d d d        t        ||	      D cg c]  \  }} |
||       }}}d}t        |k(        sJ |       d	}t        |k(        sJ |       |D ]|  }|j                         }t        j
                  dd
      5  ||z  }||z  }d d d        |D cg c]  } |
||       }}t        |k(        sJ |       t        ||k(        rwJ |        t        j
                  dd
      5  d|v r*t        j                  t        d      5  ||z   d d d        n||z   j                  r8j                  |v r*t        j                  t        d      5  |dz   d d d        nj                  r|dz   t        j                  t        d      5  |dz   d d d        t        j                  t        d      5  |j                         }|dz  }d d d        t        j                  g |      dz   d d d        y # 1 sw Y   xY wc c}}w # 1 sw Y   xY wc c}w # 1 sw Y   	xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   y xY w)Nr   r-   r   i  c                 `    |dk(  rdS | r | j                   k(  r|dk(  rj                   S | |z  S Nr   r-   minnr   fos     r$   r%   z9TestDivision.test_division_int_boundary.<locals>.<lambda>  s;    aA bffb ?@!t r'   rX   dividez(Integer arrays floor division check (//)z)Integer arrays floor division check (//=)r@  overraisez*divide by zero encountered in floor_divider   z$overflow encountered in floor_divider~   )r6   r  r;  evalr   errstater   r   allr   r   FloatingPointErrorr   )r_   r   ex_valneglsizer   r   divisorsr   r   c_divacdiv_abrQ   r   div_lstmsgmsg_eqdivisordiv_air>  s                        @r$   test_division_int_boundaryz'TestDivision.test_division_int_boundary  s   : XXe_FFQJbAf1hxxz188:u

 [[) 	B1HB!VF	 ,/ue+<=41a5A;==86W$%*s*%<2=!)6)! 	.GBH8< Ww 388QuQ(8G8u'(-#-(rW}%-v-%	. [[g6 	+Av]]#5JL F  Qvv"&&A+]]#5DF G  R1FH Q 1FH VVXq
 HHRu%*-	+ 	++	 	 >  9  
  #	+ 	+s   6J(JJ%/J2 K($J7*AK(-K35K((K.#K(K'"K(J%J/	7K	<K(K		K(K	K(K%	!K((K1)z1np.array([fo.max, 1, 2, 1, 1, 2, 3], dtype=dtype)z4np.array([fo.min, 1, -2, 1, 1, 2, -3]).astype(dtype)z3np.arange(fo.min, fo.min+(100*10), 10, dtype=dtype)z8np.array(range(fo.max-(100*7), fo.max, 7)).astype(dtype)c           	      p  	 t        j                  |      	t        |      }|j                         }	fd}t        j                  d      5  t         j
                  j                  |      }d d d        t        ||      }d}|k(  sJ |       t        j                  dd      5  t        j                  t        d      5  t         j
                  j                  t        j                  d	d
      j                  |             d d d        	j                  ret        j                  t        d      5  t         j
                  j                  t        j                  	j                  ddg|             d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   +xY w# 1 sw Y   y xY w)Nc                 H    |dk(  s| r| j                   k(  r|dk(  rdS | |z  S r9  r:  r<  s     r$   r%   z7TestDivision.test_division_int_reduce.<locals>.<lambda>*  s/    aA!rvv+!r'A @A1 r'   rX   r?  z#Reduce floor integer division checkrC  rA  z$divide by zero encountered in reducer   r-  r*  zoverflow encountered in reducer   r-   r~   )r6   r  rD  r   rE  floor_divider   r   r   rG  aranger   r;  r   )
r_   r   rH  r   lstrL  rS  rO  rP  r>  s
            @r$   test_division_int_reducez%TestDivision.test_division_int_reduce  s_    XXe_Lhhj
 [[) 	.OO**1-E	.$3$$[[g6 		1@B K&&ryys';'B'B5'IJK vv]]#5>@ OO**"&&!R>		 			. 	.K K 		 		sJ    F&F,AF/F,4AF 6F,FF	F, F)	%F,,F5zdividend,divisor,quotientr   YM   r.   r-   r   r   r/   Natc                    |rt        |t              st        j                  |      s^d}||z  |k(  sJ |       d}t        j                  |gdz        }t        j                  |gdz        }t        ||z  |k(        sJ |       y t        rt        j                  d       t        j                  dd      5  t        j                  t              5  ||z   d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzTimedelta floor division checkz%Timedelta arrays floor division checkr,   r4  rC  r@  rZ   )r   r   r6   isnatr   rF  r   r   skiprE  r   rG  )r_   dividendrR  quotientrP  dividend_arrayquotient_arrays          r$   test_division_int_timedeltaz(TestDivision.test_division_int_timedelta?  s    $ 
8S1(9K2Cw&(27C72 :CXXxjl3NXXxjl3N~0NBCHSHC:;GW= (]]#56 ('(( (( (( (s$   8C5C)C5)C2	.C55C>c                    d}t        j                  g dt         j                        }t        |dz  |z  ||       d}t        j                  ddgt         j                        }|dz  |z  }t        ||z  d	d	g|       y )
Nz%Complex division implementation check)      ?      ?y      ?      ?      ?       @r~   r   err_msgz)Complex division overflow/underflow checkgG0JVgys?)r   )r6   r   
complex128r   )r_   rP  rQ   r   s       r$   test_division_complexz"TestDivision.test_division_complexa  so    5HH9OAqDFAs39HHgw'r}}=qDFAaC!Q5r'   c                    t        j                  dd      5  t        j                  dgt         j                        }d|z  }t	        t        j
                  |      d          t        t         j                  t         j                        |z  }t	        t        j
                  |      d          t        t         j                  t         j                        |z  }t	        t        j
                  |      d          t        t         j                  t         j                        |z  }t	        t        j
                  |      d          d|z  }t	        t        j                  |      d          d d d        y # 1 sw Y   y xY w)NrX   rZ   r@          r~   rK   r   )
r6   rE  r   ro  r   isinfcomplexinfr   isnan)r_   rQ   r   s      r$   test_zero_division_complexz'TestDivision.test_zero_division_complexl  s    [[(; 	$#bmm4AAABHHQKN#')ABHHQKN#')ABHHQKN#')ABHHQKN#AABHHQKN#	$ 	$ 	$s   EE88Fc                    t        j                  g dt         j                        }t        j                  t
              5  |dz   d d d        t        j                  t
              5  t        j                  |d       d d d        t        j                  t
              5  t        j                  |d       d d d        y # 1 sw Y   zxY w# 1 sw Y   NxY w# 1 sw Y   y xY w)N)y?      ?y      ?y?      ?y?       @r~      )r6   r   ro  r   r   r   divmod	remainderr2  s     r$   test_floor_division_complexz(TestDivision.test_floor_division_complexz  s    HH@V]]9% 	F	]]9% 	IIaO	]]9% 	LLA	 			 		 		 	s$   C (C C C	CC!c                     t        j                  d      }t        t        j                  |dz        d       t        t        j                  | dz        d       y )Nr4   r   r   )r6   r"  r	   signbitr2  s     r$   test_floor_division_signed_zeroz,TestDivision.test_floor_division_signed_zero  sA     HHRLRZZ1%q)RZZ!a(!,r'   blas_ssl2_infogh-22982r   Floatc                    t        j                  t         j                  |      }t        j                  d|      }t        j                  d|      }t        j                  t         j                  |      }t        j                  dd      5  t        t        t         j                  ||       d d d        t        j                  dd      5  t        j                  ||       d d d        t        j                  d      5  t        j                  ||       t        j                  ||       t        j                  ||       t        j                  ||       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr~   rK   rs  rC  rX   rb  rF  )r6   r   r   rv  rE  r
   rG  rX  )r_   r   fnanfonefzerfinfs         r$   test_floor_division_errorsz'TestDivision.test_floor_division_errors  s   
 xxe,xx5)xx5)xxe,[[: 	K,bootTJ	K[[': 	(OOD$'	( [[W% 	(OOD$'OOD$'OOD$'OOD$'		( 	(	K 	K	( 	(	( 	(s%   !E'E3AE?'E03E<?Fc                    t        j                  d|      }t        j                  d|      }t        j                  t         j                  |      }t        j                  d|      }t        j                  d|      }t        j                  t         j
                  |      }t               5 }|j                  t        d       t        j                  ||      }	t        j                  |	      sJ dt        d|	       t        j                  ||      }	t        j                  |	      sJ dt        d|	       t        j                  ||      }	t        j                  |	      sJ dt        d|	       	 d d d        t        j                  d	      5  t        j                  ||      }
t        t        j                  |
      j                                d d d        y # 1 sw Y   kxY w# 1 sw Y   y xY w)
Nr4   r~   rK   rs  z)invalid value encountered in floor_dividedt: , div: rX   r?  )r6   r"  onesr   r   rv  r   filterRuntimeWarningrX  rw  dtrE  r   rt  rF  )r_   r   rQ   r   r  r  r  r  supdivzs              r$    test_floor_division_corner_casesz-TestDivision.test_floor_division_corner_cases  si    HHRu%GGBe$xxe,xx5)xx5)xxe,  	ACJJ~'RS//$-C88C=@C#@@=//$-C88C=@C#@@=//$-C88C=@C#@@=	A [[) 	'1%ABHHQKOO%&	' 	'	A 	A	' 	's   1CG'AG3'G03G<N)rd   re   rf   r3  r   r  skipifr   r  	itertoolsproductr6   r  rU  r[  timedelta64ri  rp  rx  r}  r  hasattr
__config__r  r  r  r!   r'   r$   r'  r'    s   	A [[(FG[[^->Y->->


5BJJv.. 1
. 68+7 H88+t [[(FG[[^->Y->->


5BJJv.. 1
.  H2 [['bnnQs#^R^^Ac%:B?bnnQs#^R^^Bs%;SAbnnR$nbnnQs&;SAbnnR$nbnnR&<bAbnnQs#^R^^Bs%;R@bnnQs#^R^^Ac%:A>bnnQs#Qq(=>bnnQs#R3)?@bnnR$a3)?@bnnR$b."..3*?@bnnR$b."..3*?@bnnR$b."..3*?@bnnR$ac)BC (! ($	6$- [[/?@  [[(FG[[Wbll7&;<( = H($ [[Wbll7&;<' ='r'   r'  c                 Z    t        j                  | |      t        j                  | |      fS r    )r6   rX  r|  rQ   r   s     r$   floor_divide_and_remainderr    s#    OOAq!2<<1#566r'   c                 0    | t         j                  d   v ryy)Nr  r   r   r-   )r6   r  )r  s    r$   _signsr    s    	R\\+,,r'   c            	       \   e Zd Zd Zd Zd Zej                  j                  e	d      ej                  j                  ej                  j                  d      d      ej                  j                  dej                   d	         d
                      Zej                  j                   eej&                  d      d      ej                  j                  e	d      ej                  j                  ej                  j                  d      d      ej                  j                  dej                   d	         ej                  j                  dej(                  ej*                  g      d                                    Zej                  j                  e	d      d        Zd Zd Zy)TestRemainderc           	      l   t         j                  d   t         j                  d   z   }t        t         j                  fD ]  }t	        j
                  ||      D ]  \  }}t	        j
                  t        |      t        |            D ]  \  }}d}||j                  ||||fz  }t        j                  |dz  |      }	t        j                  |dz  |      }
 ||	|
      \  }}t        ||
z  |z   |	|       |dk(  rt        |
|cxk  xr d	k  nc |       t        |
|cxkD  xr d	k\  nc |          y )
N
AllIntegerr  *op: %s, dt1: %s, dt2: %s, sg1: %s, sg2: %sG   r~      rm  r-   r   )r6   r  r  r{  r  r  r  rd   r   r	   r   r_   r  opdt1dt2sg1sg2fmtrP  r   r   r  rems                r$   test_remainder_basicz"TestRemainder.test_remainder_basic  s   \\,'",,w*??-ryy9 	3B%--b"5 3S ) 1 1&+vc{ K 
3HCFCc3S AACRs3ARs3A!!QxHC Qa=byC1c2C1c2
33	3r'   c                     t        t        dd            }t        t        dd            }|dgz   |z   }||z   }t        t        j                  ||            }t        d |D              }t	        j
                  |t              j                  \  }}t	        j
                  |t              j                  \  }	}
t	        j                  |	dk(  |dk  |dk  z  z  d|	      }	t	        j                  |
dk(  |dk  z  d|
      }
t        t        j                  fD ]v  }t        j                  d	   D ]^  }d
|j                  d|}|j                  |      }|j                  |      } |||      \  }}t        ||	|       t        ||
|       ` x y )Nir   r      c              3   ,   K   | ]  }t        |   y wr    )r{  ).0ts     r$   	<genexpr>z;TestRemainder.test_float_remainder_exact.<locals>.<genexpr>  s     +!61:+s   r~   rs         r  zop: z	, dtype: rm  )listranger  r  r6   r   r   Tr   wherer  r{  r  rd   r   r	   )r_   nlstplstre  rR  argtgtr   r   tgtdivtgtremr  r  rP  fafbr  r  s                     r$   test_float_remainder_exactz(TestRemainder.test_float_remainder_exact  s`    E$N#E!SM"1#:$+9$$Xw78+s++xx3'))1 #U3556S=a!eA->?vN6S=QU3T6B-ryy9 	7Bll7+ 7-/[["=XXb\XXb\b":SS&#6S&#67	7r'   c           	      &   t         j                  d   }t        t         j                  fD ]  }t	        j
                  ||      D ]  \  }}t	        j
                  dd      D ]  \  }}d}||j                  ||||fz  }t        j                  |dz  dz  |      }	t        j                  |dz  |      }
 ||	|
      \  }}t        ||
z  |z   |	|       |dk(  rt        |
|cxk  xr d	k  nc |       t        |
|cxkD  xr d	k\  nc |          y )
Nr  r  r  N   g+i)+p>r~   rm  r-   r   )
r6   r  r  r{  r  r  rd   r   r	   r   r  s                r$   test_float_remainder_roundoffz+TestRemainder.test_float_remainder_roundoff  s    \\'"-ryy9 	3B%--b"5 3S ) 1 1(H E 3HCFCc3S AACRC8AT5A!!QxHC Qa=byC1c2C1c233	3r'   r4  r5  darwinz_MacOS seems to not give the correct 'invalid' warning for `fmod`.  Hopefully, others always do.r   r  c                 p   t        j                  d|      }t        j                  d|      }t        j                  t         j                  |      }t        j                  t         j                  |      }t        j                  dd      5  t        t        t         j                  ||       d d d        t        j                  dd      5  t        t        t         j                  ||       d d d        t        j                  d      5  t        t        t         j                  ||       d d d        t        j                  d      5  t        t        t         j                  ||       d d d        t        j                  dd      5  t        t        t         j                  ||       d d d        t        j                  dd      5  t        j                  ||       d d d        y # 1 sw Y   ?xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   y xY w)Nrs  r~   rK   rC  rX   rb  rY   )r6   r   rv  r   rE  r
   rG  r{  )r_   r   fzeror  r  r  s         r$   test_float_divmod_errorsz&TestRemainder.test_float_divmod_errors   s    E*xx5)xxe,xxe, [[: 	F,biiuE	F[[': 	F,biiuE	F[[) 	G,biiF	G[[) 	E,biitD	E[[': 	F,biiuE	F[[: 	#IIdE"	# 	#	F 	F	F 	F	G 	G	E 	E	F 	F	# 	#sH   !G.!G;!H!H!H H,.G8;HHH H),H5r  r  fnc                    t        j                  d|      }t        j                  d|      }t        j                  t         j                  |      }t        j                  t         j                  |      }t        j                  d      5  t        j                  t        d      5   |||       d d d         |||        |||        |||        |||       d d d        y # 1 sw Y   6xY w# 1 sw Y   y xY w)Nrs  r~   rK   rC  r  zinvalid valuer   )r6   r   rv  r   rE  r   r   rG  )r_   r   r  r  r  r  r  s          r$   test_float_remainder_errorsz)TestRemainder.test_float_remainder_errors  s     E*xx5)xxe,xxe, [[W% 	1)+  4  tUOudOtTNtTN	 	   	 	s$   C6+
C*5,C6*C3	/C66C?c                 ^   t        j                  t         j                        j                  }t        j                  dd      5  t        j
                  d|      \  }}t        j                  |       t        |dk(         d d d        t        j                  dd      5  t        t        t         j
                  d|       d d d        t        j                  dd      5  t        t        t         j
                  d|       d d d        y # 1 sw Y   xY w# 1 sw Y   VxY w# 1 sw Y   y xY w)NrX   )rB  rZ   r+   r   rC  )rZ   rB  )
r6   finfor#  tinyrE  r{  rt  r   r
   rG  )r_   r   r  mods       r$   test_float_remainder_overflowz+TestRemainder.test_float_remainder_overflow3  s    HHRZZ %%[[h9 	yyAHCHHSMC1H	 [[gx8 	?,biiA>	?[[x8 	?,biiA>	? 	?	 		? 	?	? 	?s$   =D!!D!!D#DD #D,c                    t         j                  d   D ]J  }t        j                  t         j                  |      }t        j                  d|      }t        j                  d|      }t        j                  t         j                  |      }t               5 }|j                  t        d       |j                  t        d       t        j                  ||      \  }}t        j                  |      sJ d|d|       t        j                  |      sJ d|d	|       t        j                  ||      \  }}t        j                  |      sJ d|d	|       t        t        j                  |            d|d	|f t        j                  ||      \  }}t        j                  |      sJ d|d	|       t        j                  |      sJ d|d	|       t        j                  ||      \  }}t        j                  |      sJ d|d	|       t        j                  |      sJ d|d	|       t        j                  ||      \  }}t        j                  |      sJ d|d	|       t        j                  |      sJ d|d	|       t        j                  ||      \  }}t        j                  |      sJ d|d	|       t        j                  |      sJ d|d	|       t        j                  ||      \  }}t        j                  |      sJ d|d	|       t        j                  |      sJ d|d	|       	 d d d        M y # 1 sw Y   YxY w)
Nr  r~   rK   rs  z#invalid value encountered in divmodz$divide by zero encountered in divmodr  r  , rem: )r6   r  r   r   rv  r   r  r  r{  rt  rw  r   )	r_   r  r  r  r  r  r  r  r  s	            r$   test_float_divmod_corner_casesz,TestRemainder.test_float_divmod_corner_cases?  s   ,,w' 	EB88BFF"-D88Cr*D88Cr*D88BFF"-D"$ E

>+PQ

>+QR99T40Sxx}DB'DD}xx}DB'DD}99T40Sxx}DB'DD}&R(EE99T40Sxx}DB'DD}xx}DB'DD}99T40Sxx}DB'DD}xx}DB'DD}99T40Sxx}DB'DD}xx}DB'DD}99T40Sxx}DB'DD}xx}DB'DD}99T40Sxx}DB'DD}xx}DB'DD}/E E	E
E Es   J<M##M-	c           	      	   t         j                  d   D ]  }t        j                  d|      }t        j                  d|      }t        j                  t         j                  |      }t        j                  d|      }t        j                  t        j                  d|      |       }t        j
                  ||      }t        ||k  d|z         t        j
                  | |       }t        || k\  d|z          t               5 }|j                  t        d       |j                  t        d       t         j                  d   D ]z  }t        j                  d|      }t        j                  d|      }t        j                  t         j                  |      }	t        j                  t         j                  |      }t        j
                  ||      }t        t        j                  |      d|d	|       t        j
                  |	|      }t        j                  |	|      }
t        t        j                  |
      d|d
|
       t        t        j                  |      d|d	|       t        j
                  |	|	      }t        j                  |	|      }
t        t        j                  |      d|d	|       t        t        j                  |
      d|d
|
       t        j
                  |	|      }t        j                  |	|      }
t        t        j                  |      d|d	|       t        t        j                  |
      d|d
|
       t        j
                  ||      }t        j                  ||      }
t        t        j                  |      d|d	|       t        t        j                  |
      d|d
|
       t        j
                  ||      }t        j                  ||      }
t        t        j                  |      d|d	|       t        t        j                  |
      d|d
|       t        j
                  ||      }t        j                  ||      }
t        t        j                  |      d|d	|       t        t        j                  |
      d|d
|       } 	 d d d        y # 1 sw Y   y xY w)Nr  rK   r~   rs  zdt: %sz&invalid value encountered in remainderz!invalid value encountered in fmodr  r  z, fmod: )r6   r  r   r   	nextafterr|  r   r   r  r  rv  rw  fmod)r_   r  r  r  r  r   r   r  r  r  r  s              r$   !test_float_remainder_corner_casesz/TestRemainder.test_float_remainder_corner_cases_  sf   ,,w' 		.B88Cr*D88Cr*D88BFF"-DB'ARXXc4qb9A,,q!$CC1Hhm,,,rA2&CCA2Ix"}-		.   $	HCJJ~'OPJJ~'JKll7+ !Hxx2.xx2.xxb1xxb1ll4.B'DE ll4.wwtT*b$(GHB'DEll4.wwtT*B'DEb$(GHll4.wwtT*B'DEb$(GHll4.wwtT*B'DEb$(GHll4.wwtT*B'DEb#(FGll4.wwtT*B'DEb#(FGC!H$	H $	H $	Hs   N>SSN)rd   re   rf   r  r  r  r   r  r  r   xfailsysrD   rG   r  r6   r  r  r  r  r  r|  r  r  r  r  r!   r'   r$   r  r    s   3 743$ [[(FG[[s||..x8;  < [[Wbll7&;<# =< H
#, [[/?@  [[(FG[[s||..x8:  ; [[Wbll7&;<[[TBGGR\\#:; < =; H  [[(FG	? H	?E@2Hr'   r  c                      e Zd Z edddg      Zd d d d d d	Zej                   eed
   ed
         ej                   eed
   ed
         e	j                   eed
   ed
         e	j                   eed   ed         ej                   eed   ed         ej                   eed   ed         iZej                   j#                  ed      ej                   j'                  dej(                  d         d               Zej                   j#                  ed      ej                   j'                  dej(                  d         d               Zej                   j#                  ed      ej                   j'                  dej.                  d         ej                   j'                  dej.                  d         ej                   j'                  dej                  ej                  ej                  ej                  e	j                  e	j                  g       ej0                  dd      d                                    Zy)+TestDivisionIntegerOverflowsAndDivideByZeroresult_typenocastcastedc                      yNr   r!   r~   s    r$   r%   z4TestDivisionIntegerOverflowsAndDivideByZero.<lambda>  s    r'   c                 @    t        j                  |       j                  S r    r6   r  r;  r~   s    r$   r%   z4TestDivisionIntegerOverflowsAndDivideByZero.<lambda>  s    RXXe_00 r'   c                 B    t        j                  |       j                   S r    r  r~   s    r$   r%   z4TestDivisionIntegerOverflowsAndDivideByZero.<lambda>  s    "((5/"5"5!5 r'   c                 D    t        j                  |       j                  dfS r  r  r~   s    r$   r%   z4TestDivisionIntegerOverflowsAndDivideByZero.<lambda>  s    288E?#6#6": r'   c                 F    t        j                  |       j                   dfS r  r  r~   s    r$   r%   z4TestDivisionIntegerOverflowsAndDivideByZero.<lambda>  s    (;(;';Q&? r'   )zeror;  neg_minmin-zeroneg_min-zeror  r;  r  r  r  r4  r5  r   Integerc                    t        t        j                  |      j                  d|      }|D ]|  \  }}}}t	        j
                  t        d      5  ||z  }d d d        j                  |j                  k(  sJ  ||      t        j                  |j                        j                  k(  sJ ||z  }|j                  |j                  k(  sJ  ||      dk(  sJ t        j                  ||      } ||      dk(  sJ t	        j
                  t        d      5  t        j                  ||      \  }}	d d d        j                  	j                  cxk(  r|j                  k(  sJ  J  ||      t        j                  |j                        j                  k(  sJ  ||	      dk(  r}J  y # 1 sw Y   YxY w# 1 sw Y   xY w)Nr-   zoverflow encounteredr   r   )
r@   r6   r  r;  r   warnsr  r   r  r{  
r_   r   to_checkr>   r?   r<   operand_identifierr#   res1res2s
             r$   test_signed_division_overflowzITestDivisionIntegerOverflowsAndDivideByZero.test_signed_division_overflow  s    .bhhuo.A.A2uM7? 	(3Ci!3n4JK !Sj! 99		)))S>RXXcii%8%<%<<<< )C99		)))S>Q&&&''#s#CS>Q&&& n4JK 1YYsC0
d1 ::8syy88888T?bhhsyy&9&=&====T?a'''+	(! !1 1s   F.F;.F8	;G	r  c                    t        dd|      }|D ]  \  }}}}t        j                  t        d      5  ||z  }d d d        j                  |j                  k(  sJ  ||      dk(  sJ t        j                  t        d      5  t        j                  ||      \  }}	d d d        j                  	j                  cxk(  r|j                  k(  sJ  J  ||      dk(  sJ  ||	      dk(  rJ  y # 1 sw Y   xY w# 1 sw Y   `xY w)Nr   r   zdivide by zeror   )r@   r   r  r  r   r6   r{  r  s
             r$   test_divide_by_zeroz?TestDivisionIntegerOverflowsAndDivideByZero.test_divide_by_zero  s   
 .aE:7? 	(3Ci!3n4DE !Sj! 99		)))S>Q&&&n4DE 1YYsC0
d1 ::8syy88888T?a'''T?a'''	(! !1 1s   C1C=1C:	=D	dividend_dtyper   divisor_dtype	operationwarnrA  c                    t        dd      D cg c]:  }t        j                  t        j                  |      j                  g|z  |      < }}t        j                  dg|      }t        j
                  |      j                  t        j
                  |      j                  k\  r[|t        j                  t        j                  t        j                  fv r)t        j                  t        d      5   | |t        j                  |      j                         |d            }|| j                  |   j                  |      k(  sJ 	 d d d        |D ]  }t        j                  t        d      5  t        j                   |||            j!                  d      }t        j                  | j                  |   j                  |      gt#        |      z        j!                         }	t%        ||	       d d d         y  | |t        j                  |      j                         |d            }|| j                  |   j'                  |      k(  sJ |D ]  }t        j                   |||            j!                  d      }t        j                  | j                  |   j'                  |      gt#        |      z        j!                         }	t%        ||	        y c c}w # 1 sw Y   xY w# 1 sw Y   xY w)Nr      r~   r-   zoverflow encountered inr   f)r  r6   r   r  r;  r   itemsizer{  rX  r  floordivr   r  r  overflow_resultsr  flattenlenr   r  )
r_   r  r  r  rT  arraysrR  resultr   expected_arrays
             r$   test_overflowsz:TestDivisionIntegerOverflowsAndDivideByZero.test_overflows  s    ;@3-I56 ((BHH^4889!;!/1 I I((B4}5 88N#,,1'x(,5		2??H4E4E:G -G"35 ( #*288N+C+G+GH)"- !6!6y!A!H!H&"( ( ( ((  ? \\&79 ?  XXi7&;<DDSIF%'XX!229=DD .0 114Q8&99@ # 'v~>? ?	? &rxx'?'C'CD%b)F T229=DD"$ $ $ $  ;)Aw"78@@E!#..y9@@*, --0V4"55<WY  #6>:;UI( (? ?s   ?K#5AK(4BK5(K25K?	N)rd   re   rf   r   r  helper_lambdasr6   r|  r  r  r  r  rX  r{  r  r   r  r  r   r  r  r  r  r  rE  r  r!   r'   r$   r  r    sT   ]x "K  05:?N 	k6"N6$:<
6"N6$:<k6"N6$:<;5!>)#<>
5!>)#<>
		;:&~(FH [[(FG[[Wbll9&=>( ? H(2 [[(FG[[Wbll<&@A( B H($ [[(FG[[-JJu[[_JJu[[[\\277BIIr\\8,,./ R[[V,5; -/ H5;r'   r  c                       e Zd Zd Zd Zy)TestCbrtc                 n    t        t        j                  t        j                  d      dz        d       y )N      r*   )r   r6   cbrtfloat32r^   s    r$   test_cbrt_scalarzTestCbrt.test_cbrt_scalar  s#    RWWRZZ%5q%89DAr'   c                 $   t        j                  dddt         j                  t         j                   g      }t        t        j                  |dz        |       t        t        j                  t        j                  t         j                                     t        t        j                  t         j                        t         j                         t        t        j                  t         j                         t         j                          y )NrK          @      r*   )	r6   r   rv  r   r  r   rw  r   r	   r2  s     r$   	test_cbrtzTestCbrt.test_cbrt!  s    HHb"c266BFF734BGGAqDM1-)*RWWRVV_bff-RWWbffW%w/r'   N)rd   re   rf   r  r  r!   r'   r$   r  r    s    B0r'   r  c                       e Zd Zd Zd Zd Zej                  j                  e	d      d        Z
d Zd Zd	 Zd
 Zd Zd Zd Zy)	TestPowerc                 t   t        j                  g d      }t        |dz  g d       t        |dz  |       t        |dz  g d       |j                         }|dz  }t        |g d       t	        |dz  g d       t	        |d	z  d
t        j                  d      t        j                  d      g       t        t         j                  dd      D ]^  \  }}}|D cg c]  }t        j                  |       }}t	        |d	z  ||       t        j                  ||       t        |||       ` t        t         j                  dd      D ]^  \  }}}|D cg c]  }t        j                  |       }}t	        |d	z  ||       t        j                  ||       t        |||       ` y c c}w c c}w )N)rK   r        @r   rK   rK   rK   r   r   )rK         @      "@r-   )rK   rx   gUUUUUU?rx   rK   r*   unary   r   r   max_sizerm  r|   rz  )
r6   r   r	   r   r   rk   sqrtr   r  r#  )r_   rQ   r   r|   inprP  rT  exps           r$   test_power_floatzTestPower.test_power_float+  sq   HH\"QT<(QT1QT<(FFH	aQ%AG_5AHr388A;&DE0rzz6=:<> 	0MCc ),,1388A;,C,c
C=GGCS!c3/	0 1rzz6=:;= 	0MCc ),,1388A;,C,c
C=GGCS!c3/	0 - -s   F0F5c                    t        j                  g d      }t        |dz  g d       t        |dz  |       t        |dz  g d       t        |dz  g d       t        |d	z  g d
       t        |dz  g d       t        |dz  g d       t        |dz  g d       t        |dz  t	        j
                  d      t	        j
                  d      t	        j
                  d      g       d|dz  d   z  }t        |dz  |z  dD cg c]  }||z  	 c}       d }t        dt         j                        t        dt         j                        fD ]t  }t        j                  |gt         j                        }t        j                  d      5   ||dz  |        ||dz  ||z          ||dz  ||z  |z         d d d        v y c c}w # 1 sw Y   xY w)N)rl         @      @      @      @r   r  r   r   )y            @y            (@y            8@r*   )y      &       y      G      "@y     @]      F@r+   )y            8y     ]      ^y     x      ur-   )y?ٿy;;?؉؉ͿyQ?{GzĿr.   )yQ{GzĿyn_YK&q-yǺa2U0*r/   )yI+Mb?y:бbpԗ|pyF̱~&|grx   rl  r&  r'  rK      )y         ~@y   0vA   ΋Ay  A   ]Ac                     t        | j                  |j                         t        | j                  |j                         y r    r   rO   imagr  s     r$   assert_complex_equalz:TestPower.test_power_complex.<locals>.assert_complex_equalY  &    qvvqvv.qvvqvv.r'   r~   rX   rY   )
r6   r   r	   r   rk   r!  ru  rv  complex_rE  )r_   rQ   normrT  r,  r  s         r$   test_power_complexzTestPower.test_power_complexF  s   HH'(QT<(QT1AqD"9:AqD"CDAqD"CDAG%CDAG%LMAG &8 	9AHsxx~sxx~'*xx~'7 	8ArE1:ArEDL$> ?aT ?	@
	/ !RVV$ga&89 	2A!BKK0AX. 2$QT1-$QT1Q3/$QT1Q3q512 2	2?2 2s   G
.GG	c                 p   t        j                  dg      }t        j                  dg      }t        j                  t        t         j                  t         j                        g      }d }dD ]  } |t        j                  ||      |       !  |t        j                  |d      |       t        j
                  d      5   |t        j                  |d      |       dD ]   } |t        j                  ||       |       "  |t        j                  |d	      |       d d d        y # 1 sw Y   y xY w)
N                      ?        c                     t        j                  |       t        j                  |      }} t        | j                  |j                         t        | j                  |j                         y r    )r6   r   r   rO   r+  r  s     r$   r,  z7TestPower.test_power_zero.<locals>.assert_complex_equall  s?    ::a="**Q-qAqvvqvv.qvvqvv.r'   )	gQ?rx   r         ?r   r*   r+   r,   gffffff@r   rX   rY                 ?y      𿚙?)r6   r   ru  r   powerrE  )r_   r  onecnanr,  ps         r$   test_power_zerozTestPower.test_power_zerod  s    xx~hhvxx012	/ 6 	:A $!2D9	: 	RXXdA.4[[* 	@ $!5t< : ?$RXXdQB%7>? $!8$?	@ 	@ 	@s   A D,,D5r4  r5  c                 p   t        j                  dg      }t        j                  t        t         j                  t         j                        g      }d } |t        j                  |d      |        |t        j                  |d      |        |t        j                  |d      |        |t        j                  |d      |        |t        j                  |d      |       t        j                  t              5 } |t        j                  |d	      |        |t        j                  |d
      |        |t        j                  |d      |        |t        j                  |d      |        |t        j                  |d      |       d d d        t              dk(  sJ y # 1 sw Y   xY w)Nr2  c                     t        | j                  |j                         t        | j                  |j                         y r    r*  r  s     r$   r,  z?TestPower.test_zero_power_nonzero.<locals>.assert_complex_equal  r-  r'   y      ?      @y       @      rk  r3        ?      )expected_warning            ?y             y              r6  y              r,   )	r6   r   ru  r   r7  r   r  r  r  )r_   r  r9  r,  r   s        r$   test_zero_power_nonzeroz!TestPower.test_zero_power_nonzero  sD    xx
#xx012	/
 	RXXdD148RXXdD148RXXdD148RXXdD148RXXdD148 \\>: 	=a $!6= $!6= $!6= $!5t< $!5t<	= 1v{{	= 	=s   BF,,F5c                 |   t        j                  g dt         j                        }|dz  }t        |dz  j                  |j                  u        t        |g d       t        t        j                  ||              t        |g d       |t        j                  dggg      z  }t        |j                  d       y )Nr   r  g9b->  @)r   r+   	   r   )r   r   r*   )	r6   r   int16r   r   r   may_share_memoryr	   shape)r_   rQ   r#   s      r$   test_fast_powerzTestPower.test_fast_power  s    HHY)fG""cii/03	*B''Q//01i( 288qcUG$$SYY	*r'   c                 |    t        j                  ddgd      }t        j                  ||      }t        |ddg       y )N   i8l   2X0)r6   r   r7  r	   r_   r   r   s      r$   test_integer_powerzTestPower.test_integer_power  s6    HHb"Xt$HHQNQ+-?@Ar'   c                    t         j                  d   }|D ]M  }t        j                  dd|      }t        t        j                  |d      t        j
                  |             O t         j                  d   }|D ]L  }t        j                  d|      }t        t        j                  |d      t        j
                  |             N y )Nr  r,  r4   r~   r   r  r6   r  rY  r	   r7  	ones_liker_   r   r  r   s       r$   -test_integer_power_with_integer_zero_exponentz7TestPower.test_integer_power_with_integer_zero_exponent  s    i( 	>B))C2.C#q)2<<+<=	> /0 	>B))Bb)C#q)2<<+<=	>r'   c                     t         j                  d   }|D ]L  }t        j                  d|      }t        t        j                  d|      t        j
                  |             N y )Nr  r4   r~   r   rN  rP  s       r$   test_integer_power_of_1z!TestPower.test_integer_power_of_1  sM    l+ 	>B))Bb)C!S)2<<+<=	>r'   c                     t         j                  d   }|D ]M  }t        j                  dd|      }t        t        j                  d|      t        j
                  |             O y )Nr  r   r4   r~   r   )r6   r  rY  r	   r7  
zeros_likerP  s       r$   test_integer_power_of_zeroz$TestPower.test_integer_power_of_zero  sO    l+ 	?B))Ar,C!S)2==+=>	?r'   c                    t         j                  d   }|D ]  }t        j                  g d|      }t        j                  g d|      }t        j                  d|      }t        j                  d|      }t        t        t         j
                  ||       t        t        t         j
                  ||       t        t        t         j
                  ||       t        t        t         j
                  ||        y )Nr  )r   r   r   r*   r~   )r   r   r   r/   r   r-   )r6   r  r   r
   r   r7  )r_   r   r  r   r   r8  minusones          r$   test_integer_to_negative_powerz(TestPower.test_integer_to_negative_power  s    i( 	?BR0Ab1A((1B'Cxx"-H*bhh15*bhh8<*bhhQ7*bhhX>	?r'   c                    t         j                  t         j                  fD ]8  }t        j                  ddddddt         j                  t         j                   g|      }t        j                  t         j                  t         j                   t         j                  t         j                   t         j                  t         j                   t         j                  t         j                   g|      }t        j                  ddt         j                  dt         j                  dt         j                  dg|      }t        t        j                  ||      |       ; y )Nr   r   r.   r   )r6   r  r#  r   rv  r	   r7  )r_   r  r   r   r   s        r$   test_float_to_inf_powerz!TestPower.test_float_to_inf_power  s    ::rzz* 	,B!Q1b"bffrvvg>CA"&&266'266BFF7 ""&&BCEGA!Q2661bffa@"EA!Q+	,r'   N)rd   re   rf   r$  r0  r;  r   r  r  r   rA  rG  rL  rQ  rS  rV  rY  r[  r!   r'   r$   r  r  *  s`    062<@6 [[(FG H4+B
	>>?
?,r'   r  c                       e Zd Zd Zy)TestFloat_powerc                    d}d}t        ||      D ]z  \  }}d|d|}t        j                  d|      }t        j                  ||      }t	        |j
                  j                  t        j
                  |      j                  k(  |       | y )Nz?bhilBHILefdgFDGddddddddddddgDDGzdtin: z	, dtout: r   r~   )r   r6   r  float_powerr   r   name)r_   arg_typeres_typedtindtoutrP  r  r#   s           r$   test_type_conversionz$TestFloat_power.test_type_conversion  sw    %%x2 	AKD%+/7C''!4(C..c*CCIINNbhhuo&:&::C@		Ar'   N)rd   re   rf   rf  r!   r'   r$   r]  r]    s    Ar'   r]  c                       e Zd Zej                  j                  dg d      d        Zej                  j                  d edd            d        Zej                  j                  e
d	      d
        Zy)TestLog2r  r  r   gc                     g d}g d}t        j                  ||      }t        j                  ||      }t        t        j                  |      |       y )Nr   r   r+             @   r     i   i   r   r   r   r*   r+   r,      rz  rm  rC  r4   r~   )r6   r   r   log2r_   r  rQ   r   xfyfs         r$   test_log2_valueszTestLog2.test_log2_values  s>    9.XXar"XXar"BGGBK,r'   rT  r   A   c                 h    t        j                  d|z        }t        |t        |      d|z         y )Nr  zat exponent %drm  )r6   rt  r	   r   )r_   rT  vs      r$   test_log2_intszTestLog2.test_log2_ints  s+     GGBENQa*:Q*>?r'   r4  r5  c                    t        t        j                  d      d       t        t        j                  t        j                        t        j                         t	        t        j
                  t        j                  t        j                                     t        j                  d      5 }t        j                  ddt               t	        t        j
                  t        j                  d                   t	        t        j
                  t        j                  t        j                                      t        t        j                  d      t        j                          t	        |d   j                  t        u        t	        |d	   j                  t        u        t	        |d
   j                  t        u        d d d        y # 1 sw Y   y xY w)NrK   rs  T)recordalways       r   r   r   )r	   r6   rt  rv  r   rw  r   warningscatch_warningsfilterwarningsr  category)r_   ws     r$   test_log2_specialzTestLog2.test_log2_special  s   RWWR["%RWWRVV_bff-)*$$D1 	5Q##Hb.ABHHRWWS\*+BHHRWWbffW-./rvvg.AaDMM^34AaDMM^34AaDMM^34	5 	5 	5s   0DGGN)rd   re   rf   r   r  r  rx  r  r|  r  r   r  r!   r'   r$   rh  rh    s|    [[T?3- 4- [[S%2,/@ 0@ [[(FG5 H5r'   rh  c                       e Zd Zd Zy)TestExp2c                     g d}g d}dD ]O  }t        j                  ||      }t        j                  ||      }t        t        j                  |      |       Q y )Nrl  rr  ri  r~   )r6   r   r   exp2r_   rQ   r   r  rv  rw  s         r$   test_exp2_valueszTestExp2.test_exp2_values  sM    9.! 	1B!2&B!2&BR0	1r'   N)rd   re   rf   r  r!   r'   r$   r  r    s    1r'   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestLogAddExp2c                    g d}g d}g d}t        g dg d      D ]  \  }}t        j                  t        j                  ||            }t        j                  t        j                  ||            }t        j                  t        j                  ||            }t	        t        j
                  ||      ||        y N)r   r   r*   r+   r,   )r,   r+   r*   r   r   )rs  rs  rs  rs  rs  ri  )rs  rI  rI  r~   decimal)r   r6   rt  r   r   
logaddexp2	r_   rQ   r   r  r  dec_rv  rw  zfs	            r$   test_logaddexp2_valuesz%TestLogAddExp2.test_logaddexp2_values  s    O[9 	IHB!2./B!2./B!2./Bb" 5r4H		Ir'   c                     g d}g d}g d}dD ]g  }t        j                  ||      }t        j                  ||      }t        j                  ||      }t        t        j                  ||      |       i y N)@B C )r  r  r  r  )r  r  r  r  ri  r~   )r6   r   r   r  r_   rQ   r   r  r  logxflogyflogzfs           r$   test_logaddexp2_rangez$TestLogAddExp2.test_logaddexp2_range  sg    222! 	DBHHQb)EHHQb)EHHQb)EeU ;UC		Dr'   c                    t         j                  }|| || |d| dg}||| | d|d| g}|||| ||ddg}t        j                  d      5  dD ]g  }t        j                  ||      }t        j                  ||      }t        j                  ||      }t	        t        j
                  ||      |       i 	 d d d        y # 1 sw Y   y xY wNr   rC  rY   ri  r~   )r6   rv  rE  r   r	   r  	r_   rv  rQ   r   r  r  r  r  r  s	            r$   test_infzTestLogAddExp2.test_inf#  s    ff3$sdCcTA63sdAaC483sdCaA6[[) 	A% A"-"-"-R]]5%8%@	A	A 	A 	A   A-CCc                    t        t        j                  t        j                  t        j                  t        j
                                     t        t        j                  t        j                  t        j
                  t        j                                     t        t        j                  t        j                  t        j                  d                   t        t        j                  t        j                  dt        j                                     t        t        j                  t        j                  t        j                  t        j                                     y r  )r   r6   rw  r  r   rv  r^   s    r$   test_nanzTestLogAddExp2.test_nan/  s    rvvrvv678rvvrvv678rvvq123q"&&123rvvrvv678r'   c                    t        t        j                  j                  t        j                          t        t        j                  j                  g       t        j                          t        t        j                  j                  t        j                   g      t        j                          t        t        j                  j                  t        j                   dg      d       y r  )r	   r6   r  identityrv  r   r^   s    r$   test_reducezTestLogAddExp2.test_reduce6  s    R]]++bffW5R]]))"-w7R]]))BFF7)4rvvg>R]]))BFF7A,7;r'   N)rd   re   rf   r  r  r  r  r  r!   r'   r$   r  r    s    ID
A9<r'   r  c                       e Zd Zd Zd Zy)TestLogc                    g d}g d}dD ]T  }d}t        j                  ||      }t        j                  ||      |z  }t        t        j                  |      |       V t        j                  g d      }t        j                  |      }t        t        j                  ||      |       dD ]V  }	 t        j                  d	      5  t        j
                  |      j                  }t        j                  |       d d d        X y # 1 sw Y   xY w# t        $ r-}|d
k(  rt        rt        j                  d       n|Y d }~d }~ww xY w)Nrl  rr  ri  9B.?r~   )r   g      ?r*   gRQ?gl#	?r   rC  r  rj  z=Overflow has occurred for np.log(np.finfo(np.longdouble).max))r6   r   r   logrE  r  r  rG  r   r   rd  )r_   rQ   r   r  log2_rv  rw  excs           r$   test_log_valueszTestLog.test_log_values>  s   9.! 	0B*E!2&B!2&u,Br
B/		0 HH9:VVAYBFF1!,b1 " 	B[[W- ((AFF1I	  & 	9 KK?
 I		s0   5D5D DD	D	E #EEc           
      Z   t         j                  j                  d       t        j                  g d      }t        j                  dd      }|D ]  }t        j
                  t         j                  j                  dd|            }|j                         }d|d	d
d<   t        j                  |      }t        j                  |      }|D ]\  }t        t        j                  |d d |         |d d |   d       t        t        j                  |d d |         |d d |   d       ^  y )N*   r0   r/   r.   r-   r   r   r*   r+   r   r*  {Gz?      Y@r   rK   r*   r-   r+   nulp)
r6   r   seedr   rY  r#  uniformr   r  r   )	r_   stridessizesiix_f64	x_specialy_true	y_specialjjs	            r$   test_log_strideszTestLog.test_log_strides]  s    
		r((01		!C  	aBJJryy00T20NOE

I #Ia1fVVE]Fy)I a.rvveDbDk/BF4R4LWXY.rvvi"o/F	RVTVRV^_`a	ar'   N)rd   re   rf   r  r  r!   r'   r$   r  r  =  s    >ar'   r  c                       e Zd Zd Zd Zy)TestExpc                     g d}g d}dD ]T  }d}t        j                  ||      }t        j                  ||      |z  }t        t        j                  |      |       V y )Nrl  rr  ri  r  r~   )r6   r   r   r#  )r_   rQ   r   r  r  rv  rw  s          r$   test_exp_valueszTestExp.test_exp_valuesl  sW    9.! 	0B*E!2&B!2&u,Br
B/		0r'   c           
         t         j                  j                  d       t        j                  g d      }t        j                  dd      }|D ]  }t        j
                  t         j                  j                  dd|            }t        j                  |      }|D ]/  }t        t        j                  |d d |         |d d |   d       1  y )	Nr  r  r   r*  r  g(@r   r  )	r6   r   r  r   rY  r#  r  r#  r   )r_   r  r  r  r  r  r  s          r$   test_exp_strideszTestExp.test_exp_stridesu  s    
		r((01		!C  	ZBJJryy00T20NOEVVE]F Z.rvveDbDk/BF4R4LWXYZ	Zr'   N)rd   re   rf   r  r  r!   r'   r$   r  r  k  s    0Zr'   r  c            $       J   e Zd Zd Zej
                  j                   ed      d      d        Zej
                  j                  e
d      d        Zej
                  j                  e
d      ej
                  j                  dg d	      d
               Zej
                  j                  e
d      ej
                  j                  ej                  j!                  d      d      d               Zej
                  j                  e
d      ej
                  j                  dej&                  ej(                  g      ej
                  j                  dg d      ej
                  j                  dej*                  ej*                   g      d                             Zej
                  j                  dej&                  ej(                  g      ej
                  j                  dddg      ej
                  j                  dg d      d                      Zej
                  j                  dg d	      d        Zd Zej
                  j                  e
d      d        Zej
                  j                  e
d      d        Zej
                  j                  e
d      d        Zej
                  j                  e
d      d        Zd Zej
                  j                  e
d      d        Zej
                  j                  e
d      ej
                  j                  d ej                  v d!      d"               Z d# Z!d$ Z"ej
                  j                  e
d      d%        Z#ej
                  j                  e
d      d&        Z$ej
                  j                   ed      d      d'        Z%ej
                  j                  e
d      d(        Z&ej(                  ej&                  ejN                  ejP                  ejR                  ejT                  ejV                  gZ,ejZ                  ej\                  ej^                  ej`                  ejb                  ejd                  ejV                  gZ3ejV                  gZ4ejd                  gZ5ejZ                  ej\                  ej^                  ejl                  ejd                  gZ7ej
                  j                  ej                  d)k(  xr ejp                  d*k  d+      ej
                  j                  d,e9      ej
                  j                  dd      ej
                  j                  d-d.ge5fd.gd/z  e5fd0ge3fd0gd/z  e3fd1ge4fd1gd/z  e4fd2ge7fd2gd/z  e7fd3ge7fd3gd/z  e7fd4d4d4ejt                  ge5fd4d4d4ejt                  gd/z  e5fejt                  d1d1d1ge4fejt                  d1d1d1gd/z  e4fejt                  gg fejt                  gd/z  g fd4d4d4ej*                  ge,e5z   fd4d4d4ej*                  gd/z  e,e5z   fej*                  d1d1d1ge,fej*                  d1d1d1gd/z  e,fej*                  ge,fej*                  gd/z  e,fd4d4d4ej*                   ge3e,z   e5z   fd4d4d4ej*                   gd/z  e3e,z   e5z   fej*                   d1d1d1ge3e,z   fej*                   d1d1d1gd/z  e3e,z   fej*                   ge3e,z   fej*                   gd/z  e3e,z   ff      d5                             Z;ej
                  j                  dd      d6        Z<y7)8TestSpecialFloatsc                    t        j                  dd      5  t         j                  t         j                  t         j                  dg}t         j                  t         j                   t         j                  t         j                   g}dD ]O  }t        j                  ||      }t        j                  ||      }t        t        j                  |      |       Q 	 d d d        y # 1 sw Y   y xY w)NrC  )underrB  rs  ro   r  r   rj  r~   )r6   rE  r   rv  r   r	   r#  r  s         r$   r  z!TestSpecialFloats.test_exp_values  s    [[wW5 	-"&&"&&"-A"&&"&&266'2A* -XXar*XXar*RVVBZ,-	- 	- 	-s   CC''C02.17z<Older glibc versions may not raise appropriate FP exceptionsr5  c                    t        j                  d      5  t        t        t         j                  t        j
                  d             t        t        t         j                  t        j                  d             t        t        t         j                  t        j                  d             t        t        t         j                  t        j                  d             t        t        t         j                  t        j                  d             d d d        t        j                  d      5  t        t        t         j                  t        j
                  d             t        t        t         j                  t        j                  d	             t        t        t         j                  t        j                  d
             t        t        t         j                  t        j                  d	             t        t        t         j                  t        j                  d
             d d d        y # 1 sw Y   $xY w# 1 sw Y   y xY w)NrC  rB  g o_.&@r  g =`XCg      @r  g     1g     @g =`X)r6   rE  r
   rG  r#  float16r  r#  r^   s    r$   test_exp_exceptionsz%TestSpecialFloats.test_exp_exceptions  sZ   
 [[g& 	H,bffbjj6IJ,bffbjj6FG,bffbjj6FG,bffbjj6FG,bffbjj6FG	H [[w' 	I,bffbjj6GH,bffbjj6HI,bffbjj6GH,bffbjj6HI,bffbjj6GH	I 	I	H 	H	I 	Is   C;H40C;I4H>I
r4  c           
      p
   t        j                  d      5  t         j                  t         j                  t         j                  t         j                  t         j                   t         j                  g}t         j                  t         j                   t         j                  t         j                   ddg}t         j                  t         j                   t         j                  t         j                   ddg}dD ]  }t        j                  ||      }t        j                  ||      }t        j                  ||      }t        t        j                  |      |       t        t        j                  |      |       t        t        j                  |      |       t        t        j                  |      |        	 d d d        t        j                  d	      5  d
D ]  }t        t        t         j                  t        j                  d|             t        t        t         j                  t        j                  d|             t        t        t         j                  t        j                  d|             t        t        t         j                  t        j                  d|              	 d d d        t        j                  d      5  d
D ]  }t        t        t         j                  t        j                  t         j                   |             t        t        t         j                  t        j                  d|             t        t        t         j                  t        j                  t         j                   |             t        t        t         j                  t        j                  d|             t        t        t         j                  t        j                  t         j                   |             t        t        t         j                  t        j                  d|             t        t        t         j                  t        j                  t         j                   |             t        t        t         j                  t        j                  d|              	 d d d        t               5  t        j                  dd      }t        j                  |       d d d        y # 1 sw Y   FxY w# 1 sw Y   \xY w# 1 sw Y   cxY w# 1 sw Y   y xY w)NrX   r  rs  r         r  r~   rC  r?  ro   r  r   rY   g    eAr  )r6   rE  r   rv  r   r	   r  rt  log10log1pr
   rG  r   )	r_   rQ   r   y1pr  rv  rw  yf1pr   s	            r$   r  z!TestSpecialFloats.test_log_values  sP   [[X& 	1"&&"&&AA"&&"&&266'3=A66BFF7BFFRVVGT4@C* 1XXar*XXar*xx2.RVVBZ,RWWR["-RXXb\2.RXXd^R01		1 [[( 		8% 80"&& hhs"570"'' hhs"570"(( hhs"570"(( hht2688		8 [[) 	8% 80"&& hhwb9;0"&& hht2680"'' hhwb9;0"'' hht2680"(( hhwb9;0"(( hht2680"(( hhwb9;0"(( hht2688	8(  ! 	I.AFF1I	 	Y	1 	1		8 		8	8 	8(	 	s2   F*T CTG&T -T,TT T),T5r   r  c                 .   t        j                  d      5  t         j                  t         j                  t         j                  t         j                  g}t         j                  t         j                   t         j                  t         j                   g}t        j                  ||      }t        j                  ||      }t        t        j                  |      |       t        t        j                  |      |       d d d        y # 1 sw Y   y xY w)NrX   r  r~   )r6   rE  r   rv  r   r	   sincos)r_   r   rQ   r   rv  rw  s         r$   test_sincos_valuesz$TestSpecialFloats.test_sincos_values  s     [[X& 	)0A"&&"&&266'2A!5)B!5)BR(R(	) 	) 	)s   C+DDr  z'underflow is triggered for scalar 'sin'c                    t        j                  d      5  t        j                  t        j	                  d      t         j
                        }t        j                  |       t        j                  |       d d d        y # 1 sw Y   y xY w)NrC  r  z0x1.f37f47a03f82ap-511r~   )r6   rE  r   r   fromhexr#  r  r  )r_   underflow_triggers     r$   test_sincos_underflowz'TestSpecialFloats.test_sincos_underflow  sd     [[w' 	& "67jj! FF$%FF$%	& 	& 	&s   A#BBcallabler  valuec           	          t        j                  d      5  t        t        |t        j                  |g|             d d d        y # 1 sw Y   y xY w)NrC  rY   r~   )r6   rE  r
   rG  r   )r_   r  r   r  s       r$   test_sincos_errorsz$TestSpecialFloats.test_sincos_errors  sB    
 [[) 	0,h%.0	0 	0 	0s   (AAr  r   r=   )r-   r   r   r+   r,   c                     d}|t        |      z  }t        j                  j                  d      }|j	                  ||      } ||d d |         } ||d d |   |d |        t        |d | |       y )Nr*  r  r   )rP   r6   r   default_rngstandard_normalr	   )	r_   r  r   r=   Nr]  rngrQ   r   s	            r$   test_sincos_overlapsz&TestSpecialFloats.test_sincos_overlaps  sw     Vii##B'5)Qxx[!8V8!BQ%(QrUAr'   r  c                    t        j                  d      5  t         j                  t         j                  t         j                  t         j                  dg}t         j                  t         j                   t         j                  t         j                   dg}t        j                  ||      }t        j                  ||      }t        t        j                  |      |       d d d        y # 1 sw Y   y xY w)NrX   r  rs  r~   )r6   rE  r   rv  r   r	   r!  ru  s         r$   test_sqrt_valuesz"TestSpecialFloats.test_sqrt_values  s    [[X& 	*4A"&&"&&266'26A!2&B!2&Bb)	* 	* 	*s   CC..C7c                    t         j                  t         j                  t         j                  t         j                  ddddg}t         j                  t         j                   t         j                  t         j                   ddddg}dD ]O  }t        j                  ||      }t        j                  ||      }t	        t        j
                  |      |       Q y )Nrs  rK   r  r  r  r~   )r6   r   rv  r   r	   rP   r  s         r$   test_abs_valuesz!TestSpecialFloats.test_abs_values  s    VVbffbffbffb"c3?VVbffWbffrvvgr3cB& 	)B!2&B!2&BR(	)r'   c           	         t         j                  t         j                  t         j                  t         j                  g}t         j                  t         j                   t         j                  t         j                   g}t        j                  d      5  dD ]O  }t        j                  ||      }t        j                  ||      }t        t        j                  |      |       Q 	 d d d        t        j                  d      5  t        t        t         j                  t        j                  dd             t        t        t         j                  t        j                  d	d
             t        t        t         j                  t        j                  dd             d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrX   r  r  r~   rC  r       @@ro   gnFr  gZbtir   )	r6   r   rv  rE  r   r	   squarer
   rG  r  s         r$   test_square_valuesz$TestSpecialFloats.test_square_values  s)   VVbffbffbff-VVbffWbffrvvg.[[X& 	0* 0XXar*XXar*RYYr]B/0	0 [[g& 	6,bii((3c24,bii((4s35,bii((546	6 	6	0 	0	6 	6s   AF/	BF;/F8;Gc           
         t        j                  d      5  t         j                  t         j                  ddt         j                  t         j                   g}t         j                  t         j                   t         j                  t         j                   ddg}dD ]O  }t        j                  ||      }t        j                  ||      }t        t        j                  |      |       Q 	 d d d        t        j                  d      5  dD ]6  }t        t        t         j                  t        j                  d|             8 	 d d d        y # 1 sw Y   exY w# 1 sw Y   y xY w)	NrX   r  rs  r  r  r~   rC  r?  )	r6   rE  r   rv  r   r	   
reciprocalr
   rG  r  s         r$   test_reciprocal_valuesz(TestSpecialFloats.test_reciprocal_values%  s   [[X& 	4"&&#tRVVbffW=A"&&"&&266'2s;A* 4XXar*XXar*R]]2.34	4 [[( 	8* 80"-- hht2688	8 	8	4 	4	8 	8s   CE<E E E)c           
      x   t        j                  d      5  t         j                  t         j                   ddt         j                  t         j                   g}t         j                  t         j                  ddt         j                  t         j                  g}dD ]O  }t        j                  ||      }t        j                  ||      }t        t        j                  |      |       Q 	 d d d        t        j                  d      5  dD ]  }t        t        t         j                  t        j                  t         j                  |             t        t        t         j                  t        j                  t         j                   |              	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	NrX   r  rs  r  r  r~   rC  rY   )	r6   rE  r   rv  r   r	   tanr
   rG  r_   in_r|   r  in_arrout_arrs         r$   test_tanzTestSpecialFloats.test_tan4  s+   [[X& 	666BFF7Crvvw?C662663bffbff=C% 6#R0((3b1RVVF^W56	6 [[) 	;% ;0"&& hhrvvR8:0"&& hhwb9;;	; 	;	6 	6	; 	;s   CF$BF0$F-0F9c                    t        j                  d      5  t         j                  t         j                   t         j                  t         j                   g}t         j                  t         j                  t         j                  t         j                  g}dD ]n  }t        j                  ||      }t        j                  ||      }t        t        j                  |      |       t        t        j                  |      |       p 	 d d d        t         j                  t         j                  fD ]v  }t         j                  t         j                   ddfD ]N  }dD ]G  }t        j                  d      5  t        t        |t        j                  ||             d d d        I P x y # 1 sw Y   xY w# 1 sw Y   dxY w)	NrX   r  r  r~   r  r  rC  rY   )
r6   rE  r   rv  r   r	   arcsinarccosr
   rG  )r_   r   r|   r  r  r  r  r  s           r$   test_arcsincosz TestSpecialFloats.test_arcsincosE  sT   [[X& 	966BFF7BFFRVVG4C662662662662C% 9#R0((3b1RYYv.8RYYv.8	9	9 BII. 	AH&&266'35 A) ABW5 A%&8(&(hhuB&?AA AAA	A	9 	9A As   C2F,6'F8	,F58Gc                    t        j                  d      5  t         j                  t         j                   g}t         j                  t         j                  g}dD ]O  }t        j                  ||      }t        j                  ||      }t	        t        j
                  |      |       Q 	 d d d        y # 1 sw Y   y xY w)NrX   r  r  r~   )r6   rE  r   r   r	   arctanr  s         r$   test_arctanzTestSpecialFloats.test_arctanW  s    [[X& 	966BFF7#C66266"C% 9#R0((3b1RYYv.89	9 	9 	9s   BB77C c           	      8   t         j                  t         j                   t         j                  t         j                   g}t         j                  t         j                  t         j                  t         j                   g}dD ]O  }t        j                  ||      }t        j                  ||      }t	        t        j
                  |      |       Q t        j                  d      5  t        t        t         j
                  t        j                  dd             t        t        t         j
                  t        j                  dd             t        t        t         j
                  t        j                  d	d
             d d d        y # 1 sw Y   y xY wNr  r~   rC  r        (@ro   g      ^@r  g     @r   )	r6   r   rv  r   r	   sinhrE  r
   rG  r  s         r$   	test_sinhzTestSpecialFloats.test_sinh`  s   vvw0vvrvvrvvw/! 	3BXXc,Fhhs"-G'2	3
 [[g& 	7,bgg((4s35,bgg((546,bgg((657	7 	7 	7s   *BFFbsdz2fallback implementation may not raise, see gh-2487c           	      6   t         j                  t         j                   t         j                  t         j                   g}t         j                  t         j                  t         j                  t         j                  g}dD ]O  }t        j                  ||      }t        j                  ||      }t	        t        j
                  |      |       Q t        j                  d      5  t        t        t         j
                  t        j                  dd             t        t        t         j
                  t        j                  dd             t        t        t         j
                  t        j                  d	d
             d d d        y # 1 sw Y   y xY wr  )	r6   r   rv  r   r	   coshrE  r
   rG  r  s         r$   	test_coshzTestSpecialFloats.test_coshq  s    vvw0vvrvvrvvrvv.! 	3BXXc,Fhhs"-G'2	3
 [[g& 	7,bgg((4s35,bgg((546,bgg((657	7 	7 	7s   )BFFc                 p   t         j                  t         j                   t         j                  t         j                   g}t         j                  t         j                  ddg}dD ]O  }t        j                  ||      }t        j                  ||      }t	        t        j
                  |      |       Q y )NrK   r  r  r~   )r6   r   rv  r   r	   tanhr  s         r$   	test_tanhzTestSpecialFloats.test_tanh  s{    vvw0vvrvvsD)! 	3BXXc,Fhhs"-G'2	3r'   c                    t         j                  t         j                   t         j                  t         j                   g}t         j                  t         j                  t         j                  t         j                   g}dD ]O  }t        j                  ||      }t        j                  ||      }t	        t        j
                  |      |       Q y )Nr  r~   )r6   r   rv  r   r	   rL   r  s         r$   test_arcsinhzTestSpecialFloats.test_arcsinh  s    vvw0vvrvvrvvw/! 	6BXXc,Fhhs"-GF+W5	6r'   c                 "   t        j                  d      5  t         j                  t         j                   t         j                  t         j                   ddg}t         j                  t         j                  t         j                  t         j                  dt         j                  g}dD ]O  }t        j                  ||      }t        j                  ||      }t        t        j                  |      |       Q 	 d d d        dt         j                   fD ]]  }t        j                  d      5  dD ]6  }t        t        t         j                  t        j                  ||             8 	 d d d        _ y # 1 sw Y   }xY w# 1 sw Y   vxY w)	NrX   r  rK   rs  r  r~   rC  rY   )	r6   rE  r   rv  r   r	   arccoshr
   rG  r_   r   r|   r  r  r  r  s          r$   test_arccoshzTestSpecialFloats.test_arccosh  s    [[X& 	:66BFF7BFFRVVGS#>C662662662663?C% :#R0((3b1RZZ/9:	: BFF7^ 	=EW- =) =B!"4bjj"$((5";=== =	=	: 	:= =s   C%E91<F9FF	c                    t        j                  d      5  t         j                  t         j                   t         j                  t         j                   dddg}t         j                  t         j                  t         j                  t         j                  t         j                  t         j                   t         j                  g}dD ]O  }t        j                  ||      }t        j                  ||      }t        t        j                  |      |       Q 	 d d d        dt         j                  t         j                   ddfD ]^  }t        j                  d	d	
      5  dD ]6  }t        t        t         j                  t        j                  ||             8 	 d d d        ` t        j                  t        j                  d      j                        sJ y # 1 sw Y   xY w# 1 sw Y   xY w)NrX   r  rK   r  r  r  r~   g)\(?rC  rr  y             )r6   rE  r   rv  r   r	   arctanhr
   rG  r  rO   r  s          r$   test_arctanhzTestSpecialFloats.test_arctanh  s]   [[X& 	:66BFF7BFFRVVGS$DC66266266266266BFF7BFFKC% :#R0((3b1RZZ/9:	: BFFRVVGS$7 	=EWW= =) =B!"4bjj"$((5";=== =	= zz"**S/..///	: 	:= =s   DG"<G*G'*G3	c                    t        j                  d      5  t         j                  t         j                   t         j                  t         j                   g}t         j                  t         j                  t         j                  dg}dD ]O  }t        j                  ||      }t        j                  ||      }t        t        j                  |      |       Q 	 d d d        dD ]^  }t        j                  dd      5  dD ]6  }t        t        t         j                  t        j                  ||             8 	 d d d        ` y # 1 sw Y   mxY w# 1 sw Y   wxY w)	NrX   r  rs  r  r~   )     @@g     @rC  )rB  r  )	r6   rE  r   rv  r   r	   r  r
   rG  r  s          r$   	test_exp2zTestSpecialFloats.test_exp2  s	   
 [[X& 	766BFF7BFFRVVG4C662662663/C% 7#R0((3b1RWWV_g67	7 ' 	=E'9 =) =B!"4bgg"$((5";=== =	=	7 	7= =s   CE	<E	EE	c                    t        j                  d      5  t         j                  t         j                   t         j                  t         j                   g}t         j                  t         j                  t         j                  dg}dD ]O  }t        j                  ||      }t        j                  ||      }t        t        j                  |      |       Q 	 d d d        dD ]]  }t        j                  d      5  d	D ]6  }t        t        t         j                  t        j                  ||             8 	 d d d        _ y # 1 sw Y   lxY w# 1 sw Y   vxY w)
NrX   r  r  r  r~   )g      i@r!  rC  r  )ro   r  )	r6   rE  r   rv  r   r	   expm1r
   rG  r  s          r$   
test_expm1zTestSpecialFloats.test_expm1  s   [[X& 	866BFF7BFFRVVG4C6626626640C% 8#R0((3b1RXXf-w78	8 % 	=E'* =$ =B!"4bhh"$((5";=== =	=	8 	8= =s   CE <EEE	win32l       z*failures on 32-bit Python, see FIXME belowufunczdata, escapegQ?ro  r  rK   rs  r  rx   c                     |r||v ry |t         j                  t         j                  fv r|dk(  ry t        j                  ||      }t	               5   ||       d d d        y # 1 sw Y   y xY w)Nro   r~   )r6   spacingceilr   r   )r_   r'  r   dataescaper   s         r$   test_unary_spurious_fpexceptionz1TestSpecialFloats.test_unary_spurious_fpexception  sc    V evo RZZ))eslU+! 	%L	 	 	s   	A##A,c                     t        j                  |      }t        j                  |      }|j                  }t	               5  t        j
                  d|      |z   d d d        y # 1 sw Y   y xY w)Nr  r~   )r6   r   r  smallest_subnormalr   r"  )r_   r   r  dt_infosubnorms        r$    test_divide_spurious_fpexceptionz2TestSpecialFloats.test_divide_spurious_fpexception%  sW    XXe_((2,,,
  ! 	2HHWB''1	2 	2 	2s   A%%A.N)=rd   re   rf   r  r   r  r  r   r  r  r   r  r  r  r  rD   rG   r  r6   r  r  rv  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r"  r%  r  r  r  r)  r  INF_INVALID_ERRr  rt  r  r  r!  r  NEG_INVALID_ERRONE_INVALID_ERRLTONE_INVALID_ERRr  
BYZERO_ERRmaxsizeUFUNCS_UNARY_FPr   r-  r2  r!   r'   r$   r  r    s   - [[&!M  I	I [[(FG/ H/b [[(FG[[W&:;) < H) [[(FG[[)8  &	 H
& [[(FG[[Z"&&"&&)9:[[Wo6[[Wrvvw&780 9 7 ; H0
 [[Z"&&"&&)9:[[WsCj1[[X'78 9 2 ; [[T#78* 9*) [[(FG6 H6" [[(FG8 H8 [[(FG; H;  [[(FGA HA"9 [[(FG7 H7  [[(FG[[-G  I7I H7 36 [[(FG= H= [[(FG0 H0& [[&!M  =	= [[(FG= H=" 			299bjj"**O 	288RWWbjj


O
 	

O 	

 	2=="**J [[/KCKK)4KK  M[[Wo6[[Wo6[[^
"#
%&
!
O$
 
r?#


r:

J
sC	 "34
sC	 	#%67
&&#sC	 /2
&&#sC	 	#_5
&&2
&&"b
sC	 /4E"EF
sC	 	#_7H%HI
&&#sC	 /2
&&#sC	 	#_5
&&?#
&&"o&
sC"&&	!	?	*->	>	@
sC"&&	!"	$	?	*->	>	@66'3S	!?_#DE66'3S	!"	$o&GH66'Oo5666'289I%. %LM% 7 7MT [[Wo6	2 7	2r'   r  c                       e Zd Zej                  j                  dg d      d        Zej                  j                  dddg      d        Zy)	TestFPClassr=   )r+  r0   r/   r.   r-   r   r   r+   r,   rs  rz  rm  rC  r4   c                    t        j                  t         j                  t         j                   t         j                  t         j                   ddddddg
d      }t        j                  t         j                  t         j                   t         j                  t         j                   ddddd	d
g
d      }t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  g d      }t	        t        j
                  |d d |         |d d |          t	        t        j
                  |d d |         |d d |          t	        t        j                  |d d |         |d d |          t	        t        j                  |d d |         |d d |          t	        t        j                  |d d |         |d d |          t	        t        j                  |d d |         |d d |          t	        t        j                  |d d |         |d d |          t	        t        j                  |d d |         |d d |          y )Nr  rK   r  rs  iVQ  iVQ r   r~   gJ-& 6gJ-& r  
TTFFFFFFFF
FFTTFFFFFF
FTFTTFTFFT
FFFFTTTTTT)	r6   r   r   rv  r	   rw  rt  r  isfinite)r_   r=   arr_f64arr_f32r   rv  signfinites           r$   test_fpclasszTestFPClass.test_fpclass2  s    ((BFFRVVGRVVbffWdCsT_amnvyz((BFFRVVGRVVbffWdCsT_amnvyz((_`((_`((\](([\RXXghh/0#hh-@RXXghh/0#hh-@RXXghh/0#hh-@RXXghh/0#hh-@RZZ& 12D6NCRZZ& 12D6NCR[[6!23VHfH5EFR[[6!23VHfH5EFr'   r   r   r  c                    t        j                  t         j                  t         j                   t         j                  t         j                   ddddddg
|      }t        j                  g d      }t        j                  g d	      }t        j                  g d
      }t        j                  g d      }t        j                  |j
                  d      }|dd d   }|dd d   }	t        j                  |      }
t        |j                  j                  d       t        |	j                  j                  d       t        |
j                  j                  d       t        t        j                  ||	      |dd d          t        t        j                  ||	      |dd d          t        t        j                  ||	      |dd d          t        t        j                  ||	      |dd d          t        t        j                  |
|	      |dd d          t        t        j                  |
|	      |dd d          t        t        j                  |
|	      |dd d          t        t        j                  |
|	      |dd d          t        t        j                  |      |dd d          t        t        j                  |      |dd d          t        t        j                  |      |dd d          t        t        j                  |      |dd d          t        j                  t        j                  |d            }t        j                  t        j                  |d            }t        j                  t        j                  |d            }t        j                  t        j                  |d            }t        j                  t        j                  |d            }t        t        j                  |      |       t        t        j                  |      |       t        t        j                  |      |       t        t        j                  |      |       y )Nr  rK   r  rs  r=  r>  r~   r?  r@  rA  rB  r   r   r*   FTr   r   )r6   r   r   rv  r   rF  r	   r   c_contiguousrw  rt  r  rC  array_split)r_   r   r+  r   rv  rF  rG  r|   
ncontig_inncontig_out	contig_in
data_split	nan_split	inf_split
sign_splitfinite_splits                   r$   test_fp_noncontiguousz!TestFPClass.test_fp_noncontiguousD  sE   xx"&&"&&266'4sK(*168 hh 8 9hh 8 9xx 6 7 4 5jj62!$Q$Z
!$Q$iHHZ(	Z%%22E:[&&33U;Y__1148RXXjk:C1IFRXXjk:C1IFRZZ
<d14a4jIR[[=vadd|LRXXi[93qt!t9ERXXi[93qt!t9ERZZ	{;T!$Q$ZHR[[<fQTTlKRXXj)3qt!t95RXXj)3qt!t95RZZ
+T!$Q$Z8R[[,fQTTl;XXbnnT156
HHR^^C34	HHR^^C34	XXbnnT156
xxvq 9:RXXj)95RXXj)95RZZ
+Z8R[[,l;r'   N)rd   re   rf   r   r  r  rH  rT  r!   r'   r$   r;  r;  1  sU    [[X (9 :G:G  [[WsCj1+< 2+<r'   r;  c                       e Zd Zej                  j                  dg d      ej                  j                  dddg      d               Zy)	TestLDExpr=   r0   r.   r-   r   r   r+   r   r  r   c           
         t        j                  g d|      }t        j                  g dd      }t        j                  d|      }t        t        j                  |d d |   |d d |   |d d |         t        j
                  d|      d d |          t        |d d |   t        j
                  d|      d d |          y )N)g      ?      ?rx   rK   rK   r  r  g       @r~   )r*   r   r   r   r   r-   r.   r/   rT  rm  r   )r6   r   r"  r	   ldexpr  )r_   r   r=   mantr#  r|   s         r$   
test_ldexpzTestLDExp.test_ldexps  s     xx>eLxx33?xx'RXXd8V8nc(F(mXvXOQSQXQXYZbgQhiqkqiqQrsS6]BGGAU$;HfH$EFr'   N)rd   re   rf   r   r  r  r\  r!   r'   r$   rV  rV  r  sE    [[X'78[[WsCj1G 2 9Gr'   rV  c                   J   e Zd Zej                  j                  dg d      ej                  j                  dddg      ej                  j                  ed      ej                  j                  e	j                  j                  d       d	      d
                             Zy)	TestFRExpr=   rW  r   r  r   gh23048r5  linuxzAnp.frexp gives different answers for NAN/INF on windows and linuxc           
         t        j                  t         j                  t         j                  t         j                  t         j                   ddddg|      }t        j                  t         j                  t         j                  t         j                  t         j                   ddddg|      }t        j                  g dd	      }t        j                  d
|      }dt        j                  d
d	      z  }t        j
                  |d d |   |d d |   |d d |   f      \  }}	t        |d d |   |       t        |d d |   |	       t        |d d |   |d d |          t        |d d |   |d d |          y )Nrs  r  rK   r  r~   rx         )r   r   r   r   r   r   r   r   rT  rm  r   r   )r6   r   r   rv  r  r   r	   )
r_   r   r=   r   	mant_trueexp_trueout_mantout_expr[  r#  s
             r$   
test_frexpzTestFRExp.test_frexp}  s3    hhdCNV[\HHbffbffbffrvvgsD#tT\ab	HH5SAGGAU+bggas++HHS6](F(1CWXvXEV0WX	cYxx($/Xhh'-Xhh'8V8)<=WXvX&6(:;r'   N)rd   re   rf   r   r  r  r  r   r  r  rD   rG   rg  r!   r'   r$   r^  r^  |  s    [[X'78[[WsCj1[[wy1[[CLL33G<<b  d
<d 2 2 9

<r'   r^  )r   rs  r  )r         Yr  )r   rK   r  )r   rh  r  )r!  absoluter  r  rintfloorr*  truncc                       e Zd Zd Zy)TestAVXUfuncsc                    t        j                  g d      }t         j                  j                  d       t        j                         D ]  \  }}|d   }|d   }|d   }t        dd      D ]r  }t        t         |      }t        j                  t         j                  j                  |||            }	t        j                  |	      }
t        j                  |	      } ||      }|dk(  rKt         ||	      t        j                  |             t         ||
      t        j                  |             nNt         ||	      t        j                  |      |       t         ||
      t        j                  |      |       |dkD  s  ||	      } ||
      }|D ]>  }t         ||
d d |         |d d |          t         ||	d d |         |d d |          @ u  y )	Nr  r  r   r   r   ro  r   maxulp)r6   r   r   r  
avx_ufuncsitemsr  getattrr  r  r#  
longdoubler	   r   )r_   r  funcprop	maxulperrminvalmaxvalr   myfuncx_f32r  x_f128	y_true128y_true32y_true64r  s                   r$   test_avx_based_ufuncz"TestAVXUfuncs.test_avx_based_ufunc  s   ((01
		r$**, 	JJD$QI!WF!WFa J T*

299#4#4f $5 $  

5)u-"6N	> 

90EF 

90EF(

98M#,.(

98M#,. !8%e}H%e}H% J$VE$B$K%8(4R4.I$VE$B$K%8(4R4.IJ'J	Jr'   N)rd   re   rf   r  r!   r'   r$   rn  rn    s    Jr'   rn  c                   $    e Zd Zd Zd Zd Zd Zy)TestAVXFloat32Transcendentalc                 d   t         j                  j                  d       t        j                  t         j                  j	                  ddd            }t        j
                  |      }t        t        j                  |      t        j                  t        j                  |            d       y )Nr  rs  fffffV@r  r   r*   rp  )r6   r   r  r  r  r#  r   r#  r_   r|  r  s      r$   test_exp_float32z-TestAVXFloat32Transcendental.test_exp_float32  i    
		r

299,,$G,LM

5!RVVE]BJJrvve},EaPr'   c                 d   t         j                  j                  d       t        j                  t         j                  j	                  ddd            }t        j
                  |      }t        t        j                  |      t        j                  t        j                  |            d       y )Nr  rs  r   r  r   r+   rp  )r6   r   r  r  r  r#  r   r  r  s      r$   test_log_float32z-TestAVXFloat32Transcendental.test_log_float32  r  r'   c                 4   t         j                  j                  d       d}t        j                  |dz        }t         j                  j	                  d||      }t        j
                  t         j                  j                  dd|            }t        d      s8t        j
                  d	t         j                  j                  |      z        ||<   t        j                  |      }t        t        j                  |      t        j
                  t        j                  |            d
       t        t        j                  |      t        j
                  t        j                  |            d
       |j                         }t        t        j                  ||      t        j
                  t        j                  |            d
       t        t        j                  ||      t        j
                  t        j                  |            d
       y )Nr  r     r   r   rh  r  r  g   vH7Br   rp  r   )r6   r   r  int_r   r  r  r   randr#  r   r  r  r   )r_   r  r]  indexr|  r  tx_f32s          r$   test_sincos_float32z0TestAVXFloat32Transcendental.test_sincos_float32  sJ   
		rGGAbDM		!!aaa!8

299,,Da,HI ( ::fRYY^^A->&>?E%L

5!RVVE]BJJrvve},EaPRVVE]BJJrvve},EaPRVVEu5rzz"&&-7PYZ[RVVF7BFF5M9R[\]r'   c           
      f   t         j                  j                  d       t        j                  g d      }t        j                  dd      }|D ]_  }t        j
                  t         j                  j                  dd|            }|j                         }d|d	d
d<   t        j                  |      }t        j                  |      }t        j                  |      }t        j                  |      }	|D ]  }
t        t        j                  |d d |
         |d d |
   d       t        t        j                  |d d |
         |d d |
   d       t        t        j                  |d d |
         |d d |
   d       t        t        j                  |d d |
         |	d d |
   d        b y )Nr  r  r   r*  r  r  r   g     L@r*   r-   r+   r  )r6   r   r  r   rY  r  r  r   r#  r  r  r  r   )r_   r  r  r  r|  x_f32_largerd  log_truesin_truecos_truer  s              r$   test_strided_float32z1TestAVXFloat32Transcendental.test_strided_float32  sh   
		r((01		!C  	bBJJryy00Tt0LME**,K"*K"Qvve}Hvve}Hvvk*Hvvk*H b.rvveDbDk/BHTrTNYZ[.rvveDbDk/BHTrTNYZ[.rvvk$B$6G/H(SWUWSW._`a.rvvk$B$6G/H(SWUWSW._`a	b	br'   N)rd   re   rf   r  r  r  r  r!   r'   r$   r  r    s    QQ^$br'   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestLogAddExpc                    g d}g d}g d}t        g dg d      D ]  \  }}t        j                  t        j                  ||            }t        j                  t        j                  ||            }t        j                  t        j                  ||            }t	        t        j
                  ||      ||        y r  )r   r6   r  r   r   	logaddexpr  s	            r$   test_logaddexp_valuesz#TestLogAddExp.test_logaddexp_values  s    O[9 	HHB"-.B"-.B"-.BR 4b$G		Hr'   c                     g d}g d}g d}dD ]g  }t        j                  ||      }t        j                  ||      }t        j                  ||      }t        t        j                  ||      |       i y r  )r6   r   r   r  r  s           r$   test_logaddexp_rangez"TestLogAddExp.test_logaddexp_range  sg    222! 	CBHHQb)EHHQb)EHHQb)EUE :EB		Cr'   c                    t         j                  }|| || |d| dg}||| | d|d| g}|||| ||ddg}t        j                  d      5  dD ]g  }t        j                  ||      }t        j                  ||      }t        j                  ||      }t	        t        j
                  ||      |       i 	 d d d        y # 1 sw Y   y xY wr  )r6   rv  rE  r   r	   r  r  s	            r$   r  zTestLogAddExp.test_inf  s    ff3$sdCcTA63sdAaC483sdCaA6[[) 	@% @"-"-"-R\\%7?	@	@ 	@ 	@r  c                    t        t        j                  t        j                  t        j                  t        j
                                     t        t        j                  t        j                  t        j
                  t        j                                     t        t        j                  t        j                  t        j                  d                   t        t        j                  t        j                  dt        j                                     t        t        j                  t        j                  t        j                  t        j                                     y r  )r   r6   rw  r  r   rv  r^   s    r$   r  zTestLogAddExp.test_nan
  s    bffbff567bffbff567bffa012a012bffbff567r'   c                     t        t        j                  j                  t        j                          t        t        j                  j                  g       t        j                          y r    )r	   r6   r  r  rv  r   r^   s    r$   r  zTestLogAddExp.test_reduce  s;    R\\**RVVG4R\\((,rvvg6r'   N)rd   re   rf   r  r  r  r  r  r!   r'   r$   r  r    s    HC
@87r'   r  c                       e Zd Zd Zd Zy)	TestLog1pc                     t        t        j                  d      t        j                  d             t        t        j                  d      t        j                  d             y )N皙?g333333?ư>gzo ?)r   rk   r  r  r^   s    r$   
test_log1pzTestLog1p.test_log1p  s6    CIIcNCGGCL9CIIdOSWWV_=r'   c                 v   t        j                  dd      5  t        t        j                  t         j
                        t         j
                         t        t        j                  t         j                        t         j                         t        t        j                  d      t         j                          t        t        j                  d      t         j
                         t        t        j                  t         j                         t         j
                         d d d        y # 1 sw Y   y xY w)NrX   rr  r  r  )r6   rE  r	   rk   r  r   rv  r^   s    r$   test_specialzTestLog1p.test_special  s    [[(; 	5266*BFF3266*BFF33"&&130BFF7+RVV4	5 	5 	5s   DD//D8N)rd   re   rf   r  r  r!   r'   r$   r  r    s    >5r'   r  c                       e Zd Zd Zd Zd Zy)	TestExpm1c                     t        t        j                  d      t        j                  d      dz
         t        t        j                  d      t        j                  d      dz
         y )Nr  r   r  )r   rk   r$  r#  r^   s    r$   r%  zTestExpm1.test_expm1%  s>    CIIcNCGGCLN;CIIdOSWWT]1_=r'   c                    t        t        j                  t        j                        t        j                         t        t        j                  d      d       t        t        j                  d      d       t        t        j                  t        j                        t        j                         t        t        j                  t        j                         d       y )Nrs  r  r  )r	   rk   r$  r6   rv  r^   s    r$   r  zTestExpm1.test_special)  su    SYYrvv&/SYYr]B'SYYs^S)SYYrvv&/SYYw'-r'   c                     t        j                  d      }t        |t        j                  |             |j                  t         j                        }t        |t        j                  |             y )Ng-q=)r6   r   r   rk   r$  r   ro  r2  s     r$   test_complexzTestExpm1.test_complex0  sF    JJu399Q<(HHR]]#399Q<(r'   N)rd   re   rf   r%  r  r  r!   r'   r$   r  r  $  s    >.)r'   r  c                       e Zd Zd Zd Zy)	TestHypotc                     t        t        j                  dd      t        j                  d             t        t        j                  dd      d       y Nr   r   r   )r   rk   hypotr!  r^   s    r$   test_simplezTestHypot.test_simple8  s2    CIIaOSXXa[9CIIaOQ/r'   c                 X   t        t        j                  j                  ddg      d       t        t        j                  j                  g d      d       t        t        j                  j                  g d      d       t	        t        j                  j                  g       d       y )Nr  r        @)r  r  r   )r  r        4@g      9@rs  )r   rk   r  r   r	   r^   s    r$   r  zTestHypot.test_reduce<  sk    CII,,c3Z8#>CII,,];SACII,,->?FSYY%%b)3/r'   N)rd   re   rf   r  r  r!   r'   r$   r  r  7  s    00r'   r  c                     t        j                  d      5  t        t        j                  t	        j
                  | |            d| d|dt	        j
                  | |      d       d d d        y # 1 sw Y   y xY w)NrX   rY   hypot(, ) is 	, not nan)r6   rE  r   rw  rk   r  r  s     r$   assert_hypot_isnanr  C  Y    	X	& J1a)23Q		!QH	JJ J J   AA22A;c                     t        j                  d      5  t        t        j                  t	        j
                  | |            d| d|dt	        j
                  | |      d       d d d        y # 1 sw Y   y xY w)NrX   rY   r  r  r  z	, not inf)r6   rE  r   rt  rk   r  r  s     r$   assert_hypot_isinfr  I  r  r  c                       e Zd Zd Zd Zd Zy)TestHypotSpecialValuesc                     t        t        j                  t        j                         t        t        j                  d       y Nr   )r  r6   r   r^   s    r$   test_nan_outputsz'TestHypotSpecialValues.test_nan_outputsP  s"    266266*2661%r'   c                    t        t        j                  t        j                         t        t        j                  t        j                         t        t        j                  d       t        dt        j                         t        t        j                  t        j                         t        t        j                  d       y )Nr   g      7@)r  r6   r   rv  r^   s    r$   test_nan_outputs2z(TestHypotSpecialValues.test_nan_outputs2T  sb    266266*266266*2661%1bff%266266*2664(r'   c                 V    t        t        j                  t        j                  d       y r  )r   rk   r  r6   rv  r^   s    r$   test_no_fpez"TestHypotSpecialValues.test_no_fpe\  s    399bffa0r'   N)rd   re   rf   r  r  r  r!   r'   r$   r  r  O  s    &)1r'   r  c                     t        t        j                  t        j                  | |            d| d|dt        j                  | |      d       y )Narctan(r  r  r  )r   r6   rw  rk   arctan2r  s     r$   assert_arctan2_isnanr  `  s7    BHHS[[A&'AqRUR]R]^_abRc)der'   c                     t        t        j                  t        j                  | |            xr t        j                  | |      dkD  d| d|dt        j                  | |      d       y )Nr   r  r  r  z
, not +infr   r6   rt  rk   r  r  s     r$   assert_arctan2_ispinfr  d  Z    RXXckk!Q'(BS[[A->-Bijlmorozoz{|~  pA  FB  Cr'   c                     t        t        j                  t        j                  | |            xr t        j                  | |      dk  d| d|dt        j                  | |      d       y )Nr   r  r  r  z
, not -infr  r  s     r$   assert_arctan2_isninfr  h  r  r'   c                     t        t        j                  | |      dk(  xr* t        j                  t        j                  | |             d| d|dt        j                  | |      d       y )Nr   r  r  r  z, not +0r   rk   r  r6   r  r  s     r$   assert_arctan2_ispzeror  l  se    S[[A!#IBJJs{{1a7H,I(Inoqrtwtt  AB  DE  uF  MG  Hr'   c                     t        t        j                  | |      dk(  xr) t        j                  t        j                  | |            d| d|dt        j                  | |      d       y )Nr   r  r  r  z, not -0r  r  s     r$   assert_arctan2_isnzeror  p  s^    S[[A!#E

3;;q!3D(Ejkmnpsp{p{|}  @A  qB  IC  Dr'   c                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestArctan2SpecialValuesc                 *   t        t        j                  dd      dt        j                  z         t        t        j                  dd      dt        j                  z         t        t        j                  dd      dt        j                  z         y )Nr   rY  r-         п      ?)r   rk   r  r6   rl   r^   s    r$   test_one_onez%TestArctan2SpecialValues.test_one_oneu  sY    CKK1-tbee|<CKKA.>CKK2.ruu=r'   c                 .   t        t        j                  t        j                  t        j
                        t        j                         t        t        j                  t        j
                  t        j
                        t        j                          y r    )r   rk   r  r6   PZERONZEROrl   r^   s    r$   test_zero_nzeroz(TestArctan2SpecialValues.test_zero_nzero{  sF    CKK"((;RUUCCKK"((;beeVDr'   c                     t        t        j                  t        j                         t        t        j                  t        j                         y r    r  r6   r  r  r  r^   s    r$   test_zero_pzeroz(TestArctan2SpecialValues.test_zero_pzero  s&    rxx2rxx2r'   c                     t        t        j                  t        j                  d      t        j
                         t        t        j                  t        j                  d      t        j
                          y )Nr-   r   rk   r  r6   r  rl   r  r^   s    r$   test_zero_negativez+TestArctan2SpecialValues.test_zero_negative  s>    CKK"5ruu=CKK"5v>r'   c                 l    t        t        j                  d       t        t        j                  d       y r  r  r^   s    r$   test_zero_positivez+TestArctan2SpecialValues.test_zero_positive  s    rxx+rxx+r'   c                     t        t        j                  dt        j                        dt        j
                  z         t        t        j                  dt        j                        dt        j
                  z         y )Nr   rx   r  r^   s    r$   test_positive_zeroz+TestArctan2SpecialValues.test_positive_zero  sD    CKK2884cBEEkBCKK2884cBEEkBr'   c                     t        t        j                  dt        j                        dt        j
                  z         t        t        j                  dt        j                        dt        j
                  z         y )Nr-   rb  r  r^   s    r$   test_negative_zeroz+TestArctan2SpecialValues.test_negative_zero  sD    CKKBHH5tbee|DCKKBHH5tbee|Dr'   c                     t        t        j                  dt        j                        t        j
                         t        t        j                  dt        j                        t        j
                          y Nr   r-   )r   rk   r  r6   NINFrl   r^   s    r$   test_any_ninfz&TestArctan2SpecialValues.test_any_ninf  s>    CKK2773bee<CKKBGG4ruuf=r'   c                 l    t        dt        j                         t        dt        j                         y r  )r  r6   rv  r  r^   s    r$   test_any_pinfz&TestArctan2SpecialValues.test_any_pinf  s    q"&&)r266*r'   c                    t        t        j                  t        j                  d      dt        j
                  z         t        t        j                  t        j                   d      dt        j
                  z         y )Nr   rx   rb  r   rk   r  r6   rv  rl   r^   s    r$   test_inf_anyz%TestArctan2SpecialValues.test_inf_any  sF    CKK3cBEEkBCKK3TBEE\Br'   c                 >   t        t        j                  t        j                  t        j                         dt        j
                  z         t        t        j                  t        j                   t        j                         dt        j
                  z         y )Nr  g      r  r^   s    r$   test_inf_ninfz&TestArctan2SpecialValues.test_inf_ninf  sR    CKK"&&9D255LICKK"&&95255=Ir'   c                 :   t        t        j                  t        j                  t        j                        dt        j
                  z         t        t        j                  t        j                   t        j                        dt        j
                  z         y )NrY  r  r  r^   s    r$   test_inf_pinfz&TestArctan2SpecialValues.test_inf_pinf  sN    CKK84"%%<HCKK8%"%%-Hr'   c                     t        t        j                  t        j                         t        t        j                  t        j                         t        t        j                  t        j                         y r    )r  r6   r   rv  r^   s    r$   test_nan_anyz%TestArctan2SpecialValues.test_nan_any  s8    RVVRVV,RVVRVV,RVVRVV,r'   N)rd   re   rf   r  r  r  r  r  r  r  r  r  r  r  r  r  r!   r'   r$   r  r  t  sI    >E
3
?
,
C
E
>
+
C
J
I
-r'   r  c                       e Zd Zd Zd Zd Zy)	TestLdexpc           	         t        t        j                  t        j                  dt        j
                        t        j                  d|            d       t        t        j                  t        j                  dt        j                        t        j                  d|            d       t        t        j                  t        j                  dt        j                        t        j                  d|            d       y )Nr  r*         0@)r   rk   rZ  r6   r   r  r#  ru  )r_   tps     r$   _check_ldexpzTestLdexp._check_ldexp  s    CIIbhhr2::&>&(hhq"o78;	=CIIbhhr2::&>&(hhq"o78;	=CIIbhhr2==&A&(hhq"o78;	=r'   c                 B   t        t        j                  dd      d       | j                  t        j
                         | j                  t        j                         | j                  t        j                         | j                  d       | j                  d       y )Nr  r*   r  rT  r   )r   rk   rZ  r  r6   int8rD  r   r^   s    r$   r\  zTestLdexp.test_ldexp  si    CIIb!,s3"''""((#"((###r'   c                    t        j                  d      5  t        j                  t        j                  d            j                  }t        j                  t        j                  d            j
                  }t        t        j                  d|      t         j                         t        t        j                  d|      d       d d d        y # 1 sw Y   y xY w)NrX   r  r   r  r   )
r6   rE  r  r   r  r;  r	   rk   rZ  rv  )r_   imaximins      r$   test_ldexp_overflowzTestLdexp.test_ldexp_overflow  s    [[h' 	188BHHSM*..D88BHHSM*..D2t,bff52t,a0		1 	1 	1s   B3CCN)rd   re   rf   r  r\  r  r!   r'   r$   r  r    s    =1r'   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestMaximumc                    t         j                  d   }t         j                  d   }t        j                  d      }|d d d   }t         j                  j                  }|D ]H  }|j                  |      }|j                  |      }t         ||      d       t         ||      d       J |D ]  }|j                  |      }|j                  |      }t         ||      d       t         ||      d       t         j                  |d d d<   t         j                  |d d d<   t         ||      t         j                         t         ||      t         j                          y )NAllFloatr  r  r-   r4   r   )r6   r  rY  maximumr   r   r	   r   	r_   dfltdintseq1seq2rv  r  tmp1tmp2s	            r$   r  zTestMaximum.test_reduce  s   ||J'||L)yy}DbDzzz   	)B;;r?D;;r?DdR(dR(		)
  	-B;;r?D;;r?DdR(dR(D1ID1IdRVV,dRVV,	-r'   c                     t        t        j                  j                  ddg      d       t        t        j                  j                  ddg      d       y Nr                  @y      ?      @)r	   r6   r  r   r^   s    r$   test_reduce_complexzTestMaximum.test_reduce_complex  s<    RZZ&&2w/3RZZ&&bz2D9r'   c                     t         j                  }t        j                  d||g      }t        j                  |d|g      }t        j                  |||g      }t        t        j                  ||      |       y r  )r6   r   r   r	   r  r_   r   arg1arg2r|   s        r$   test_float_nanszTestMaximum.test_float_nans  \    ffxxc3(xxa3(hhS#'RZZd+S1r'   c                 <   t        d      D ]  }t        j                  t        d      t              }d}t        j                  t        d      t              }t        t        j                  ||      dk(         t        t        j                  ||      dk(          y Nr   r   rK   )r  r6   r   r   r   r   r  r_   rT  rQ   r   r  s        r$   test_object_nanszTestMaximum.test_object_nans  t     q 	-Auv.AAuv.ABJJq!$+,BJJq!$+,	-r'   c                 h   t         j                  }t        |d      t        d|      t        ||      fD ]|  }t        j                  d||gt              }t        j                  |d|gt              }t        j                  |||gt              }t	        t        j
                  ||      |       ~ y Nr   r~   )r6   r   ru  r   r	   r  r_   r   r9  r  r  r|   s         r$   test_complex_nanszTestMaximum.test_complex_nans	      ffS!_gaowsC7HI 	6D88QdO7;D88T1dO7;D((Cc?':CD$/5		6r'   c                     t        j                  dt              }|dz   }t        t        j                  ||      |       y Nr,   r~   r   )r6   rY  r   r	   r  r_   r  r  s      r$   test_object_arrayzTestMaximum.test_object_array		  0    yy&)axRZZd+T2r'   c           
         t        j                  ddddt         j                  t         j                   t         j                  t         j                   g      }t        j                  ddt         j                  ddt         j                  ddg      }t        j                  ddt         j                  dt         j                  t         j                  t         j                  dg      }t        j                  d      }t        j                  ddddddt         j                  dg      }t        t        j                  ||      |       t        t        j                  |d d d	   |d d d	         |d d d	          t        t        j                  |d d
 |d d d	         t        j                  dt         j                  ddg             t        t        j                  |d d d   |d d       t        j                  ddt         j                  g             t        t        j                  |d dd	   |d d d   |d d d         t        j                  ddt         j                  g             t        ||       y Ng      rK   g      $@rs  r  r  r  rm  r   r+   r*   rs  r   )r6   r   r   rv  r  r	   r  )r_   r:   r;   maxtruer|   out_maxtrues         r$   test_strided_arrayzTestMaximum.test_strided_array	  s   xxsD3"&&QRxxdBFFCNO88T3RVVRVVRVVTRSggajhhc3c3LMRZZT*G4RZZSqS	$ss)4gcclCRZZSa	4!95rxxrvvtUX@Y7Z[RZZSqS	495rxxsBFF@S7TURZZTaT
D1I3ss8DbhhPTVY[][a[aObFcdS+&r'   c                    t         j                  t         j                  t         j                  t         j                  g}|D ]  }t        j
                  |      j                  }t        j
                  |      j                  } |d      }t        j                  |t         j                        }|t         j                   |f|t         j                   |f|||f|t         j                  t         j                  fg}|D ]T  \  }}	}
t        t        j                  |g|	g      |
g       t        t         j                  j                  ||	g      |
       V  y Nr.  )r6   r  r  r#  ru  r  r;  r  r  rv  r   r	   r  r   r_   r   r  dtmindtmaxd1d1_next
test_casesrR   rS   r  s              r$   test_precisionzTestMaximum.test_precision	  s   **bjj"**bmmD 	DBHHRL$$EHHRL$$ECBll2rvv.G E*E*G,BFF+J %/ D BRZZrd3hZ@RZZ..Bx8(CD	Dr'   Nrd   re   rf   r  r  r   r%  r*  r/  r5  r>  r!   r'   r$   r  r    s+    -*:2	-63
'Dr'   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestMinimumc                    t         j                  d   }t         j                  d   }t        j                  d      }|d d d   }t         j                  j                  }|D ]H  }|j                  |      }|j                  |      }t         ||      d       t         ||      d       J |D ]  }|j                  |      }|j                  |      }t         ||      d       t         ||      d       t         j                  |d d d<   t         j                  |d d d<   t         ||      t         j                         t         ||      t         j                          y )Nr  r  r  r-   r   r   )r6   r  rY  minimumr   r   r	   r   r  s	            r$   r  zTestMinimum.test_reduce2	  s   ||J'||L)yy}DbDzzz   	(B;;r?D;;r?DdQ'dQ'		(
  	-B;;r?D;;r?DdQ'dQ'D1ID1IdRVV,dRVV,	-r'   c                     t        t        j                  j                  ddg      d       t        t        j                  j                  ddg      d       y r  )r	   r6   rC  r   r^   s    r$   r  zTestMinimum.test_reduce_complexG	  s<    RZZ&&2w/4RZZ&&bz2B7r'   c                     t         j                  }t        j                  d||g      }t        j                  |d|g      }t        j                  |||g      }t        t        j                  ||      |       y r  )r6   r   r   r	   rC  r  s        r$   r   zTestMinimum.test_float_nansK	  r!  r'   c                 <   t        d      D ]  }t        j                  t        d      t              }d}t        j                  t        d      t              }t        t        j                  ||      dk(         t        t        j                  ||      dk(          y r#  )r  r6   r   r   r   r   rC  r$  s        r$   r%  zTestMinimum.test_object_nansR	  r&  r'   c                 h   t         j                  }t        |d      t        d|      t        ||      fD ]|  }t        j                  d||gt              }t        j                  |d|gt              }t        j                  |||gt              }t	        t        j
                  ||      |       ~ y r(  )r6   r   ru  r   r	   rC  r)  s         r$   r*  zTestMinimum.test_complex_nans]	  r+  r'   c                     t        j                  dt              }|dz   }t        t        j                  ||      |       y r-  )r6   rY  r   r	   rC  r.  s      r$   r/  zTestMinimum.test_object_arraye	  r0  r'   c           
         t        j                  ddddt         j                  t         j                   t         j                  t         j                   g      }t        j                  ddt         j                  ddt         j                  ddg      }t        j                  ddt         j                  dt         j                  t         j                  dt         j                   g      }t        j                  d      }t        j                  ddddddt         j                  dg      }t        t        j                  ||      |       t        t        j                  |d d d	   |d d d	         |d d d	          t        t        j                  |d d
 |d d d	         t        j                  dt         j                  ddg             t        t        j                  |d d d   |d d       t        j                  ddt         j                  g             t        t        j                  |d dd	   |d d d   |d d d         t        j                  ddt         j                  g             t        ||       y r2  )r6   r   r   rv  r  r	   rC  )r_   r:   r;   mintruer|   out_mintrues         r$   r5  zTestMinimum.test_strided_arrayj	  s   xxsD3"&&QRxxdBFFCNO88T4bffbffcBFF7STggajhhc3S#rvvsKLRZZT*G4RZZSqS	$ss)4gcclCRZZSa	4!95rxxrvvsTW@X7YZRZZSqS	495rxxtRVV@T7UVRZZTaT
D1I3ss8DbhhPTVY[][a[aObFcdS+&r'   c                    t         j                  t         j                  t         j                  t         j                  g}|D ]  }t        j
                  |      j                  }t        j
                  |      j                  } |d      }t        j                  |t         j                        }|t         j                  |f|t         j                  |f|||f|t         j                  t         j                  fg}|D ]T  \  }}	}
t        t        j                  |g|	g      |
g       t        t         j                  j                  ||	g      |
       V  y r7  )r6   r  r  r#  ru  r  r;  r  r  rv  r   r	   rC  r   r8  s              r$   r>  zTestMinimum.test_precisionw	  s   **bjj"**bmmD 	DBHHRL$$EHHRL$$ECBll2rvv.G E*E*B'BFF+J %/ D BRZZrd3hZ@RZZ..Bx8(CD	Dr'   Nr?  r!   r'   r$   rA  rA  1	  s+    -*82	-63
'Dr'   rA  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestFmaxc                    t         j                  d   }t         j                  d   }t        j                  d      }|d d d   }t         j                  j                  }|D ]H  }|j                  |      }|j                  |      }t         ||      d       t         ||      d       J |D ]  }|j                  |      }|j                  |      }t         ||      d       t         ||      d       t         j                  |d d d<   t         j                  |d d d<   t         ||      d       t         ||      d        y )Nr  r  r  r-   r4   r   rC  )r6   r  rY  fmaxr   r   r	   r   r  s	            r$   r  zTestFmax.test_reduce	  s   ||J'||L)yy}DbDzww~~ 	)B;;r?D;;r?DdR(dR(		)
  	(B;;r?D;;r?DdR(dR(D1ID1IdQ'dQ'	(r'   c                     t        t        j                  j                  ddg      d       t        t        j                  j                  ddg      d       y r  )r	   r6   rP  r   r^   s    r$   r  zTestFmax.test_reduce_complex	  s8    RWW^^QG,a0RWW^^T2J/6r'   c                     t         j                  }t        j                  d||g      }t        j                  |d|g      }t        j                  dd|g      }t        t        j                  ||      |       y r  )r6   r   r   r	   rP  r  s        r$   r   zTestFmax.test_float_nans	  \    ffxxc3(xxa3(hhQ#'RWWT4(#.r'   c                 h   t         j                  }t        |d      t        d|      t        ||      fD ]|  }t        j                  d||gt              }t        j                  |d|gt              }t        j                  dd|gt              }t	        t        j
                  ||      |       ~ y r(  )r6   r   ru  r   r	   rP  r)  s         r$   r*  zTestFmax.test_complex_nans	      ffS!_gaowsC7HI 	3D88QdO7;D88T1dO7;D((A!S>9Ct,c2		3r'   c                    t         j                  t         j                  t         j                  t         j                  g}|D ]  }t        j
                  |      j                  }t        j
                  |      j                  } |d      }t        j                  |t         j                        }|t         j                   |f|t         j                   |f|||f|t         j                  |fg}|D ]T  \  }}	}
t        t        j                  |g|	g      |
g       t        t         j                  j                  ||	g      |
       V  y r7  )r6   r  r  r#  ru  r  r;  r  r  rv  r   r	   rP  r   r8  s              r$   r>  zTestFmax.test_precision	  s   **bjj"**bmmD 	ABHHRL$$EHHRL$$ECBll2rvv.G E*E*G,E*J %/ A BRWWbTB408*=RWW^^RH5x@A	Ar'   Nrd   re   rf   r  r  r   r*  r>  r!   r'   r$   rN  rN  	  s    (*7/3Ar'   rN  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestFminc                    t         j                  d   }t         j                  d   }t        j                  d      }|d d d   }t         j                  j                  }|D ]H  }|j                  |      }|j                  |      }t         ||      d       t         ||      d       J |D ]  }|j                  |      }|j                  |      }t         ||      d       t         ||      d       t         j                  |d d d<   t         j                  |d d d<   t         ||      d       t         ||      d        y )Nr  r  r  r-   r   r   r   )r6   r  rY  fminr   r   r	   r   r  s	            r$   r  zTestFmin.test_reduce	  s   ||J'||L)yy}DbDzww~~ 	(B;;r?D;;r?DdQ'dQ'		(
  	(B;;r?D;;r?DdQ'dQ'D1ID1IdQ'dQ'	(r'   c                     t        t        j                  j                  ddg      d       t        t        j                  j                  ddg      d       y r  )r	   r6   r[  r   r^   s    r$   r  zTestFmin.test_reduce_complex	  s8    RWW^^QG,b1RWW^^T2J/4r'   c                     t         j                  }t        j                  d||g      }t        j                  |d|g      }t        j                  dd|g      }t        t        j                  ||      |       y r  )r6   r   r   r	   r[  r  s        r$   r   zTestFmin.test_float_nans	  rS  r'   c                 h   t         j                  }t        |d      t        d|      t        ||      fD ]|  }t        j                  d||gt              }t        j                  |d|gt              }t        j                  dd|gt              }t	        t        j
                  ||      |       ~ y r(  )r6   r   ru  r   r	   r[  r)  s         r$   r*  zTestFmin.test_complex_nans	  rU  r'   c                    t         j                  t         j                  t         j                  t         j                  g}|D ]  }t        j
                  |      j                  }t        j
                  |      j                  } |d      }t        j                  |t         j                        }|t         j                  |f|t         j                  |f|||f|t         j                  |fg}|D ]T  \  }}	}
t        t        j                  |g|	g      |
g       t        t         j                  j                  ||	g      |
       V  y r7  )r6   r  r  r#  ru  r  r;  r  r  rv  r   r	   r[  r   r8  s              r$   r>  zTestFmin.test_precision	  s   **bjj"**bmmD 	ABHHRL$$EHHRL$$ECBll2rvv.G E*E*B'E*J %/ A BRWWbTB408*=RWW^^RH5x@A	Ar'   NrW  r!   r'   r$   rY  rY  	  s    (*5/3Ar'   rY  c                   $    e Zd Zd Zd Zd Zd Zy)TestBoolc                 
   t        j                  dt         j                        }t        t        t         j
                  |       t        t        t         j                  |       t        t        t         j                  ||       y )Nr   r~   )r6   r  r   r
   r   negativepositivesubtractr   s     r$   test_exceptionszTestBool.test_exceptions
  sH    GGARXX&ia0ia0ia3r'   c                    g d}g d}t         j                  d   t         j                  d   z   dz   }t        t         j                  |      D ]  }t        j                  ||      }t        j                  ||      }g d}t         j
                  t         j                  fD ](  }t         |||      j                  t              |       * g d}t         j                  t         j                  fD ](  }t         |||      j                  t              |       * g d	}t         j                  t         j                  fD ](  }t         |||      j                  t              |       * ! y )
N)r   r   r*   r   )r   r+   r   r   r  r  ?r~   FTTTFFFTFTTF)r6   r  mapr   r   
logical_orr  r	   r   r   logical_andrC  logical_xorr   )	r_   input1input2r  r   r  r  r|   rv  s	            r$   test_truth_table_logicalz!TestBool.test_truth_table_logical
  s4   \\*-||L12	 9- 	AE::fE2D::fE2D ,C

3 AT$-44T:C@A .C4 AT$-44T:C@A -C6 AT$-44T:C@A	Ar'   c                     g d}g d}g d}t        t        j                  ||      |       g d}t        t        j                  ||      |       g d}t        t        j                  ||      |       y )N)FFTT)FTFTri  rj  rk  )r	   r6   
bitwise_orbitwise_andbitwise_xor)r_   r  r  r|   s       r$   test_truth_table_bitwisez!TestBool.test_truth_table_bitwise+
  sZ    ))'R]]4.4)R^^D$/5(R^^D$/5r'   c                 X   t        j                  g dt              }t        j                  g dt              }t        j                  g dt              }t        j                  g t              }||||g}|D ]4  }t        t         j                  j                  |      t        |             6 |D ]4  }t        t         j                  j                  |      t        |             6 |D ]?  }t        t         j                  j                  |      |j                         dz  dk(         A y )N)r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )r6   r   r   r	   rn  r   rF  rm  anyro  r$  )r_   nonesomeeveryr   arrsr   s          r$   r  zTestBool.test_reduce8
  s    xxd+xxd+t,T"dE5) 	?C..s3SX>	?  	>C--c2CH=	>  	IC..s3SWWY]a5GH	Ir'   N)rd   re   rf   rf  rr  rw  r  r!   r'   r$   ra  ra  
  s    4A26Ir'   ra  c                       e Zd ZdD  cg c]  }t        j                  |       c}}} Zd Zd Zd Zd Z	yc c}}} w )TestBitwiseUFuncsz?bBhHiIlLqQOc                 v   | j                   D ])  }t        j                  dg|      }t        j                  dg      j                  |      }d|j                  z  }t        t        j                  |      ||       t        t        j                  |      ||       t        t        j                  ||      ||       t        t        j                  ||      ||       t        t        j                  ||      ||       t        t        j                  ||      ||       t        t        j                  ||      ||       t        t        j                  ||      ||       t        t        j                  ||      ||       t        t        j                  ||      ||       t        t        j                  ||      ||       t        t        j                  ||      ||       t        t        j                  ||      ||       t        t        j                  ||      ||       , y )Nr   r~   r-   	dt = '%s'rm  )
bitwise_typesr6   r   r   charr	   bitwise_notrt  rv  ru  r_   r  r"  r  rP  s        r$   test_valueszTestBitwiseUFuncs.test_valuesN
  s   $$ 	HBHHaS+E88RD>((,D'C.cB-ucBue4eSIud3T3GtU3T3GtT2D#Fu5ucJt4dCHe4dCHd3UCHu5ucJt4eSIe4eSId3T3G+	Hr'   c                 (   | j                   D ]  }t        j                  dg|      }t        j                  dg      j                  |      }d|j                  z  }t        t        j                  |      j                  |k(  |       t        t        j                  ||      j                  |k(  |       t        t        j                  ||      j                  |k(  |       t        t        j                  ||      j                  |k(  |        y )Nr   r~   r-   r  )r  r6   r   r   r  r   r  r   rt  rv  ru  r  s        r$   
test_typeszTestBitwiseUFuncs.test_typesf
  s    $$ 	CBHHaS+E88RD>((,D'CBNN5)//25s;BMM%/55;SABNN5%066"<cBBNN5%066"<cB	Cr'   c                     t        t        j                  j                  dk(  d       t        t        j                  j                  dk(  d       t        t        j
                  j                  dk(  d       y )Nr   rt  rv  r-   ru  )r   r6   rt  r  rv  ru  r^   s    r$   test_identityzTestBitwiseUFuncs.test_identityq
  sM    &&!+\:''1,m<''2-}=r'   c                 4   t         j                  t         j                  t         j                  f}| j                  D ]  }t        j
                  dg|      }t        j
                  dg      j                  |      }|D ]E  }d|d|d}t        |j                  |      ||       t        |j                  |      ||       G  | j                  d d D ]  }t        j
                  g |      }|D ]{  }d|d|d}t        j
                  |j                        j                  |      }|j                  |      }	t        |	||       t        |	j                  |j                  k(  |       }  |D ]N  }d|d}t        j
                  g t              }|j                  }|j                  |      }	t        |	||       P |D ]N  }d|d}t        j
                  dgt              }
t        t        |j                  |
            t        u |       P y )	Nr   r~   r-   zdt: 'z', f: ''rm  T)r6   rt  rv  ru  r  r   r   r	   r   r  r   r   r   r   r   )r_   binary_funcsr  r"  r  r  rP  r   r  r#   btypes              r$   test_reductionz TestBitwiseUFuncs.test_reductionv
  s   r~~r~~F$$ 	@BHHaS+E88RD>((,D! @-/3QXXe_eSAQXXd^T3?@	@ $$Sb) 	5BHHRr*E! 5-/3hhqzz*11"5hhuoS#s3		SYY.45	5  	0A !#CHHRv.E**C((5/Cc3/	0  	8A !#CHHdV62ED%)T137	8r'   N)
rd   re   rf   r6   r   r  r  r  r  r  )r  cr6   s   000r$   r  r  J
  s:    *BCCQRXXa[CMH0	C>
%8U Ds   9r  c                       e Zd Zd Zy)TestIntc                    t        j                  dt         j                        }t        j                  dt              }|j	                         }d|d d d<   |d d d   }t        t        j                  ||      d       t        ||       y )Nr4   r~   r  Fr   r   )r6   r  rD  r   r   r   logical_not)r_   rQ   r   r  oss        r$   test_logical_notzTestInt.test_logical_not
  sj    GGBbhh'GGF$'ffhCaCssV2>>!4e<1c"r'   N)rd   re   rf   r  r!   r'   r$   r  r  
  s    #r'   r  c                       e Zd Zd Zy)TestFloatingPointc                 8    t        t        j                  d       y r  )r	   rk   FLOATING_POINT_SUPPORTr^   s    r$   test_floating_pointz%TestFloatingPoint.test_floating_point
  s    S//3r'   N)rd   re   rf   r  r!   r'   r$   r  r  
  s    4r'   r  c                       e Zd Zd Zy)TestDegreesc                     t        t        j                  t        j                        d       t        t        j                  dt        j                  z        d       y )N     f@rb       V)r   rk   degreesr6   rl   r^   s    r$   test_degreeszTestDegrees.test_degrees
  s4    CKK.6CKKRUU
3U;r'   N)rd   re   rf   r  r!   r'   r$   r  r  
      <r'   r  c                       e Zd Zd Zy)TestRadiansc                     t        t        j                  d      t        j                         t        t        j                  d      dt        j                  z         y )Nr  r  rb  )r   rk   radiansr6   rl   r^   s    r$   test_radianszTestRadians.test_radians
  s4    CKK.6CKK.RUU
;r'   N)rd   re   rf   r  r!   r'   r$   r  r  
  r  r'   r  c                       e Zd Zd Zy)TestHeavsidec                 "   t        j                  g ddt         j                  t         j                  t         j                   gg      }t        j                  g ddt         j                  ddgg      }|j	                         }d|d<   t        j                  |d      }t        ||       t        j                  |d      }t        ||       |j                  t         j                        }t        j                  |t        j                  d            }t        ||j                  t         j                               t        j                  |t        j                  d            }t        ||j                  t         j                               y )	N)g      >r/  rs  r  g      @)rs  rs  rx   rK   rK   rs  r   r   r   rx   )
r6   r   r   rv  r   rk   	heavisider	   r   r  )r_   rQ   expectedhalf	expected1hs        r$   test_heavisidezTestHeavside.test_heaviside
  s   HH-RVVRVVbffW/MNOxx!5RVVS#7N OP %%'		$MM!S!Q%MM!S!Q	"HHRZZ MM!RZZ_-Q++BJJ78MM!RZZ_-Q	((45r'   N)rd   re   rf   r  r!   r'   r$   r  r  
  s    6r'   r  c                       e Zd Zd Zd Zd Zy)TestSignc                    t        j                  t         j                  t         j                   t         j                  dddg      }t        j                  |j
                        }t        j                  ddt         j                  dddg      }t        j                  d      5  t        j                  |      }t        ||       t        j                  ||      }t        ||       t        ||       d d d        y # 1 sw Y   y xY w)Nrs  r  r  rK   r  rX   rY   )
r6   r   rv  r   r"  rF  rE  rk   rF  r	   )r_   r   r|   r  r#   s        r$   	test_signzTestSign.test_sign
  s    HHbffrvvgrvvsC>?hhqwwhhCc489[[* 	#((1+Cc"((1c"Cc"c"	# 	# 	#s   %AC>>Dc                     t        j                  g d      }t        j                  |j                  t                    }t        j                  |      }t        ||       y )N)r/  r   r.  )r6   r   rF  r   r   r   )r_   foor   r   s       r$   test_sign_dtype_objectzTestSign.test_sign_dtype_object
  s@     hh|$GGCJJv&'GGCL1a r'   c                 *    d }t        t        |       y )Nc                      t        j                  t         j                  g      } t        j                  | j	                  t
                    }y r    )r6   r   r   rF  r   r   )r  r   s     r$   r  z5TestSign.test_sign_dtype_nan_object.<locals>.test_nan
  s-    ((BFF8$C

6*+Ar'   )r
   r   )r_   r  s     r$   test_sign_dtype_nan_objectz#TestSign.test_sign_dtype_nan_object
  s    	,
 	i*r'   N)rd   re   rf   r  r  r  r!   r'   r$   r  r  
  s    
#!+r'   r  c                   $    e Zd Zd Zd Zd Zd Zy)
TestMinMaxc           
         t         j                  dft         j                  dffD ]?  \  }}t        |d|      D ]'  \  }t	        j
                        D ]  }t        j                  j
                  |      d d  t         j                  |<   fd}t               5 }|j                  t        d       t        t        j                  j                               |       t        t        j                  j                               |       d d d        d	|<   t        j                         d	
       d|<   t        j                         d
       
 * B y # 1 sw Y   UxY w)NrI  rz  r  r  r~   c                       dS )N
r!   )r"  rP  s   r$   r%   z0TestMinMax.test_minmax_blocked.<locals>.<lambda>
  s    sC#8 r'   z#invalid value encountered in reduce)rP  g    _Brm  g    _)r6   r  r#  r   r  r   rY  r   r   r  r  r   rw  r  r;  r	   )	r_   r  szr|   rT  emsgr  r"  rP  s	          @@r$   test_minmax_blockedzTestMinMax.test_minmax_blocked
  s0    

B'"**a9 	@FB!42G>@"B @S#sxx @AYYsxxr:CFVVCF8D*, ?

>#HJ 3> 3>	? "CF D#>"CF E3?@@	@? ?s   $A3E+	+E4c                    t        j                  dt         j                        dd j                  t         j                        }t        |j                         |d          t        |j                         |d          y )N   r~   r+   r0   r   )r6   r"  r  r   r#  r	   r  r;  r_   r   s     r$   test_lower_alignzTestMinMax.test_lower_align  sV     HHV277+Ab166rzzBQUUWad#QUUWad#r'   c                 V   dD ]  }t         j                  t         j                  t         j                  fD ]p  }t        j                  t        j
                  t         j                  g|z  |            D ]/  }t        t        j                  |      t         j                         1 r  y )N)r   r+   rm  rn  ro  r~   )	r6   r  r  	complex64diagflatr   r   r	   r;  )r_   r=  r  r   s       r$   test_reduce_reorderzTestMinMax.test_reduce_reorder  sx     # 	4Azz2::r||< 4RXXrvvhl"%EF 4A BFF344	4r'   c                     t        j                  t         j                  d      }t        |t         j                         y r  )r6   rC  r   r	   r   s     r$   test_minimize_no_warnsz!TestMinMax.test_minimize_no_warns  s$    JJrvvq!Qr'   N)rd   re   rf   r  r  r  r  r!   r'   r$   r  r  
  s    @*$4 r'   r  c                       e Zd Zd Zd Zej                  j                  dg d      ej                  j                  dddg      d               Zy	)
TestAbsoluteNegativec           	         t         j                  dft         j                  dffD ]  \  }}t        |d|      D ]  \  }}}|D cg c]  }t	        j
                  |       }}t        j
                  ||       t        |||       t        |dk\  j                                |D cg c]  }d|z  	 }}t        j                  ||       t        |||       t         j                  t         j                   t         j                  fD ]  }t        |j                        D ]  }t        j                  |j                  |	      }	|	 |d d  |||<   |t         j                   k(  r| n||	|<   t        t        j                   |      |	|       t        j                   ||       t        ||	|       t        | d|z  |       d|z  }	t        j                  ||       t        ||	|           y c c}w c c}w )
Nr  r,   r  r  r   rm  r   r-   r~   )r6   r  r#  r   rk   ri  r	   r   rF  rc  r   rv  r  r   rY  r   rP   )
r_   r  r  r|   r"  rP  rT  r  r{  r   s
             r$   test_abs_neg_blockedz)TestAbsoluteNegative.test_abs_neg_blocked  s   

B'"**a9 	@FB!42G>@"B @S#0341s||A44CS)S#s3()'*+!r1v++CS)S#s3&&266'2662 @A"388_ @IIchhb9"#A!"A%&266'\rq!*266#;3Gs,*33?*C4CEHCS1*33?@@@	@ 5
 ,s   G<)Hc                    t        j                  dt         j                        dd j                  t         j                        }t        t        j                  |      |       t        t        j                  |      |        t        j                  ||       t        j                  t        j                  |      |       t        j                  ||       t        j                  t        j                  |      |       y )Nr  r~   r+   r0   r   )	r6   r"  r  r   r#  r	   rP   rc  rO  r  s     r$   r  z%TestAbsoluteNegative.test_lower_align8  s     HHV277+Ab166rzzBRVVAY"R[[^aR(
A1
BLLO+
qa
r||AA&r'   r   )r   r  r   r   bigTFc                 b   t        j                  g d|      }t        j                  g d|      }|r,t        j                  |d      }t        j                  |d      }t        j                  |j                  |      }|dd d   }|dd d   }t        j                  |      }t        t        j                  |      |dd d          t        t        j                  ||      |dd d          t        t        j                  |      |dd d          t        t        j                  ||      |dd d          t        j                  t        j                  |d            }	t        j                  t        j                  |d            }
t        t        j                  |	      |
       y )N)r  rK   r  rs  r=  r        @rs  r>  ir4   r~   )rK   r  rs  r  r>  r  r  rs  r  r=  rm  r,  r4   r   r   r   )	r6   r   repeatr   rF  r   rc  rK  r	   )r_   r   r  r+  expectr|   rL  rM  rN  rO  expect_splits              r$   test_noncontiguousz'TestAbsoluteNegative.test_noncontiguousC  s\    xx 5<AC 5<AC99T2&DYYvr*Fjj51!$Q$Z
!$Q$iHHZ(	2;;y16!$Q$<@2;;ykB &qt!t	. 	2;;z2F14a4LA2;;z{C &qt!t	. XXbnnT156
xxvq 9:R[[,l;r'   N)	rd   re   rf   r  r  r   r  r  r  r!   r'   r$   r  r    sQ    @:	' [[W&BC[[UT5M2< 3 D<r'   r  c                       e Zd Zd Zd Zy)TestPositivec                     t         t        t        t        g}|D ]E  }t	        j
                  d|      }t	        j                  |      }t        ||t        |             G y )Nr,   r~   rm  )	r   r   ru  r   r6   rY  rd  r	   str)r_   valid_dtypesr   rQ   r  s        r$   
test_validzTestPositive.test_validb  sL    UGV4! 	8E		!5)A[[^FFCJ7	8r'   c                 Z   t        t              5  t        j                  d       d d d        t        t              5  t        j                  t        j                  d             d d d        t        t              5  t        j                  t        j
                  dgt                     d d d        t        t              5  t        j                  t        j
                  dgt                     d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   y xY w)NTz
2000-01-01r  r~   bar)r
   r   r6   rd  
datetime64r   r  r   r^   s    r$   test_invalidzTestPositive.test_invalidi  s    9% 	KK	9% 	5KKl34	59% 	6KK%45	69% 	9KK%78	9 	9	 		5 	5	6 	6	9 	9s.   C=)D	=0D0D!=D	DD!D*N)rd   re   rf   r  r  r!   r'   r$   r  r  a  s    89r'   r  c                   &   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zej                  j                  dddg      d        Zej                  j                  dddg      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestSpecialMethodsc                 ~    G fdd              }t        j                  ||      }t        |j                  t	        j
                  d             |j                  \  }}}t        |t         j                  u        t        t        |      d       t        |d   |       t        |d   |       t        |d       y )Nc                       e Zd Zd Z fdZy)/TestSpecialMethods.test_wrap.<locals>.with_wrapc                 ,    t        j                  d      S r  r6   r"  r^   s    r$   	__array__z9TestSpecialMethods.test_wrap.<locals>.with_wrap.__array__x      xx{"r'   c                 2            }||_         ||_        |S r    )r   r   )r_   r   r   r   	with_wraps       r$   r   z>TestSpecialMethods.test_wrap.<locals>.with_wrap.__array_wrap__{  s    K#	r'   Nrd   re   rf   r  r   r  s   r$   r  r  w  s    #r'   r  r   r   r   )	rk   rC  r	   r   r6   r"  r   r   r  )r_   r   rQ   rv  argsrT  r  s         @r$   	test_wrapzTestSpecialMethods.test_wrapu  s    	 	 KKK1QUUBHHQK(		dA#$SY"T!Wa T!Wa Qr'   c                     G d dt         j                        fd} |d d         |d d         |d d	         |d
 d         |d d         |d d         |d d         |d d         |d d        y )Nc                   <    e Zd ZdZdZd Zd Zd Zed        Z	d Z
y)KTestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrapNc                 J    t        j                  d      j                  |       S rb   )r6   r"  r   r   s    r$   r   zSTestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrap.__new__  s    xx|((--r'   c                     |d   | _         |S r  )
_wrap_argsr_   objr   s      r$   r   zZTestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrap.__array_wrap__  s    ")!*
r'   c                     |d   | _         |S r  )_prepare_argsr  s      r$   __array_prepare__z]TestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrap.__array_prepare__  s    %,QZ"
r'   c                 2    | j                   | j                  fS r    )r  r  r^   s    r$   r  zPTestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrap.args  s     **DOO<<r'   c                      y)Nr   r!   r^   s    r$   __repr__zTTestSpecialMethods.test_wrap_and_prepare_out.<locals>.StoreArrayPrepareWrap.__repr__      r'   )rd   re   rf   r  r  r   r   r  propertyr  r  r!   r'   r$   StoreArrayPrepareWrapr    s4    J M. = =r'   r  c                 <           } | |       |j                   \  }} ||      }	 t        ||       t        ||       y # t        $ rP}t        dj                  ddj	                  |      dj	                  |      dj	                  |      g            d }~ww xY w)Nr  z"Bad arguments passed in ufunc callz expected:              {}z __array_prepare__ got: {}z __array_wrap__ got:    {})r  r	   AssertionErrorjoinformat)f_call
f_expectedr   r:  r  r  ro   r  s          r$   do_testz=TestSpecialMethods.test_wrap_and_prepare_out.<locals>.do_test  s    %'A1I66DAq!!}H
Q)Q)! $TYY8077A077:077:	0 &  s   A 	BABBc                 .    t        j                  | d      S r  r6   r   r   s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  s    "&&A, r'   c                 
    | dfS r  r!   r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  
    1v r'   c                 0    t        j                  | dd       S r  r  r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  s    "&&At, r'   c                 
    | dfS r  r!   r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  r  r'   c                 2    t        j                  | dd       S Nr   r   r  r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  s    "&&A40 r'   c                 
    | dfS r  r!   r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  r  r'   c                 2    t        j                  | dd      S )Nr   r    r   r  r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  s    "&&A73 r'   c                 
    | dfS r  r!   r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  r  r'   c                 0    t        j                  dd|       S r  r  r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  s    "&&Aq/ r'   c                     dd| fS r  r!   r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>      1ay r'   c                 2    t        j                  dd|       S r  r  r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  s    "&&A1- r'   c                     dd| fS r  r!   r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  r  r'   c                 4    t        j                  dd| f      S r  r  r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  s    "&&AA40 r'   c                     dd| fS r  r!   r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  r  r'   c                 2    t        j                  | dd      S Nr   Fr  r  r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  s    "&&AU3 r'   c                 
    | dfS r  r!   r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  r  r'   c                 4    t        j                  dd| d      S r!  r  r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  s    "&&Aq6 r'   c                     dd| fS r  r!   r  s    r$   r%   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  s    1a) r'   )r6   r   )r_   r  r  s     @r$   test_wrap_and_prepare_outz,TestSpecialMethods.test_wrap_and_prepare_out  s    	BJJ 	&	$ 	&5EF,5EF05EF35EF 	)5HI-5HI05HI 	35EF68KLr'   c                      G d dt         j                        } |       }t        j                  |d      }t	        t        ||             t        |t        j                  d             y )Nc                       e Zd ZdZd Zd Zy)=TestSpecialMethods.test_wrap_with_iterable.<locals>.with_wrapr4   c                 f    t        j                  d      j                  |       j                         S r  r   r  s    r$   r   zETestSpecialMethods.test_wrap_with_iterable.<locals>.with_wrap.__new__  s$    zz!}))#.3355r'   c                 6    |j                  t        |             S r    r   r   s      r$   r   zLTestSpecialMethods.test_wrap_with_iterable.<locals>.with_wrap.__array_wrap__  r   r'   Nr   r!   r'   r$   r  r)    s    !#6,r'   r  r   )r6   r   rk   multiplyr   r   r   r   r_   r  r   rQ   s       r$   test_wrap_with_iterablez*TestSpecialMethods.test_wrap_with_iterable  sM    	,

 	, KLLI&
1i()1bhhy12r'   c                      G d dt         j                        } |       }t        j                  d      |z  }t        t	        ||             t        |t        j                  d             y )Nc                       e Zd ZdZd Zy)7TestSpecialMethods.test_priority_with_scalar.<locals>.Ar4   c                 h    t        j                  dd      j                  |       j                         S )NrK   r#  r   r  s    r$   r   z?TestSpecialMethods.test_priority_with_scalar.<locals>.A.__new__  s'    zz#y166s;@@BBr'   N)rd   re   rf   r   r   r!   r'   r$   Ar1    s    !#Cr'   r3  r   )r6   r   r#  r   r   r   r   )r_   r3  r   rQ   s       r$   test_priority_with_scalarz,TestSpecialMethods.test_priority_with_scalar  sO    	C

 	C CJJqM!O
1a !1bhhqk*r'   c                      G fdd              }t        j                  ||      }t        |j                  t	        j
                  d             y )Nc                       e Zd Zd Z fdZy)3TestSpecialMethods.test_old_wrap.<locals>.with_wrapc                 ,    t        j                  d      S r  r  r^   s    r$   r  z=TestSpecialMethods.test_old_wrap.<locals>.with_wrap.__array__  r  r'   c                 $            }||_         |S r    )r   )r_   r   r   r  s      r$   r   zBTestSpecialMethods.test_old_wrap.<locals>.with_wrap.__array_wrap__  s    Kr'   Nr  r  s   r$   r  r7    s    #r'   r  r   )rk   rC  r	   r   r6   r"  )r_   r   rQ   r  s      @r$   test_old_wrapz TestSpecialMethods.test_old_wrap  s<    	 	 KKK1QUUBHHQK(r'   c                     G d d      } G d d|      } G d d|      }t        j                  d      } |       } |       } |       }t        j                  }t	        t         |||            t         j                  u        t	        t         |||            |u        t	        t         |||            |u        t	        t         |||            |u        t	        t         |||            |u        t	        t         |||            |u        t	        t         |||            |u        t	        t         |||            |u        t	        t         |||            |u        t	        t         |||            |u        t	        t         |||            |u        t	        t         |||            |u        t	        t         |||            |u        t	        t         |||            |u        t	        t        t        j                  |      |u              t	        t        t        j                  |      |u              t	        t        t        j                  |      |u              y )Nc                       e Zd Zd Zd Zy)+TestSpecialMethods.test_priority.<locals>.Ac                 ,    t        j                  d      S r  r  r^   s    r$   r  z5TestSpecialMethods.test_priority.<locals>.A.__array__  r  r'   c                 B     t        |              }||_        ||_        |S r    )r   r   r   )r_   r   r   r   s       r$   r   z:TestSpecialMethods.test_priority.<locals>.A.__array_wrap__  s"    DJL#	r'   Nr  r!   r'   r$   r3  r=    s    #r'   r3  c                       e Zd ZdZy)+TestSpecialMethods.test_priority.<locals>.Br  Nrd   re   rf   r   r!   r'   r$   BrA        !$r'   rC  c                       e Zd ZdZy)+TestSpecialMethods.test_priority.<locals>.Cg      D@NrB  r!   r'   r$   CrF    rD  r'   rG  r   )r6   r"  rk   rC  r   r   r   r#  )	r_   r3  rC  rG  rQ   r   r   r  r  s	            r$   test_priorityz TestSpecialMethods.test_priority  s   	 		% 	%	% 	% HHQKCCCKKQq!W+,Qq!W"#Qq!W"#Qq!W"#Qq!W"#Qq!W"#Qq!W"#Qq!W"#Qq!W"#Qq!W"#Qq!W"#Qq!W"#Qq!W"#Qq!W"#SWWQZ1_%&SWWQZ1_%&SWWQZ1_%&r'   c                      G d d      } |       }t        t        t        j                  ||       t        t        t        j                  j                  |       y )Nc                       e Zd Zd Zd Zy)/TestSpecialMethods.test_failing_wrap.<locals>.Ac                 ,    t        j                  d      S Nr   r  r^   s    r$   r  z9TestSpecialMethods.test_failing_wrap.<locals>.A.__array__  r  r'   c                     t         r    RuntimeErrorr   s      r$   r   z>TestSpecialMethods.test_failing_wrap.<locals>.A.__array_wrap__!      ""r'   Nr  r!   r'   r$   r3  rK    s    ##r'   r3  )r
   rP  rk   r  r   r_   r3  r   s      r$   test_failing_wrapz$TestSpecialMethods.test_failing_wrap  s=    	# 	# ClCKKA6lCKK$6$6:r'   c                    t        j                  dg       G fddt         j                        } G d dt         j                        }t        j                  d      j	                  |      }t        j                  d      j	                  |      }t        d      D ]#  }t        t        t        j                  d||       % y )NrK   c                       e Zd Z fdZy)4TestSpecialMethods.test_failing_out_wrap.<locals>.Okc                     S r    r!   )r_   r  	singletons     r$   r   zCTestSpecialMethods.test_failing_out_wrap.<locals>.Ok.__array_wrap__-  s	      r'   Nrd   re   rf   r   )rX  s   r$   OkrV  ,  s    !r'   rZ  c                       e Zd Zd Zy)5TestSpecialMethods.test_failing_out_wrap.<locals>.Badc                     t         r    rO  r_   r  s     r$   r   zDTestSpecialMethods.test_failing_out_wrap.<locals>.Bad.__array_wrap__1  rQ  r'   NrY  r!   r'   r$   Badr\  0      #r'   r_  r   r4   )
r6   r   r   r   r   r  r
   rP  rk   r   )r_   rZ  r_  okbadrT  rX  s         @r$   test_failing_out_wrapz(TestSpecialMethods.test_failing_out_wrap(  s    HHcUO		! 	!	#"** 	# XXa[b!hhqks#r 	?A,		1b#>	?r'   c                 f     G d d      } |       }t        t        j                  ||      d        y )Nc                       e Zd Zd ZddZy),TestSpecialMethods.test_none_wrap.<locals>.Ac                 ,    t        j                  d      S r  r  r^   s    r$   r  z6TestSpecialMethods.test_none_wrap.<locals>.A.__array__>  r  r'   Nc                      y r    r!   r   s      r$   r   z;TestSpecialMethods.test_none_wrap.<locals>.A.__array_wrap__A      r'   r    r  r!   r'   r$   r3  rf  =  s    #r'   r3  )r	   rk   r  rR  s      r$   test_none_wrapz!TestSpecialMethods.test_none_wrap:  s*    	 	 CS[[A&-r'   c                      G d d      } |       }t        j                  ||      }t        |t        j                  d             t        t        |      t        j                         y )Nc                       e Zd ZdZd Zd Zy):TestSpecialMethods.test_default_prepare.<locals>.with_wrapr4   c                 ,    t        j                  d      S r  r  r^   s    r$   r  zDTestSpecialMethods.test_default_prepare.<locals>.with_wrap.__array__L  r  r'   c                     |S r    r!   r   s      r$   r   zITestSpecialMethods.test_default_prepare.<locals>.with_wrap.__array_wrap__O  s    
r'   N)rd   re   rf   r   r  r   r!   r'   r$   r  rm  I  s    !##r'   r  r   )rk   rC  r	   r6   r"  r   r   r-  s       r$   test_default_preparez'TestSpecialMethods.test_default_prepareG  sI    	 	 KKK1Q$T!Wbjj)r'   	use_whereTFc                 v    G fddt         j                        t        j                  d      j                        }|r,t        j                  ||t        j                  d            }nt        j                  ||      }t        |t        j                  d             t        t        |             y )Nc                       e Zd ZdZ fdZy)5TestSpecialMethods.test_prepare.<locals>.with_preparer4   c                 N    t        j                  |      j                        S Nr   r6   r   r   r_   r   r   with_prepares      r$   r  zGTestSpecialMethods.test_prepare.<locals>.with_prepare.__array_prepare__]  s    xx}))|)<<r'   Nrd   re   rf   r   r  rz  s   r$   rz  rt  Z  s    !#=r'   rz  r   rw  Tr"  r   )r6   r   r   r   r   r	   r   r_   rq  r   rQ   rz  s       @r$   test_preparezTestSpecialMethods.test_prepareW  s|    	=2:: 	= HHQK,/q!288D>2Aq!AQ$T!Wl+r'   c                     G fddt         j                        t        j                  dg      j                        }|rt        j                  |||dg      }nt        j                  |||      }t        t        j                  ||              t        |t        j                  dg             t        t        |             y )Nc                       e Zd ZdZ fdZy)9TestSpecialMethods.test_prepare_out.<locals>.with_preparer4   c                 N    t        j                  |      j                        S rv  rx  ry  s      r$   r  zKTestSpecialMethods.test_prepare_out.<locals>.with_prepare.__array_prepare__o  s    xx}))|)<<r'   Nr{  r|  s   r$   rz  r  l  s    !#=r'   rz  r   rw  Tr"  r   )	r6   r   r   r   r   r   shares_memoryr	   r   r}  s       @r$   test_prepare_outz#TestSpecialMethods.test_prepare_outi  s    	=2:: 	= HHaSML1q!Qtf-Aq!QA 	B$$Q**+Q!&T!Wl+r'   c                      G d d      } |       }t        t        t        j                  ||       t        t        t        j                  ||d       y )Nc                       e Zd Zd ZddZy)2TestSpecialMethods.test_failing_prepare.<locals>.Ac                 ,    t        j                  d      S r  r  r^   s    r$   r  z<TestSpecialMethods.test_failing_prepare.<locals>.A.__array__  r  r'   Nc                     t         r    rO  r   s      r$   r  zDTestSpecialMethods.test_failing_prepare.<locals>.A.__array_prepare__  rQ  r'   r    )rd   re   rf   r  r  r!   r'   r$   r3  r    s    ##r'   r3  Fr"  )r
   rP  rk   r  rR  s      r$   test_failing_preparez'TestSpecialMethods.test_failing_prepare}  s;    	# 	# ClCKKA6lCKKAUCr'   c                 f     G d d      } |       }t        t        dt        j                  |       y )Nc                       e Zd Zd Zy)6TestSpecialMethods.test_array_too_many_args.<locals>.Ac                 ,    t        j                  d      S r  r  )r_   r   r   s      r$   r  z@TestSpecialMethods.test_array_too_many_args.<locals>.A.__array__  r  r'   N)rd   re   rf   r  r!   r'   r$   r3  r    r`  r'   r3  z2 required positional)r   r   r6   r$  rR  s      r$   test_array_too_many_argsz+TestSpecialMethods.test_array_too_many_args  s(    	# 	# CI'>Jr'   c                 p    G d d      } G d dt         j                        } |       }t        j                  dg      j                  |      }t        j                  ||      }t        j                  |||      }t        |d   |       t        |d   |       t        |d   t         j                         t        |d   t         j                         t        |d   d	       t        |d   d	       t        |d
   ||f       t        |d
   ||f       t        |d   i        t        |d   d|fi       y )Nc                       e Zd Zd Zy)1TestSpecialMethods.test_ufunc_override.<locals>.Ac                     | ||||fS r    r!   r_   rv  methodinputskwargss        r$   __array_ufunc__zATestSpecialMethods.test_ufunc_override.<locals>.A.__array_ufunc__  s    T66699r'   Nrd   re   rf   r  r!   r'   r$   r3  r    s    :r'   r3  c                       e Zd ZdZy)9TestSpecialMethods.test_ufunc_override.<locals>.MyNDArrayr*  NrB  r!   r'   r$   	MyNDArrayr    rD  r'   r  r   r   r   r   __call__r*   r+   r|   )r6   r   r   r   r,  r	   )r_   r3  r  r   r   res0r  s          r$   test_ufunc_overridez&TestSpecialMethods.test_ufunc_override  s   	: 	:	%

 	% CHHaSMy){{1a {{1aQ' 	T!Wa T!Wa T!Wbkk*T!Wbkk*T!Wj)T!Wj)T!Wq!f%T!Wq!f%T!Wb!T!Wuqdm,r'   c                 >   d }d }t        j                  |dd      }t        j                  |dd      } G d d      } G d d	|      } G d
 d      } G d d      } G d d|      }	 |       }
 |       } |       } |       }t        j                  |
|      }t        |d	       t        j                  ||      }t        |d	       t        j                  ||
      }t        |d       t        |j                  d       t        j                  ||
      }t        |j                  d        |       } |	       }t        t        t         j                  ||       t        |j                  d       t        |j                  d       dx|_        |_        t        t        t         j                  ||       t        |j                  d       t        |j                  d       d|_        t        t        t         j                  ||       t        |j                  d       d|_        t        t        t         j                  d|       t        |j                  d       t         ||
dd      d       t         |d|
d      d       t         |dd|
      d       t         ||
|
d      d       t         ||
d|
      d       t         ||
d|      d       t         ||
d|      d	       t         ||
|d      d	       d|_        t         |||d      d	       t        |j                  d       d|_        t         |d||      d	       t        |j                  d       d|_        t         ||
||      d       t        |j                  d       d|_        t         ||
||      d       t        |j                  d       t         |dd|      d       t        t        |dd|       t        t        ||d|       t        t        ||dd       t         ||
ddd      d       t         |d|
dd      d       t         |dd|
d      d       t         |d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        |ddd|       t        |j                  d       d|_        t        t        |dd||       t        |j                  d       t        |j                  d        |       }dx|_        |_        t        t        |d|||       t        |j                  d       t        |j                  d       t        |j                  d       dx|_        x|_        |_        t        t        |||||       t        |j                  d       t        |j                  d       t        |j                  d       y )Nc                     | |z  |z  S r    r!   )r   r   r  s      r$   tres_mulz<TestSpecialMethods.test_ufunc_override_mro.<locals>.tres_mul  s    q519r'   c                     | |z  |z  |z  S r    r!   )r   r   r  r   s       r$   
quatro_mulz>TestSpecialMethods.test_ufunc_override_mro.<locals>.quatro_mul  s    q519q= r'   r*   r   r+   c                       e Zd Zd Zy)5TestSpecialMethods.test_ufunc_override_mro.<locals>.Ac                      y)Nr3  r!   r  s        r$   r  zETestSpecialMethods.test_ufunc_override_mro.<locals>.A.__array_ufunc__  r  r'   Nr  r!   r'   r$   r3  r        r'   r3  c                       e Zd Zd Zy)8TestSpecialMethods.test_ufunc_override_mro.<locals>.ASubc                      y)NASubr!   r  s        r$   r  zHTestSpecialMethods.test_ufunc_override_mro.<locals>.ASub.__array_ufunc__  s    r'   Nr  r!   r'   r$   r  r        r'   r  c                       e Zd Zd Zy)5TestSpecialMethods.test_ufunc_override_mro.<locals>.Bc                      y)NrC  r!   r  s        r$   r  zETestSpecialMethods.test_ufunc_override_mro.<locals>.B.__array_ufunc__  r  r'   Nr  r!   r'   r$   rC  r    r  r'   rC  c                       e Zd Zd Zd Zy)5TestSpecialMethods.test_ufunc_override_mro.<locals>.Cc                     d| _         y r  )countr^   s    r$   __init__z>TestSpecialMethods.test_ufunc_override_mro.<locals>.C.__init__  s	    
r'   c                 8    | xj                   dz  c_         t        S r  r  NotImplementedr  s        r$   r  zETestSpecialMethods.test_ufunc_override_mro.<locals>.C.__array_ufunc__      

a
%%r'   N)rd   re   rf   r  r  r!   r'   r$   rG  r    s    &r'   rG  c                       e Zd Zd Zy)8TestSpecialMethods.test_ufunc_override_mro.<locals>.CSubc                 8    | xj                   dz  c_         t        S r  r  r  s        r$   r  zHTestSpecialMethods.test_ufunc_override_mro.<locals>.CSub.__array_ufunc__  r  r'   Nr  r!   r'   r$   CSubr    s    &r'   r  r   r   rs  )r6   
frompyfuncr,  r	   r  r
   r   )r_   r  r  three_mul_ufuncfour_mul_ufuncr3  r  rC  rG  r  r   a_subr   r  r#   c_subc2s                    r$   test_ufunc_override_mroz*TestSpecialMethods.test_ufunc_override_mro  s   		! --!Q7z1a8	 		1 		 		& 	&	&1 	&
 CCC kk!U#S&!kk%#S&! kk!QS#QWWa kk!QQWWa  Cia7QWWa U[[!$ !!%+ieQ7QWWa U[[!$ia3QWWa ia3QWWa  	_Q1-s3_Q1-s3_Q1-s3_Q1-s3_Q1-s3_Q1-s3_Q516:_Qq16:_Qq16:QWWa _Qq16:QWWa _Q1-s3QWWa _Q5137U[[!$_Q1-s3i!Q:i%A>i%A> 	^Aq!Q/5^Aq!Q/5^Aq!Q/5^Aq!Q/5^Aq!Q/5^Aq!Q/5^Aq!Q/5^E1a3V<^Aq!U3V<CiAq!<QWWa iAua@U[[!$QWWa S !!%+iAubAU[[!$QWWa RXXq!+,,,"(U[iQqAU[[!$QWWa RXXq!r'   c           
          G d d      } |       }t        t              5  t        j                  j	                  d|dd       d d d        t        j                  j	                  d|dd      }t        |d   |       t        |d   t        j                         t        |d	   d
       t        |d   d|f       t        |d   ddd       t        t        t        j                  |       t        t        t        j                  ||||       t        t        t        j                  ||dd       t        t        t        j                  ||dddg       t        j                  j                  |dddd      }t        |d   |       t        |d   t        j                         t        |d	   d       t        |d   |f       t        |d   ddddd       t        j                  j                  |dddddd      }t        |d   |       t        |d   t        j                         t        |d	   d       t        |d   |f       t        |d   ddddddd       t        j                  j                  |dd d d      }t        |d   dd dd       t        j                  j                  |d dd      }t        |d   ddd       t        j                  j                  |d d d !      }t        |d   d d d"       t        j                  j                  |dd d dd	d      }t        |d   dd dd	dd#       t        j                  j                  |dd d dt        j                  d      }t        |d   dd ddd$       t        j                  j                  |dd d dd d      }t        |d   dd dd dd#       t        t        t        j                  j                  |d%&       t        t        t        j                  j                  |d'&       t        t        t        j                  j                  |dd(       t        j                  j                  |ddd      }t        |d   |       t        |d   t        j                         t        |d	   d)       t        |d   |f       t        |d   dddd*       t        j                  j                  |ddd+      }t        |d   |       t        |d   t        j                         t        |d	   d)       t        |d   |f       t        |d   dddd*       t        j                  j                  |dd d       }t        |d   dd d"       t        j                  j                  |d dd,-      }t        |d   dd,d"       t        j                  j                  |d d d !      }t        |d   d d d"       t        t        t        j                  j                  |d%&       t        t        t        j                  j                  |d'&       t        t        t        j                  j                  |dd(       t        j                  j                  |dd	gddd      }t        |d   |       t        |d   t        j                         t        |d	   d.       t        |d   |dd	gf       t        |d   dddd*       t        j                  j                  |dd	gddd+      }t        |d   |       t        |d   t        j                         t        |d	   d.       t        |d   |dd	gf       t        |d   dddd*       t        j                  j                  |dd	gdd d       }t        |d   dd d"       t        j                  j                  |dd	gd d d/0      }t        |d   d d/d"       t        j                  j                  |dd	gd d d &      }t        |d   d d d"       t        t        t        j                  j                  |dd	gd%&       t        t        t        j                  j                  |dd	gd'&       t        t        t        j                  j                  |dd	gdd(       t        j                  j                  |d      }t        |d   |       t        |d   t        j                         t        |d	   d1       t        |d   |df       t        |d   i        t        t        t        j                  j                  |       t        t        t        j                  j                  ||||       t        t        t        j                  j                  ||dd       t        j                  j                  |dd	gd2      }t        |d   |       t        |d   t        j                         t        |d	   d3       t        |d   |dd	gd2f       t        t        t        j                  j                  |       t        t        t        j                  j                  ||||       y # 1 sw Y   
xY w)4Nc                       e Zd Zd Zy)9TestSpecialMethods.test_ufunc_override_methods.<locals>.Ac                     | ||||fS r    r!   r_   r'  r  r  r  s        r$   r  zITestSpecialMethods.test_ufunc_override_methods.<locals>.A.__array_ufunc__7      UFFF::r'   Nr  r!   r'   r$   r3  r  6      ;r'   r3  r   r  r  )r  answer)rz   r  r   r   r  r*   r+   r   )r   r   )axisaxesaxis0dtype0out0keep0r   )r  )r   r|   keepdimsr  init0where0)r  r   r|   r  initialr  )r   r|   r  r  r  r  F)r  r   r  T)r|   r  r  )r  r  r    )r|   r   )r  r   )r  r   r  r  r  )r  r   r  r  r!   r   )r  out1r  r   )r   r|   r  )r  r   r|   dtype1)r|   r  r   reduceatr  )r  r|   r   outerb0at)r
   r   r6   r,  r  r	   	ncu_testsinner1dr   _NoValuer   r   r  r  r  )r_   r3  r   r#   s       r$   test_ufunc_override_methodsz.TestSpecialMethods.test_ufunc_override_methods4  s   	; 	;
 C9% 	=KK  A5 <	=kk""1auB"?SVQSVR[[)SVZ(SVaV$SVur:; 	ia0iaAq9iasKi!2!2Aqq1vN kk  GXvwGSVQSVR[[)SVX&SVaT"SVh%.*1&-/ 	0 kk  f*17'/ ! 1 	SVQSVR[[)SVX&SVaT"SVh%.*1&-)0'/1 	2 kk  AtT59SVa$EJKkk  1t DSVaT:;kk  DgT BSVdT:;kk  AtT5!TBSVa$E)*T; 	< kk  AtT5!#d4SVa$E'+- 	. kk  AtT5$ESVa$E)-> 	? 	j"++"4"4aR@j"++"4"4a=MNi!3!3QgN kk$$Q6BSVQSVR[[)SV\*SVaT"SVh%.&-/ 	0
 kk$$QWH)/ % 1SVQSVR[[)SV\*SVaT"SVh%.&-/ 	0
 kk$$Q46SVa$78kk$$QDq$ISVa(;<kk$$Q'$FSVdT:; 	j"++"8"8!Dj"++"8"8!*	,i!7!7G	- kk""1q!fgxHSVQSVR[[)SVZ(SVa!Q[)SVh%.&-/ 	0
 kk""1q!f7('- # /SVQSVR[[)SVZ(SVa!Q[)SVh%.&-/ 	0
 kk""1q!fat<SVa$78kk""1q!f4T"NSVdT:;kk""1q!fdDg"FSVdT:; 	j"++"4"4a!QRHj"++"4"4a!Q*	,i!3!3QAG	- kk2&SVQSVR[[)SVW%SVaW%SVR  	i!2!2A6i!2!2Aq!Q?i!2!2AqcSQ kknnQA-SVQSVR[[)SVT"SVa!Q./ 	i3iAq!<C	= 	=s   $i""i,c                 Z    G d d      } G d d      } |       } |       }t        j                  ||d      }t        j                  ||d      }t        j                  d|d      }t        j                  d|d      }t        j                  |d	d      }	t        j                  |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        j                  |dd      }t        j                  |dd      }t        |d   d   d       t        |d   d   d       t        |d   d   d       t        |d   d   d       t        t        j                  |d       i k(         t        t        j                  |d       i k(         t        t        j                  |d      i k(         t        t        j                  |d       i k(         t        t        j                  |d d       i k(         t        t        j                  |d      i k(         t        t              5  t        j                  |d        d d d        t        t        t         j                  ||dd       t        t        t         j                  ||dd       t        t        t         j                  ||d       t        t        t         j                  |d       t        t        t         j                  |dd       t        t        t         j                  |ddd       t        t        t         j                  |d       t        t        t         j                  |d       y # 1 sw Y   xY w)Nc                       e Zd Zd Zy)5TestSpecialMethods.test_ufunc_override_out.<locals>.Ac                     |S r    r!   r  s        r$   r  zETestSpecialMethods.test_ufunc_override_out.<locals>.A.__array_ufunc__      r'   Nr  r!   r'   r$   r3  r    r  r'   r3  c                       e Zd Zd Zy)5TestSpecialMethods.test_ufunc_override_out.<locals>.Bc                     |S r    r!   r  s        r$   r  zETestSpecialMethods.test_ufunc_override_out.<locals>.B.__array_ufunc__  r  r'   Nr  r!   r'   r$   rC  r    r  r'   rC  out_argr   r   r*   r+   r,   r|   r   r  r  r   r    )NNr8  twor8  r  r!   )r  threer  )r8  r  r  )r8  )
r6   r,  r	   modfr   r   r  r
   r   r   )r_   r3  rC  r   r   r  r  r  res3res4res5res6res7s                r$   test_ufunc_override_outz*TestSpecialMethods.test_ufunc_override_out  s   	 		 	 CC{{1a+{{1aY/{{1a+{{1aY/{{1a+{{1aY/T%[^Y/T%[^Y/T%[^Y/T%[^Y/T%[^Y/T%[^Y/ wwq&&)xx66*T%[^V,T%[^V,T%[^V,T%[^V, 	q$2%&qd#r)*qg&",-4 B&'4&",-|,239% 	!GGA4 	! 	iaEuEiaE5Aj"++q!HiaR8i!U8HIi!UE7Cj"''12IJj"''1(;	! 	!s   1N  N*c                     G d dt         j                        } G d d|      }t         j                  }t        j                  g d      }t        j                  g d      } |||      }t	        j
                  t              5   |||j                  |             d d d         |||j                  |            }t        ||      sJ t        j                  t        j                  |      |k(  |      sJ  ||j                  |      |j                  |            }t        ||      sJ t        j                  t        j                  |      |k(  |      sJ y # 1 sw Y   xY w)Nc                   $     e Zd Zd Z fdZ xZS )HTestSpecialMethods.test_ufunc_override_where.<locals>.OverriddenArrayOldc                     t        |       }g }|D ]Y  }t        ||      rt        j                  |      }n$t        |      t        j                  k7  rt
        c S |j                  |       [ |S r    )r   r   r6   r   r   r  append)r_   objsr   r  r  s        r$   _unwrapzPTestSpecialMethods.test_ufunc_override_where.<locals>.OverriddenArrayOld._unwrap  s_    4j 'C!#s+ hhsmcbjj0--MM#&' r'   c                 *   | j                  |      }|t        u rt        S |j                         }d|v r(| j                  |d         |d<   |d   t        u rt        S t        |   ||g|i |}|t        ur|j                  t        |             }|S )Nr|   )r  r  r   superr  r   r   r_   r'  r  r  r  r   	__class__s         r$   r  zXTestSpecialMethods.test_ufunc_override_where.<locals>.OverriddenArrayOld.__array_ufunc__&  s    f-^+))F?$(LL$?F5Me}6--G+E6MFMfMN*tDz*Ar'   )rd   re   rf   r  r  __classcell__r  s   @r$   OverriddenArrayOldr    s    	 r'   r  c                        e Zd Z fdZ xZS )HTestSpecialMethods.test_ufunc_override_where.<locals>.OverriddenArrayNewc                    |j                         }d|v r4| j                  |d   f      |d<   |d   t        u rt        S |d   d   |d<   t        |   ||g|i |}|t        ur|j                  t        |             }|S )Nr  r   )r   r  r  r  r  r   r   r  s         r$   r  zXTestSpecialMethods.test_ufunc_override_where.<locals>.OverriddenArrayNew.__array_ufunc__9  s    f$&*llF7O3F&GF7Og.8--*0/!*<wG+E6MFMfMN*tDz*Ar'   rd   re   rf   r  r   r  s   @r$   OverriddenArrayNewr  8  s     r'   r  r   )TFTr"  )
r6   r   rc  r   r   r   r   r   r   rF  )	r_   r  r  r'  r   r  r  result_1result_2s	            r$   test_ufunc_override_wherez,TestSpecialMethods.test_ufunc_override_where  s2   	 	>	!3 	" #,-e,]]9% 	?%uzz*<=>	? **/0
 ($6777vvbhhx(H4EBBBJJ)***/0
 ($6777vvbhhx(H4EBBB	? 	?s   E$$E-c                      G d d      } |       }t        t        t        j                  d|       t        t        t        j                  |       t        t        t        j                  d|       y )Nc                       e Zd Zd Zy);TestSpecialMethods.test_ufunc_override_exception.<locals>.Ac                     t        d      )Noops)r   )r_   r   r  s      r$   r  zKTestSpecialMethods.test_ufunc_override_exception.<locals>.A.__array_ufunc__c  s     ((r'   Nr  r!   r'   r$   r3  r  b  s    )r'   r3  r   r   rK   )r
   r   r6   rc  r@  rR  s      r$   test_ufunc_override_exceptionz0TestSpecialMethods.test_ufunc_override_exception`  sI    	) 	) Cj"++qa8j"++q1j"))R3r'   c                 ~    G d d      }d}t        t        t        j                  |            5  t	        j
                   |              d d d        d}t        t        t        j                  |            5  t	        j                   |       t               d       d d d        y # 1 sw Y   ]xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy)ATestSpecialMethods.test_ufunc_override_not_implemented.<locals>.Ac                     t         S r    )r  r_   r  r  s      r$   r  zQTestSpecialMethods.test_ufunc_override_not_implemented.<locals>.A.__array_ufunc__n  s    %%r'   Nr  r!   r'   r$   r3  r  m  s    &r'   r3  zjoperand type(s) all returned NotImplemented from __array_ufunc__(<ufunc 'negative'>, '__call__', <*>): 'A'zoperand type(s) all returned NotImplemented from __array_ufunc__(<ufunc 'add'>, '__call__', <*>, <object *>, out=(1,)): 'A', 'object', 'int'r   r   )r   r   fnmatch	translater6   rc  r   r   )r_   r3  rP  s      r$   #test_ufunc_override_not_implementedz6TestSpecialMethods.test_ufunc_override_not_implementedk  s    	& 	&K G,=,=c,BC 	KK	1 !G,=,=c,BC 	)FF13a(	) 	)	 		) 	)s   B'8&B3'B03B<c                     G d d      } |       }d}t        t        |      5  t        j                  |d       d d d        t        t        |      5  t        j                  d|       d d d        t        t        |      5  t        j                  |       d d d         G d d      } |       }t        t        j                  |      |u        t        t        |      5  t        j                  ||       d d d        t        t        |      5  t        j                  |d|       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   _xY w# 1 sw Y   y xY w)Nc                       e Zd ZdZy)?TestSpecialMethods.test_ufunc_override_disabled.<locals>.OptOutNr  r!   r'   r$   OptOutr  ~  s    "Or'   r  z(operand 'OptOut' does not support ufuncsr   c                       e Zd Zd Zy)DTestSpecialMethods.test_ufunc_override_disabled.<locals>.GreedyArrayc                     | S r    r!   r  s      r$   r  zTTestSpecialMethods.test_ufunc_override_disabled.<locals>.GreedyArray.__array_ufunc__  s    r'   Nr  r!   r'   r$   GreedyArrayr        r'   r   r   )r   r   r6   r   rc  r   )r_   r  opt_outrP  r   greedys         r$   test_ufunc_override_disabledz/TestSpecialMethods.test_ufunc_override_disabled|  s+   	# 	# ( 9 C0 	FF7A	 C0 	FF1g	 C0 	!KK 	!	 	 F#v-. C0 	$FF67#	$ C0 	+FF61'*	+ 	+%	 		 		! 	!	$ 	$	+ 	+s;   D2D>E
!EE"2D;>E
EE"E+c                 l    G d d      }t         j                  } |       } |||      }t        |d   |       t        |d   |       t        |d   d       t        |d   ||f       t        |d   i         |dd|	      }t        |d   |       t        |d   |       t        |d   d       t        |d   d
       t        |d   d|fi       t        t        ||d	       t        t        |||dd	       t        t        |||dd       t        t
        |||d	       t        t
        |||d	       y )Nc                       e Zd Zd Zy)2TestSpecialMethods.test_gufunc_override.<locals>.Ac                     | ||||fS r    r!   r  s        r$   r  zBTestSpecialMethods.test_gufunc_override.<locals>.A.__array_ufunc__  r  r'   Nr  r!   r'   r$   r3  r'    r  r'   r3  r   r   r   r  r*   r+   r   )r   r   r|   r  r8  r  r!   )r  r  r	   r
   r   r   )r_   r3  r  r   r#   s        r$   test_gufunc_overridez'TestSpecialMethods.test_gufunc_override  s#   	; 	; ##CamSVQSVW%SVZ(SVaV$SVR a"SVQSVW%SVZ(SVV$SVeaT]+ 	i!7i!Q5Ai!Qu=j'1a^Dj'1aR8r'   c                     G fddt         j                         G fdd      }t        j                  d      }t        j                  d      j                        }t        j                  |      }t        j                  |      }t        t        j                  ||k(               t        |j                  ddgi       t        j                  ||f      }t        t        j                  ||k(               t        |j                  d	dgi       t        ||u        t        j                  d      j                        }t        j                  ||      }t        t        j                  ||k(               t        |j                  dgdgd
       t        j                  d      j                        }t        j                  |      \  }}t        |j                  ddgi       t        j                  |d |f      \  }}t        ||u        t        |j                  d	dgi       t        j                  d      j                        }t        j                  d      j                        }t        j                  |||f      \  }}	t        ||u        t        |	|u        t        |j                  dgddgd
       t        j                  d      j                        }t        j                  d      j                        }t        j                  |||      }
t        |
|u        t        |
j                  ddgdgd
       t        j                  d      } |       }t        |j                  t         j                  d||      t        u        t        |j                  t         j                  d||      t        u        t        t        t         j                  ||       |j                        }t        |j                  t         j                  d||      t        u        t        |j                  t         j                  d||      dk(         t        t        j                  ||      dk(         t        j                  g dg dg      }|j                        }|j!                         }
|j!                         }t        |
|       t        |
j                  ddgi       |j#                         }
|j#                         }t        |
|       t        |
j                  ddgi       t        j                  d      j                        }|j#                  |      }
t        |
|       t        |
|u        t        |
j                  dgdgd
       |j#                  d      }t        j$                  |      j                        }|j#                  d|      }
t        |
|       t        |
|u        t        |
j                  dgdgd
       t         j                  j'                  |d      }t         j                  j'                  |d      }
t        |
|       t        |
j                  ddgi       t        j$                  |
      }t         j                  j'                  |dd |      }
t        |
|       t        |
|u        t        |
j                  dgdgd
       t         j                  j)                  |d      }t         j                  j)                  |d      }
t        |
|       t        |
j                  ddgi       t        j$                  |
      }t         j                  j)                  |dd |      }
t        |
|       t        |
|u        t        |
j                  dgdgd
       g d}t         j                  j+                  ||d      }t         j                  j+                  ||d      }
t        |
|       t        |
j                  ddgi       t        j$                  |
      }t         j                  j+                  ||dd |      }
t        |
|       t        |
|u        t        |
j                  dgdgd
       t        j                  g dg dg      }|j-                         }|j-                         j                        }t         j                  j/                  |ddgddgfd       t         j                  j/                  |ddgddgfd       t        ||       t        |j                  ddgi       t        j                  d      j                        }|j-                         j                        }t         j                  j/                  |ddgddgf|       t        ||       t        |j                  dddgi       y )Nc                   (     e Zd Zdd fd
Z xZS )<TestSpecialMethods.test_ufunc_override_with_super.<locals>.ANr   c                z   g }g }t        |      D ]b  \  }}	t        |	      r@|j                  |       |j                  |	j                  t        j
                               R|j                  |	       d |}
g }|
rg }t        |
      D ]b  \  }}t        |      r@|j                  |       |j                  |j                  t        j
                               R|j                  |       d t        |      |d<   nd|j                  z  }
i }|r||d<   |r||d<   t        | $  ||g|i |}|t        u rt        S |dk(  rt        |d         r
||d   _        y |j                  dk(  r|f}t        fdt        ||
      D              }|rt        |d         r
||d   _        t        |      dk(  r|d   S |S )	Nr|   r    r  outputsr  r   r   c              3   t   K   | ]/  \  }}|$t        j                  |      j                        n| 1 y wr    )r6   r   r   )r  r  outputr3  s      r$   r  z_TestSpecialMethods.test_ufunc_override_with_super.<locals>.A.__array_ufunc__.<locals>.<genexpr>  sB       M$2FF %+N "$F!3!8!8!;8>"?  Ms   58)	enumerater   r  r   r6   r   tuplenoutr  r  r  infor   r  )r_   r'  r  r|   r  r  r  in_norT  input_r.  out_noout_argsjr0  r4  resultsr3  r  s                    r$   r  zLTestSpecialMethods.test_ufunc_override_with_super.<locals>.A.__array_ufunc__  s   !*6!2 ,IAv!&!,QFKK

$;<F+, !H%.w%7 4	6%fa0"MM!,$OOFKK

,CD$OOF34 %*(OF5M%

2G%*DN&,DO'1% C37C;ACn,))T>!&)Q/)-q	::?&jG  M69'76K M M z'!*a8&*GAJO%(\Q%6wqzCGCr'   r  )r  r3  s   @r$   r3  r,    s    BF 1D 1Dr'   r3  c                       e Zd Z fdZy)<TestSpecialMethods.test_ufunc_override_with_super.<locals>.Bc                 :    t        fd|D              ryt        S )Nc              3   6   K   | ]  }t        |        y wr    )r   )r  r6  r3  s     r$   r  z_TestSpecialMethods.test_ufunc_override_with_super.<locals>.B.__array_ufunc__.<locals>.<genexpr>  s     Bz&!,Bs   A!)ry  r  )r_   r'  r  r  r  r3  s        r$   r  zLTestSpecialMethods.test_ufunc_override_with_super.<locals>.B.__array_ufunc__  s    B6BB))r'   Nr  )r3  s   r$   rC  r<    s    *r'   rC  r  r  r   r   r.  )r  r.  r   r  r?  r   r  )r  r|   )r   r   r   r   rK   )r6   r   rY  r   r  r   rF  r	   r4  r  r   r  r  r
   r   r   ry  r  rU  r   r   r  r   r  )r_   rC  r   r   r   checkb1b2c1r  r  indicesr3  s               @r$   test_ufunc_override_with_superz1TestSpecialMethods.test_ufunc_override_with_super  sx   2	D

 2	Dh	* 	* IIbMIIbMq!FF1Iq	uz"#QVVh_-FF11$uz"#QVVi!-.QIIbMq!FF1!uz"#QVV<= IIbMq!BRWWx!o.q	*BaRWWy1#./IIbMq!IIbMq!A'BaaRWW!!Q@A IIbMq!IIbMq!FF1aQQQVVAA3?@IIbMC!!"&&*a;~MN!!"&&*a;~MNiA.FF1I!!"&&*a;~MN!!"&&*a;tCDq!$%HHi+,FF1IEEGQA3(EEGQA3(HHQKQEEaELQQA3A3781MM% %%a(EEqaE QQA3A378aa(FFMM!!M$QA3(MM!FFMM!Qa(QQA3A378!!!!!,FFaa(QA3(MM!FFaD!,QQA3A37873FFOOAwQO/QA3(MM!FFOOAw43QQA3A378HHi+,FFHMM!
		%1a&1a&)2.
		!q!fq!f%r*QA3(HHRLa FFHMM!
		!q!fq!f%q)QAq6*+r'   c                    t        j                  d      }t        j                  t              5  |j                          d d d        t        j                  t              5  |j                  dd       d d d        |j                  t         j                  d||      }t        |||z          y # 1 sw Y   oxY w# 1 sw Y   GxY w)Nr   r   r  )r6   r   r   r   r   r  r   r   )r_   r   r#   s      r$   test_array_ufunc_direct_callz/TestSpecialMethods.test_array_ufunc_direct_calle  s    HHQK]]9% 	 	  ]]9% 	$a#	$ 
Aq93A&	  	 	$ 	$s   B.!B:.B7:CN)rd   re   rf   r  r&  r.  r4  r:  rH  rS  rc  rj  rp  r   r  r  r~  r  r  r  r  r  r  r  r
  r  r  r$  r)  rE  rG  r!   r'   r$   r  r  t  s    ,5Mn3"+))'V;?$.*  [[[4-8, 9," [[[4-8, 9,&DK-4E"Ni=V6<pGCR	4)"+<9<k,Z'r'   r  c                       e Zd Zd Zy)
TestChoosec                     t        j                  ddg      }t        j                  ddg      }t        t        j                  ||df      t        j                  ddg             y )NTr   )r6   r   r	   choose)r_   r  r   s      r$   
test_mixedzTestChoose.test_mixedt  sL    HHdD\"HHdD\"RYYq1a&)288QF+;<r'   N)rd   re   rf   rL  r!   r'   r$   rI  rI  s  s    =r'   rI  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestRationalFunctionsc                     | j                  t        j                         | j                  t        j                         y r    )_test_lcm_innerr6   rD  uint16r^   s    r$   test_lcmzTestRationalFunctions.test_lcm{  &    RXX&RYY'r'   c                 B    | j                  t        j                         y r    )rP  r6   object_r^   s    r$   test_lcm_objectz%TestRationalFunctions.test_lcm_object      RZZ(r'   c                     | j                  t        j                         | j                  t        j                         y r    )_test_gcd_innerr6   rD  rP  rQ  r^   s    r$   test_gcdzTestRationalFunctions.test_gcd  rS  r'   c                 B    | j                  t        j                         y r    )rY  r6   rU  r^   s    r$   test_gcd_objectz%TestRationalFunctions.test_gcd_object  rW  r'   c                    t        j                  ddg|      }t        j                  ddg|      }t        t        j                  ||      ddg       t	        |t         j
                        sVt        j                  g d|      }t        j                  g d	|      }t        t        j                  ||      dgd
z         t        j                  g d|      }t        t         j                  j                  g d      d       t        j                  d      j                  |      }d}t        t        j                  ||      g d       y )Nr^  x   r~   r     <   iX  r^  r_  r^  r_  r  r  rc  r+   )r*   r^  r  rs  )r   r  r  r`  r  r  )	r6   r   r	   lcm
issubclassunsignedintegerr   rY  r   r_   r   r   r   s       r$   rP  z%TestRationalFunctions._test_lcm_inner  s    HHb#Ye,HHb#Ye,RVVAq\B9-%!3!34,E:A,E:A1tAv. HH[.RVV]];/4 IIaL&RVVAq\#:;r'   c                    t        j                  ddg|      }t        j                  ddg|      }t        t        j                  ||      ddg       t	        |t         j
                        sVt        j                  g d|      }t        j                  g d	|      }t        t        j                  ||      dgdz         t        j                  g d
|      }t        t         j                  j                  |      d       t        j                  d      j                  |      }d}t        t        j                  ||      g d       y )Nr^  r^  r~   r  r_  r+   (   ra  rb  )rI     #   r,   rs  )r  r   r   r   r+   r,   )	r6   r   r	   gcdre  rf  r   rY  r   rg  s       r$   rY  z%TestRationalFunctions._test_gcd_inner  s    HHb#Ye,HHb#Ye,RVVAq\Ar7+%!3!34,E:A,E:A1s1u- HH\/RVV]]1%q) IIaL&RVVAq\#;<r'   c                     t        j                  t        j                  t         j                        j                  dz        }d|z  }d|z  }t	        t        j
                  ||      d|z         y )Nr  r   r,   r4   )r6   r   r  r  r	   rd  )r_   r  r   r   s       r$   test_lcm_overflowz'TestRationalFunctions.test_lcm_overflow  sR    hhrxx)--34cEcERVVAq\2c6*r'   c                 2   t         j                  t         j                  fD ]t  } |t        j                  |      j                        }|dz   }t        t        j                  ||dz        |       t        t        j                  || dz        |       v y )Nr+   r*   )r6   r   r   r  r;  r	   rl  )r_   r   r   qs       r$   test_gcd_overflowz'TestRationalFunctions.test_gcd_overflow  su    hh) 	-E bhhuo))*Aq&	AAaC!,A2a4!,	-r'   c                 8   ddl m} t        j                  g d       |d      z  }t        j                  g d       |d      z  }t	        t        j
                  ||      d |d      gz         t	        t        j                  ||      d |d	      gz         y )
Nr   )Decimal)r   r   r-   r-   z0.20)r   r-   r   r-   z0.12r+   z0.04z0.60)r  rs  r6   r   r	   rl  rd  )r_   rs  r   r   s       r$   test_decimalz"TestRationalFunctions.test_decimal  ss    #HH_%7HH_%7RVVAq\1gfo%6#67RVVAq\1gfo%6#67r'   c                     t        t        t        j                  dd       t        t        t        j                  dd       y )Ng333333?g?)r
   r   r6   rl  rd  r^   s    r$   
test_floatz TestRationalFunctions.test_float  s&    ic2ic2r'   c                    t        t        j                  ddz        j                         ddz         t        j                  ddz  dz        }t        j                  ddz  dz  dg      }t        t        j                  ||      ddz  dg       t        t        j
                  ||      ddz  dz  dz  ddz  dz  g       t        t        j                  ddz  d	dz        d
       y )Nr   r_  r*     i-1 l          U9 l         `i  r*   r   )r	   r6   r   itemrl  rd  rK  s      r$   test_builtin_longz'TestRationalFunctions.test_builtin_long  s    RXXaf%**,af5 HHQVd]#HHaftm]34RVVAq\AsF,#GHRVVAq\AsFTMD$8!S&5.#IJRVVAsFAsF+Q/r'   N)rd   re   rf   rR  rV  rZ  r\  rP  rY  rn  rq  rt  rv  rz  r!   r'   r$   rN  rN  z  s9    ()()<*=*+-83

0r'   rN  c                       e Zd Zd Zd Zd Zy)TestRoundingFunctionsc                      G d d      }t        j                   |        |       g      }t        t        j                  |      ddg       t        t        j                  |      ddg       t        t        j
                  |      ddg       y)z3 test direct implementation of these magic methods c                       e Zd Zd Zd Zd Zy)3TestRoundingFunctions.test_object_direct.<locals>.Cc                      yr  r!   r^   s    r$   	__floor__z=TestRoundingFunctions.test_object_direct.<locals>.C.__floor__      r'   c                      yrM  r!   r^   s    r$   __ceil__z<TestRoundingFunctions.test_object_direct.<locals>.C.__ceil__  r  r'   c                      y)Nr*   r!   r^   s    r$   	__trunc__z=TestRoundingFunctions.test_object_direct.<locals>.C.__trunc__  r  r'   N)rd   re   rf   r  r  r  r!   r'   r$   rG  r    s    r'   rG  r   r   r*   N)r6   r   r	   rk  r*  rl  r_   rG  r   s      r$   test_object_directz(TestRoundingFunctions.test_object_direct  sf    	 	 hhQSz"RXXc]QF+RWWS\QF+RXXc]QF+r'   c                 d    G d d      }t        j                   |        |       g      }t        t        j                  |      ddg       t        t        j                  |      ddg       t        j                  t              5  t        j                  |       ddd       y# 1 sw Y   yxY w)z$ test implementations via __float__ c                       e Zd Zd Zy)5TestRoundingFunctions.test_object_indirect.<locals>.Cc                      y)Nr  r!   r^   s    r$   	__float__z?TestRoundingFunctions.test_object_indirect.<locals>.C.__float__  ri  r'   N)rd   re   rf   r  r!   r'   r$   rG  r    r!  r'   rG  r/   r.   N)	r6   r   r	   rk  r*  r   r   r   rl  r  s      r$   test_object_indirectz*TestRoundingFunctions.test_object_indirect  s|    	 	 hhQSz"RXXc]RH-RWWS\RH-]]9% 	HHSM	 	 	s   B&&B/c                     t        dd      }t        t        j                  |      d       t        t        j                  |      d       t        t        j
                  |      d       y )Nr0   r*   r.   r-   )r   r	   r6   rk  r*  rl  )r_   r  s     r$   test_fractionz#TestRoundingFunctions.test_fraction  sC    RORXXa["%RWWQZ$RXXa["%r'   N)rd   re   rf   r  r  r  r!   r'   r$   r|  r|    s    ,
&r'   r|  c                      e Zd Zej                  ej
                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                   ej"                  ej$                  ej&                  gZd Zej.                  j1                  ed      ej.                  j1                  ed      d               Zej.                  j1                  ed      ej.                  j1                  ed      d               Zej.                  j1                  ed      ej.                  j1                  ed      d               Zd Zej.                  j1                   ed	      d
      ej.                  j1                  ed      ej.                  j1                  ed      ej.                  jA                  dejB                  ejD                  ejF                  g      d                             Z$ ejJ                  d      d        Z&y)TestComplexFunctionsc                     | j                   D ]h  }|t        j                  u rd}nd} ||      } |t        |            }t	        |j
                  |d|z         t	        |j                  dd|z         j y )Nr5  rx   zreal part %srm  rs  zimag part %s)funcsr6   r  ru  r   rO   r+  )r_   r  rQ   frfzs        r$   test_itzTestComplexFunctions.test_it  sl     	IABJJ1B71:B^a5GH^a5GH	Ir'   gh23049r5  zdoesn't workc                    d}| j                   D ]w  } |t        j                  |            } |t        j                  |            } |t        j                  |            }t        ||dd|z         t        ||dd|z         y y )Nrk  rs  z
fch-fcd %s)r  rn  rI  z
fch-fcl %s)r  r6   csinglecdoubleclongdoubler   )r_   r  r  fcffcdfcls         r$   test_precisions_consistentz/TestComplexFunctions.test_precisions_consistent  s{      	PABJJqM"CBJJqM"CBNN1%&CS!\A=MNS"lQ>NO	Pr'   c                 T   t        t        j                  ddddd       t        t        j                  ddddd       t        t        j                  ddddd       t        t        j
                  ddddd       t        t        j                  ddddd       t        t        j                  ddgddgddd       t        t        j                  ddgddgddd       t        t        j                  d	d
gddgddd       t        t        j                  d	d
gddgddd       t        t        j                  ddgddgddd       t        t        j                  ddgddgddd       t        t        j                  d	d
gddgdd       t        t        j                  d	d
gddgdd       t        t        j                  ddgddgdd       t        t        j                  g dg ddd       t        t        j                  g dg ddd       t        t        j                  g dg ddd       y )Nrb  r6  r   r-   T      r.   r                  r  rx   r.   r   r   r6  r6  r   r  r  r   r   r   r6  r  r  r   )_check_branch_cutr6   r  rt  r  r  r!  r  r  r	  rL   r  r  r^   s    r$   test_branch_cutsz%TestComplexFunctions.test_branch_cuts  s    	"&&D"aT:"''D"aT:"((D"aT:"((D"aT:"''D"aT:"))r1X"b1b$G"))r1X"b1b$G"))dBZ1q'2q$G"**tbkA8RDI"**Cj2)QDI"**aj2r(Ar4H 	"))dBZ1q1a@"))dBZ1q1a@"))rAYR!Q?"**lKAF"**m\1aH"**m\1aHr'   c           	      ^   t        t        j                  dddddt        j                         t        t        j                  dddddt        j                         t        t        j
                  dddddt        j                         t        t        j                  dddddt        j                         t        t        j                  dddddt        j                         t        t        j                  ddgddgdddt        j                         t        t        j                  ddgddgdddt        j                         t        t        j                  d	d
gddgdddt        j                         t        t        j                  d	d
gddgdddt        j                         t        t        j                  ddgddgdddt        j                         t        t        j                  ddgddgdddt        j                         t        t        j                  d	d
gddgdddt        j                         t        t        j                  d	d
gddgdddt        j                         t        t        j                  ddgddgdddt        j                         t        t        j                  g dg ddddt        j                         t        t        j                  g dg ddddt        j                         t        t        j                  g dg ddddt        j                         y )Nrb  r6  r   r-   Tr  r.   r   r  r  rx   Fr  r  r  r  r  )r  r6   r  r  rt  r  r  r!  r  r  r	  rL   r  r  r^   s    r$   test_branch_cuts_complex64z/TestComplexFunctions.test_branch_cuts_complex648  s0    	"&&D"aT2<<H"''D"aT2<<H"((D"aT2<<H"((D"aT2<<H"''D"aT2<<H"))r1X"b1b$U"))r1X"b1b$U"))dBZ1q'2q$U"**tbkA8RD",,W"**Cj2)QD",,W"**aj2r(Ar4V 	"))dBZ1q1aU"))dBZ1q1aU"))rAYR!Qr||T"**lKAubll["**m\1aPRP\P\]"**m\1aPRP\P\]r'   c                    dd l }g d}ddddddd	}d
t        j                  t              j                  z  }| j
                  D ]  }|j                  j                  d      d   }|j                  ||      }	 t        ||      }|D ]T  }	t         |t        j                  |	                  }
 ||	      }t        t        |
|z
        |k  |d|	d|
d|       V  y # t        $ r Y w xY w)Nr   )y            r@  r>  rk  asinacosatanasinhacoshatanh)r  r  r	  rL   r  r  r+   .r-    z: z	; cmath: )cmathr6   r  ru  epsr  rd   splitgetrt  AttributeErrorr.  r   rP   )r_   r  pointsname_mapatolrv  fnamecnamecfuncr:  r   r   s               r$   test_against_cmathz'TestComplexFunctions.test_against_cmathS  s    -$&&7wP'"&&&JJ 	DMM'',R0ELL.Eu-  DQ01!HAJ%.3Q1=	
 " s   8C  	C,+C,z2.18z<Older glibc versions are imprecise (maybe passes with SIMD?)r   c           	         t        j                        } d      j                  j                  |j                  fd}t        j
                  ddd      }t        j
                  dddd	
      }t         j                  u r,t               rt        j                  d        ||dz         n ||dz          ||dz  dz         t        j                  dg      }d}t        j                  dt        j                  |      |z  z
        }t        t        j                  |dk               d}t        j                  dt        j                  |      |z  z
        }t        t        j                  |dk               d}t        j                  dt        j                   |      |z  z
        }t        t        j                  |dk               d}t        j                  dt        j"                  |      |z  z
        }t        t        j                  |dk               dfd	}t         j                  t         j                  t         j"                  t         j                  t         j                   fD ]H  }	dD 
cg c]  }
dD ]  }|
dk7  s|dk7  r|
d|z  z     }}
} ||	|d        ||	|d        ||	|d       J yc c}}
w )z1Check loss of precision in complex arc* functionsrs  c                    | j                        } | j                        }t        j                  t        j                  |       t        j                  |      j                  z  dz
        }t        t        j                  ||k        t        j                  |      | t        j                  |         |j                         df       d| z  j                        }t        j                  t        j                  |       t        j                  |      j                  z  dz
        }t        t        j                  ||k        t        j                  |      | t        j                  |         |j                         df       | j                        }t        j                  t        j                  |       t        j                  |      j                  z  dz
        }t        t        j                  ||k        t        j                  |      | t        j                  |         |j                         df       d| z  j                        }t        j                  t        j                  |       t        j                  |      j                  z  dz
        }t        t        j                  ||k        t        j                  |      | t        j                  |         |j                         df       y )Nr   rL   r6  r  r  r	  )r   r6   ri  rL   rO   r   rF  argmaxr  r  r+  r  r	  )rQ   rtolr  r   r   
real_dtypes       r$   r@  z:TestComplexFunctions.test_loss_of_precision.<locals>.checkz  s	   $AABJJqM"**Q-*<*<<q@AABFF1t8$ryy|Qryy|_aeeg&/'1 2 Ae$ABJJqM"))A,*;*;;a?@ABFF1t8$ryy|Qryy|_aeeg&.'0 1 ABJJqM"**Q-*<*<<q@AABFF1t8$ryy|Qryy|_aeeg&/'1 2 Ae$ABJJqM"))A,*;*;;a?@ABFF1t8$ryy|Qryy|_aeeg&.'0 1r'   rc  g5^Ir_  gˡEr   r4   F)endpointzvTrig functions of np.longcomplex values known to be inaccurate on aarch64 and PPC for some compilation configurations.g      I@ @r  MbP?yh㈵>h㈵>r~   yg݈>+j鈵>r   rj   yi戵>Sh>y+j鈵>g݈>ySh>i戵>c                 b   t        j                  |      }|t        |      |z  z  dz  z   }|t        |      |z  z  dz  z
  }t        t        j                  ||k7        ||f       t         | |       | |      z
        dz  k  }t        t        j                  |      | ||    f       y )Nr~   r   )r6   r   rP   r   rF  )rv  z0r   zpzmgoodr   r  s         r$   r@  z:TestComplexFunctions.test_loss_of_precision.<locals>.check  s    Be,Bc"gkC'!++Bc"gkC'!++BBFF28$r2h/ R48+,qu4DBFF4L4TE"34r'   )gMbPr   r  r6  rk  Nr   )r6   r  rO   r   r  logspacelongcomplexrT   r   rd  r   ri  r  r   rF  rL   r	  r  )r_   r   r4  r@  x_seriesx_basicr  r:  r   rv  rpipptsr  r  s    `           @@r$   test_loss_of_precisionz+TestComplexFunctions.test_loss_of_precisioni  sE    xx2Y^^))
hh	14 ;;sFC0++fae<BNN"} : ; (DH%(CG$gs3wt|$ HHk]%0>KK"**Q-/)*q5y!"?KK"**Q-/)*q5y!">KK"))A,q.()q5y!"?KK"))A,q.()q5y!"	5 ZZRYY

BIIN 	#D&6 *@P *2Agq be8 *8 *C *$Q$R $T"	#*s    KrX   r  c                 v   | j                   D ]  } |t        j                  d            j                  t        j                  k(  sJ  |t        j                  d            j                  t        j                  k(  sJ  |t        j
                  d            j                  t        j                  k(  rJ  y r  )r  r6   r  r   r   rD  r  )r_   rv  s     r$   test_promotion_corner_casesz0TestComplexFunctions.test_promotion_corner_cases  s    JJ 	9D

1&,,

:::$**bjj888$**bjj888		9r'   N)'rd   re   rf   r6   r  r  r	  rL   r  r  r  r  r  r#  r  r  r!  r  rt  r  r  r  r   r  r  r   r   r  r  r  r  r   r  r  r.  r  r  rE  r  r!   r'   r$   r  r    s   YYRYY

BJJZZRVVBFFWWRWWBGGXXE
	I [[wy1[[w~6P 7 2P [[wy1[[w~6I 7 2I2 [[wy1[[w~6^ 7 2^2, [[&!M  
 [[wy1[[w~6[[Wr||R[["..&QRW# S 7 2W#r R[[X9 9r'   r  c                       e Zd Zd Zd Zy)TestAttributesc                 2   t         j                  }t        |j                  d       t	        |j
                  dk\         t	        d|j                  v        t        |j                  d       t        |j                  d       t        |j                  d       y )Nr      zii->ir   r   r   )
rk   r   r	   rd   r   ntypestypesninr3  r  )r_   r   s     r$   test_attributeszTestAttributes.test_attributes  se    ggS\\5)

b !399$%SWWa SXXq!S\\1%r'   c                     t        t        j                  j                  j	                  d             t        t        j
                  j                  j	                  d             y )Nz&add(x1, x2, /, out=None, *, where=Truez<frexp(x[, out1, out2], / [, out=(None, None)], *, where=True)r   rk   r   __doc__rG   r   r^   s    r$   test_doczTestAttributes.test_doc  sH     	**46 	7		!!,,JL 	Mr'   N)rd   re   rf   r  r  r!   r'   r$   r  r    s    &Mr'   r  c                       e Zd Zd Zy)TestSubclassc                 d     G d dt         j                        } |d      }t        ||z   |       y )Nc                       e Zd Zd Zy)-TestSubclass.test_subclass_op.<locals>.simplec                 t    t         j                  j                  | |t              }|j	                  d       |S )Nr~   r   )r6   r   r   r   fill)subtyperF  r_   s      r$   r   z5TestSubclass.test_subclass_op.<locals>.simple.__new__  s-    zz))'5)G		!r'   N)rd   re   rf   r   r!   r'   r$   simpler    s    r'   r  )r*   r+   )r6   r   r	   )r_   r  r   s      r$   test_subclass_opzTestSubclass.test_subclass_op  s+    	RZZ 	 6NQqS!r'   N)rd   re   rf   r  r!   r'   r$   r  r    s    	r'   r  c                       e Zd Zd Zy)TestFrompyfuncc                    d }t        j                  |ddd      t        j                  g d      d       t        j                  t        j                  d      d	      d       t        j                  g       d       t        j                  |ddd       t        j                  g d      d       t        j                  t        j                  d      d	      d       t        t        fd
       t        j                  |dd      t        j                  g d      d       t        t        fd       t        t        fd       y )Nc                     | |z  S r    r!   )r   r   s     r$   mulz)TestFrompyfunc.test_identity.<locals>.mul  s    q5Lr'   r   r   )r  r3  r  )r   r*   r+      r   r   r   r   r  c                  &     j                  g       S r    r   	mul_ufuncs   r$   r%   z.TestFrompyfunc.test_identity.<locals>.<lambda>      )*:*:2*> r'   )r  r3  c                  P     j                  t        j                  d      d      S )Nr  r  r  )r   r6   r  r  s   r$   r%   z.TestFrompyfunc.test_identity.<locals>.<lambda>	  s     )*:*:2776?QW*:*X r'   c                  &     j                  g       S r    r   r  s   r$   r%   z.TestFrompyfunc.test_identity.<locals>.<lambda>
  r  r'   )r6   r  r	   r   r  r
   r   )r_   r  r  s     @r$   r  zTestFrompyfunc.test_identity  s   	 MM#11qA	Y%%i0"5Y%%bggfoF%CQGY%%b)1- MM#11tD	Y%%i0"5Y%%bggfoF%CQGj">? MM#115	Y%%i0"5j"XYj">?r'   N)rd   re   rf   r  r!   r'   r$   r  r    s    @r'   r  r-   Fc           	      	   t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  |      j                  dk(  r8t        j
                  |      j                  dz  }t        j                  d      }n$t        j
                  |      j                  dz  }d} | |      }	 | |||z  t        j                  |      z  t        j                  |      z  z         }
 | |||z  t        j                  |      z  t        j                  |      z  z
        }t        t        j                  t        j                  |	j                  |
j                  z
        |k        |	|
f       t        t        j                  t        j                  |	j                  |
j                  z
        |k        |	|
f       t        t        j                  t        j                  |	j                  |j                  |z  z
        |k        |	|f       t        t        j                  t        j                  |	j                  |j                  |z  z
        |k        |	|f       |r
|j                  dk(  |j                  dk7  z  }|j                  dk(  |j                  dk7  z  }t        j                  |      r||   }t         j                  |_         | |      }t        t        j                  t        j                  |	|   j                  |j                  |z  z
        |k        |	|   |f       t        t        j                  t        j                  |	|   j                  |j                  |z  z
        |k        |	|   |f       t        j                  |      r||   }t         j                  |_         | |      }t        t        j                  t        j                  |	|   j                  |j                  |z  z
        |k        |	|   |f       t        t        j                  t        j                  |	|   j                  |j                  |z  z
        |k        |	|   |f       yyy)aR  
    Check for a branch cut in a function.

    Assert that `x0` lies on a branch cut of function `f` and `f` is
    continuous from the direction `dx`.

    Parameters
    ----------
    f : func
        Function to check
    x0 : array-like
        Point on branch cut
    dx : array-like
        Direction to check continuity in
    re_sign, im_sign : {1, -1}
        Change of sign of the real or imaginary part expected
    sig_zero_ok : bool
        Whether to check if the branch cut respects signed zero (if applicable)
    dtype : dtype
        Dtype to check (should be complex)

    Fr  r  r  g-C6?r   N)r6   
atleast_1dr   r   r  r  r  r  ri  r   rF  rO   r+  ry  r  )r  x0dxre_signim_signsig_zero_okr   scaler  y0ypymjrjirQ   s                  r$   r  r    s[   0 
r		!	!%	(B	r		!	!%	(B	xxs"##c)zz$##c)	
2B	
25R(R88	9B	
25R(R88	9BBFF2;;rww01D89B8DBFF2;;rww01D89B8DBFF2;;rww89D@AB8LBFF2;;rww89D@AB8Lgglrww!|,gglrww!|,66":2AXXAF1BBFF2;;r"v{{RWWW_'DELMPRSUPVXZ|\BFF2;;r"v{{RWWW_'DELMPRSUPVXZ|\66":2AXXAF1BBFF2;;r"v{{RWWW_'DELMPRSUPVXZ|\BFF2;;r"v{{RWWW_'DELMPRSUPVXZ|\  r'   c                  4   t        t        j                  dd      dk(         t        j                  d      5  t        dt        j                  dd      z  dk         t        dt        j                  dd      z  dkD         d d d        t        t        j                  t        j                  t        j
                  d                   t        t        j                  t        j                  t        j
                  d                    y # 1 sw Y   xY w)Nr   r-   rX   r?  r   )r   r6   copysignrE  r  r   r!   r'   r$   test_copysignr  J  s    BKK2"$%	H	% +BKK2&&*+BKK1%%)*+ BJJr{{2662./0

2;;rvvq1223	+ +s   ADDc                 J    | d      } | d      } | d      }t        j                  |       j                  }t        t        j                  ||      |z
  |k(         t        t        j                  ||      |z
  dk         t        t        j
                  t        j                  t         j                  |                   t        t        j
                  t        j                  |t         j                                     t        t        j                  ||      |k(         y r  )r6   r  r  r   r  rw  r   )r  r8  r  r  r  s        r$   _test_nextafterr  R  s    
A$C
A$CQ4D
((1+//CBLLc"S(C/0BLLd#c)A-.BHHR\\"&&#./0BHHR\\#rvv./0BLLc"c)*r'   c                  4    t        t        j                        S r    )r  r6   r#  r!   r'   r$   test_nextafterr  ]      2::&&r'   c                  4    t        t        j                        S r    )r  r6   r  r!   r'   r$   test_nextafterfr  a  r  r'   zlong double is same as doubler5  ppc64zIBM double double)	conditionr6  c                  4    t        t        j                        S r    )r  r6   ru  r!   r'   r$   test_nextafterlr  e  s    
 2==))r'   c                  T   t        j                  t        j                  d   d      D ]  \  } }t	               5 }|j                  t               t        j                  t        j                  |       j                        s[t        j                  |       j                  }t        d|t        j                   | d       | |            z  cxk  xr |k  nc        d d d        t        t        j                   | d       | |             | d      z  |dz          y # 1 sw Y   DxY w)Nr   r  rs  r   r  )r  r  r6   r  r   r  UserWarningrw  r  r  r   r  r	   )r  	directionr  r  s       r$   test_nextafter_0r  m  s    !))"**W*=wG 	Q9   	NCJJ{#88BHHQK,,-xx{''R\\!A$)%EELLN		N 	R\\!A$)5#>	CP	Q	N 	Ns   B#DD'	c                     | d      }t        j                  |       j                  } | t         j                        } | t         j                        }t        j
                  d      5  t        t        j                  |      |       t        t        j                  t        j                  |                   t        t        j                  t        j                  |                   t        t        j                  t        j                  |                    t        t        j                   | d            dk7         d d d        y # 1 sw Y   y xY w)Nr   rX   rY   gꌠ9Y>)Fr   )
r6   r  r  r   rv  rE  r	   r)  r   rw  )r  r8  r  r   rv  s        r$   _test_spacingr  y  s    
A$C
((1+//C
BFF)C
BFF)C	X	& *RZZ_c*C)*C)*SD)*+

1T7#q()* * *s   *CEEc                  4    t        t        j                        S r    )r  r6   r#  r!   r'   r$   test_spacingr        $$r'   c                  4    t        t        j                        S r    )r  r6   r  r!   r'   r$   test_spacingfr"    r   r'   c                  4    t        t        j                        S r    )r  r6   ru  r!   r'   r$   test_spacinglr$    s    
 ''r'   c                  .   t         j                  g dt         j                  g di} t        t         j                  t         j                  gd      D ]B  \  }}t        j                  g d|      }t        t        j                  |      | |   |       D y )N)g      ;g      <g      @=g      =)g5(   p=g  >gK8   ?g      P?)r4   r  )h㈵>r   r   i)  r~   r  )r6   r#  r  r   r   r   r)  )refr  r  rQ   s       r$   test_spacing_gfortranr(    sy    " :: 2 :: (	)C RZZ0(; HDHH+26!"**Q-R$GHr'   c                      t         j                  t         j                  fD ]T  } dD ]M  } | |      } | |dz         }t        t        j                  ||      |z
  t        j
                  |      k(         O V y )N)r   r&  r   r   )r6   r  r#  r   r  r)  )r  _fr  f1s       r$   test_nextafter_vs_spacingr,    sh    jj"**% >! 	>B"A26BBLLB'!+rzz!}<=	>>r'   c                  b    t        t        j                  t        j                        dk(         y)zCheck np.nan is a positive nan.r   N)r   r6   r  r   r!   r'   r$   test_pos_nanr.    s    BJJrvv!#$r'   c                     t        j                  ddt         j                  fdt         j                  fg      } t        j                  dg|       }d|d<   d|d<   d|d<   g d	}g }|d
   }|dd D ]8  }|j                  t         j                  j                  |d   ||              |}: |j                  t         j                  j                  |d   |d              t        j                  |      }t         j                  j                  |d   |      }t        ||       t        j                  d       t         j                  j                  |d   |      }t        j                  t         j                         t        ||       y)z;Test bug in reduceat when structured arrays are not copied.)ra  S11timer  r*  r~   Simplera  r4   )r   rz  rI  rj  r   r   Nro  )r6   r   r   r  r   r  r   r   r   r  r   
setbufsizeUFUNC_BUFSIZE_DEFAULT)dbr   indxh2r8   r9   h1s          r$   test_reduceatr9    s@   	?VRXX$6"**8MN	OB
#b!AAfIAfIAgJD	B7DQR 
		"&&--'
4 567 IIbffmmAgJtu-./	"B 
7T	*Bb"% MM"	7T	*BMM"**+b"%r'   c                     t        j                  g d      } t        j                  g d      }t         j                  j                  ||       }t	        |j
                  |j
                         t	        |j                  d       t        j                  d      }t         j                  j                  |g d      }t	        |j
                  |j
                         t	        |j                  d       t         j                  j                  |g d      }t	        |j
                  |j
                         t	        |j                  d	       y
)z&Reduceat should work with empty arraysi4f8)r   )r,   r   r   r  r  r   )r,   r   N)r6   r   r   r  r	   r   rF  r  )rD  rQ   r  s      r$   test_reduceat_emptyr=    s    hhr4 G
TAVV__Q(Fqww't$
AVV__Q_+Fqww'v&VV__Q_+Fqww'v&r'   c            
      b   t        t        j                  d      t        dt        j                        t        t        j                  t        j                        g} t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      g}t        j                  d      5  | |z   D ]  }t        j                  |g      }| |z   D ]  }t        j                  |g      }t        j
                  |      rt        j
                  |      rDt        ||k  d|d|       t        ||kD  d|d	|       t        ||k  d|d
|       t        ||k\  d|d|       t        ||k(  d|d|         	 d d d        y # 1 sw Y   y xY w)Nr   r   r-   rX   rY   Fz < rm  z > z <= z >= z == )ru  r6   r   rE  r   rC  r	   )nansfinsrQ   r   s       r$   test_complex_nan_comparisonsrA    sd   BFFA266 2GBFFBFF4KLDAqM72q>71a='!R.AqM72r?GAqM;D 
X	& I 	IA!AD[ 
IHHaSM;;q>bkk!nQUE13EFQUE13EFQ!VU!Q4GHQ!VU!Q4GHQ!VU!Q4GH
I	II I Is   CF%%F.c                      d} t        | t        t        |                    t        | t        j                  |              y )Nl    *n )r	   r   r   r6   rj  )vals    r$   test_rint_big_intrD    s-     Cc%*o&bggcl#r'   ftypec                 >   t        j                  g d|       }t        j                  g d|       }t        j                  g d|       }t        t         j                  j	                  |      |       t        t         j
                  j	                  |      |       y )N)Q?333333?p=
ף?=
ףp=?RQ?r~   )rG  rG  rI  rI  rI  )rG  rH  rH  rJ  rK  )r6   r   r	   r  r   rC  )rE  r   out_maxout_mins       r$   test_memoverlap_accumulaterN    si     ((1
?Chh5UCGhh5UCG&&s+W5&&s+W5r'   zufunc, dtyperh  DFGMmOc           	         | j                   rt        j                  d       dD ]  }t        j                  g d|z  |      }| j                  |d      }|j                  t        j                        }t        j                  t        t        j
                  ||             t        j                        }t        ||        y )NFor generic signatures onlyr   rm  ro  rp  r  rq  )r   r   r   r~   rh  )r   r   rd  r6   r   r   r   r   r  r  r	   )r'  r   r   r   accacc_u8r#  s          r$   test_memoverlap_accumulate_cmprU    s     12( "hhy~U3s#."((#hhtI00e<=RXXNS&!"r'   zDFGMmO?c           
         | j                   rt        j                  d       t        j                  d      5  dD ]~  }t        j
                  g d|z        j                  |      }| j                  ||      }t        j
                  t        t        j                  ||             |      }t        ||        	 d d d        y # 1 sw Y   y xY w)NrQ  rX   r  rR  r   r   r   r~   )r   r   rd  r6   rE  r   r   r   r  r  r	   )r'  r   r   r   rS  r#  s         r$   $test_memoverlap_accumulate_symmetricrX  !  s     12		" #, 	#D((9T>*11%8C""3e"4C((4	 4 4S% @AOCc"		## # #s   BCCc                      t               5  t        j                  ddd      } t        j                  |        d d d        y # 1 sw Y   y xY w)Nr!   r  s    )rF  r   buffer)r   r6   r   rw  r  s    r$   test_signaling_nan_exceptionsr[  1  s;    		 JJRy9LM
  s   .AAr   r,   c                      G d dt         j                        }t         j                  j                  | j	                  |      | j	                  |            }|j
                  j                  dk(  sJ y )Nc                       e Zd Zy))test_outer_subclass_preserve.<locals>.fooN)rd   re   rf   r!   r'   r$   r  r^  =  s    r'   r  )r6   r   r,  r  r   r  rd   )r   r  actuals      r$   test_outer_subclass_preserver`  6  sP      bjj[[sxx}chhsm<F$$---r'   c                      G d dt         j                        }  G fddt         j                        | fD ]  }t        j                  d      j                  |      }t	        t
              5 }t         j                  j                  |ddg       d d d        t        j                  d      j                  |      }t        t         j                  j                  ddg|            |u rJ  y # 1 sw Y   _xY w)Nc                       e Zd Zd ZddZy)(test_outer_bad_subclass.<locals>.BadArr1c                 L    | j                   dk(  r| j                  dz   | _        y y )Nr*   r   )ndimrF  r^  s     r$   __array_finalize__z;test_outer_bad_subclass.<locals>.BadArr1.__array_finalize__C  s"    yyA~!ZZ$.
 r'   Nc                     |S r    r!   r  s      r$   r  z:test_outer_bad_subclass.<locals>.BadArr1.__array_prepare__H      Jr'   r    rd   re   rf   rf  r  r!   r'   r$   BadArr1rc  B  s    	/
	r'   rj  c                        e Zd Z fdZddZy)(test_outer_bad_subclass.<locals>.BadArr2c                 t    t        |      r+| j                  d   dk(  r| j                  d d d   | _        y y y )Nr-   r   )r   rF  )r_   r  BadArr2s     r$   rf  z;test_outer_bad_subclass.<locals>.BadArr2.__array_finalize__L  s;    #w'::b>Q&!%DbD!1DJ ' (r'   Nc                     |S r    r!   r  s      r$   r  z:test_outer_bad_subclass.<locals>.BadArr2.__array_prepare__R  rh  r'   r    ri  )rn  s   r$   rn  rl  K  s    	2	r'   rn  )r   r*   r   r   )	r6   r   r  r   r
   r   r   r  r   )rj  r   r   r   rn  s       @r$   test_outer_bad_subclassrp  A  s    "** "**  ! 6ggfo""3'9% 	&FFLLq!f%	&
 ggfo""3'BFFLL!Q-.#5556	& 	&s   0#C11C:	c                      t        j                  d      } t        t              5  t         j                  j                  | |        d d d        y # 1 sw Y   y xY w)N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r6   r  r
   r   r   r  )deeps    r$   test_outer_exceeds_maxdimsrs  _  s?    779D	z	" !
T4 ! ! !s   !AAc                     t        j                  d      j                  t         j                        } t	        j
                  t        d      5  t        j                  | |        d d d        t	        j
                  t        d      5  | j                  d      j                  dd      d d d d df   }t        j                  ||        d d d        t	        j
                  t        d      5  t        j                  j                  | |        d d d        t	        j
                  t        d      5  t        j                  j                  |        d d d        t	        j
                  t        d      5  t        j                  j                  | dd	g       d d d        t	        j
                  t        d      5  t        j                  j                  |        d d d        t	        j
                  t        d      5  t        j                  j                  | g d
|        d d d        y # 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   8xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr*   How unexpected :\)!r   r  r-   rs  r   r   r   rW  )r6   rY  r   r#  r   r   rP  r  always_errorr  reshaper  r   r  r   r  )r   
non_contigs     r$   #test_bad_legacy_ufunc_silent_errorsry  d  s    ))A,

bjj
)C	|+A	B )sC() 
|+A	B 0ZZ^++B21cc6:
z3/0
 
|+A	B /$$S#./ 
|+A	B +%%c*+ 
|+A	B 5''aV45 
|+A	B /))#./ 
|+A	B 7!!#y#67 7)) )0 0
/ /+ +5 5/ /7 7sU   H*AH7-!I1 I4#I: I*=$I6*H47IIII'*I36I?x1r  )rs  rK   r  c                     t        j                  t        d      5  t        j                  | d       d d d        y # 1 sw Y   y xY w)Nru  r   rs  )r   r   rP  r  always_error_gufunc)rz  s    r$   $test_bad_legacy_gufunc_silent_errorsr}    s8     
|+A	B /%%b#./ / /s	   <A)rD   r  r  r  r   r  r  r  	fractionsr   	functoolsr   collectionsr   numpy.core.umathcoreumathrk   
numpy.corer   r  numpyr6   numpy.testingr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   numpy.testing._private.utilsr   __dict__valuesr   r'  UFUNCSr  UFUNCS_UNARYr  r9  UFUNCS_BINARYr  r3  UFUNCS_BINARY_ACCr@   rH   rT   rV   rh   ru   r   r   r'  r  r  r  r  r  r  r]  rh  r  r  r  r  r  r;  rV  r^  rr  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rA  rN  rY  ra  r  r  r  r  r  r  r  r  r  r  r  rI  rN  r|  r  r  r  r  ru  r  r  r  r  r  r  r  r  doubleru  r  rF   rG   r  r  r  r  r"  r$  r(  r,  r.  r9  r=  rA  rD  r  r  r#  rN  rU  rX  r[  rY  matrixr`  rp  rs  ry  r}  )r  ufr'  r  s   0000r$   <module>r     sX        
 	    "   0      ;//668 
'#sBHH%  
' 266Q;B 288!3B
 266Q;B '"l";1B 5p0($! !D D{: {:|b/ b/J& &z' z'x7OH OHdF; F;R
0 
0k, k,\A A5 5@1 1-<_ -<`,a ,a\Z Z(p2 p2d?< ?<BG G< <& .-------/
J J@/b /bb*7O *7Z5 5) )&	0 	0JJ1 1"fCCHDB- B-J1 18YD/ YDxYD/ YDx<A <A~<A <A~<I <I~Q8 Q8h# #4 4
< << <6 6,+ +>(  ( VD< D<N9 9&}' }'~= =`0 `0F!& !&HO9 O9dM M& @ @2 *+BE#;]z4	+'' HBHHRYY'8288BMM+BB:  <-X--/::7C.  0*0<*
Q
*%% HBHHRYY'8288BMM+BB:  <-X--/::7C.  0(0<(H<>%&8' I*$ 2::rzz":;6 <6 "*[[* 	
u|!H, AaDM** "" "*[[* 	
tqt|!"!A$i*? AaDM** ##
 BIIaLBIIq!fBII1v1v! 
.
.6<!
7< 			#@A/ B/US
'VO* *sH    Z'Z,Z,#Z17Z1Z6Z6"Z;1Z;Z;.[ 7<[