
    Phs                       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& d dl'm(Z( ej                  j                   jR                  jU                         D  cg c]  }  e+| ejX                        r|  c} Z-e-D cg c]  }|j\                  dk(  s| c}Z/e/D cg c]  }d	|j`                  v s| c}Z1e-D cg c]  }|j\                  d
k(  s| c}Z2e2D cg c]  } e3|d      s|jh                  dk(  s|  c}Z5d Z6d Z7d Z8 G d d      Z9 G d d      Z: G d d      Z; G d d      Z< G d d      Z= G d d      Z>d Z?d Z@ G d 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,e9      ZH G d- d.      ZI G d/ d0      ZJ G d1 d2      ZK G d3 d4      ZL G d5 d6      ZM G d7 d8      ZNg d9g d:g d;g d<g d:g d:g d:g d:d=ZO G d> d?      ZP G d@ dA      ZQ G dB dCe9      ZR G dD dE      ZS G dF dG      ZT G dH dI      ZUdJ ZVdK ZW G dL dM      ZXdN ZYdO ZZdP Z[dQ Z\dR Z] G dS dT      Z^ G dU dV      Z_ G dW dXe9      Z` G dY dZe9      Za G d[ d\e9      Zb G d] d^e9      Zc G d_ d`      Zd G da db      Ze G dc dd      Zf G de df      Zg G dg dh      Zh G di dj      Zi G dk dl      Zj G dm dn      Zk G do dp      Zl G dq dr      Zm G ds dt      Zn G du dv      Zo G dw dx      Zp G dy dz      Zq G d{ d|      Zr G d} d~      Zs G d d      Zt G d d      Zu G d d      ZvdddewfdZxd Zyd Zzd 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%                  de5D cg c])  }|j`                  D ]  }|d   dk(  r|d    dvr||d    f + c}}      d        Zej                  j%                  de5D cg c]7  }|j`                  D ]&  }|d    |d   k(  r|d    |d   k(  r|d    dvr||d    f( 9 c}}      d        Zd Zej                  j%                  d ej2                  d
       ej4                  d dg       ej4                  d dgd
dgg      g      d        Zd Zd Zd Zej                  j%                  d ej2                  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)_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    fC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-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>B   r%   r&   )r   .zscalar-arrays)
r   r   r            c                     |    S r   r    )r"   poss    r#   r$   z,interesting_binop_operands.<locals>.<lambda>M   s	    Cr&   zoff-z-with-scalar)r,   q   N
   c                     | d   S )Nr3   r    r!   s    r#   r$   z,interesting_binop_operands.<locals>.<lambda>Z   s    Br&   zstride-)npfull)val1val2r   r   arr1arr2	extractorstrideop1op2r1   s             @r#   interesting_binop_operandsr?   )   sY     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	 2 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_powerpcrG   a   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@-(;)	rC   rE   rG   r5   arcsinhfloat128
complex256realabs)xv1v2s      r#   bad_arcsinhrS   g   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r5   seterrolderrselfs    r#   setup_methodz_FilterInvalids.setup_methodz   s    ii1r&   c                 B    t        j                  di | j                   y Nr    rZ   r]   s    r#   teardown_methodz_FilterInvalids.teardown_method}   s    
		 DKK r&   N)__name__
__module____qualname__r_   rb   r    r&   r#   rU   rU   y   s    2!r&   rU   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
@ri   )r   rj   er]   s    r#   test_ezTestConstants.test_e   s    0%8r&   c                 :    t        t        j                  dd       y )Ngox?ri   )r   rj   euler_gammar]   s    r#   test_euler_gammazTestConstants.test_euler_gamma   s    );UCr&   N)rc   rd   re   rl   ro   rr   r    r&   r#   rg   rg      s    :9Dr&   rg   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outry   @r   F)r5   arrayemptyaddr   int32frexpr
   	TypeError
ValueErrorflags	writeable)
r^   ry   aordo1o2r1r2s
             r#   test_out_subokzTestOut.test_out_subok   s   "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] #> *)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>.ArrayWrapr3   c                 f    t        j                  |      j                  |       j                         S r   r5   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rc   rd   re   __array_priority__r   r   r    r&   r#   	ArrayWrapr      s    !#8,r&   r   rv   rw   r   rx   rz   r   r|   r   r}   )r5   ndarrayr   r   
isinstancer   r   r   r   r
   r   )
r^   r   ry   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)rc   rd   re   r   r   r    r&   r#   rt   rt      s    /KbI:r&   rt   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   r3   lowhighr   r+   zFailed comparison ())r5   bool_randomchoicerandintastyper   r   tolistr   uint8zipr   r   rc   )r^   r   py_compnp_compr   bscalar	np_scalara_lstb_lstcomp_brP   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H6Gdas71a=)6G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__A       122r&   N)rc   rd   re   r   r    r&   r#   	FunkyTyper   @      3r&   r   F)	r5   r~   objectr
   r   equalr   nanr	   r^   r   r   s      r#   $test_ignore_object_identity_in_equalz4TestComparisons.test_ignore_object_identity_in_equal9  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__S  r   r&   N)rc   rd   re   r   r    r&   r#   r   r   R  r   r&   r   T)	r5   r~   r   r
   r   	not_equalr   r   r	   r   s      r#   (test_ignore_object_identity_in_not_equalz8TestComparisons.test_ignore_object_identity_in_not_equalK  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)r5   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)r5   r   r   r   r]   s    r#   test_object_dtypez!TestComparisons.test_object_dtypee  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)r5   r   r   r   pytestraisesr   int64r]   s    r#   test_object_nonbool_dtype_errorz/TestComparisons.test_object_nonbool_dtype_errori  s    xxA3d+11T999 ]]9,>?HHQ* @ ]]9,>?HHQ01 @? @? @?s   '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   )r5   r~   r   integer)
r^   r   r   r   r   a1a2expecteds1s2s
             r#   $test_large_integer_direct_comparisonz4TestComparisons.test_large_integer_direct_comparisont  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    )rP   r   py_comp_funcs     r#   r$   zHTestComparisons.test_unsigned_signed_direct_comparison.<locals>.<lambda>      <1#5r&   c                      ||       S r   r    )rP   r   np_comp_funcs     r#   r$   zHTestComparisons.test_unsigned_signed_direct_comparison.<locals>.<lambda>  r	  r&   r}   r   r,   )r5   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&   )rc   rd   re   operatorr   markparametrizer5   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   )r5   zerosr   float64r	   sumr   s     r#   test_reduce_alignmentzTestAdd.test_reduce_alignment  sG    
 HHQRXXbjj0ABC#QsVZZ\1%r&   N)rc   rd   re   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+   r3   Z   d   iirw   r)  )	g?皙?g?r   g皙gr,   g333333)	r   r   r   r   r,   r,   r,   r,   r-   )	r+   r3   r(  r   _   r(  r3   r   P   )r5   r~   r	   r^   rP   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&   rW   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}   )r5   r  r:  evalr   errstater   r   allr   r   FloatingPointErrorr~   )r^   r   ex_valneglsizer   r   divisorsr   r   c_divacdiv_abrP   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8%QuQ(%G8u'(-#-(rW}%-v-%   [[g6Av]]#5JLFL L Qvv"&&A+]]#5DFGF F R1FHQH 1FHVVXqH
 HHRu%*- 76+ *) > =< 9L LF F
H HH H# 76s   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 r8  r9  r;  s     r#   r$   z7TestDivision.test_division_int_reduce.<locals>.<lambda>)  s*    aA!rvv+!r'AD1Dr&   rW   r>  z#Reduce floor integer division checkrB  r@  z$divide by zero encountered in reducer   r,  r)  zoverflow encountered in reducer   r,   r}   )r5   r  rC  r   rD  floor_divider   r   r   rF  aranger   r:  r~   )
r^   r   rG  r   lstrK  rR  rN  rO  r=  s
            @r#   test_division_int_reducez%TestDivision.test_division_int_reduce  sG    XXe_Lhhj
 [[)OO**1-E *$3$$[[g61@B&&ryys';'B'B5'IJB vv]]#5>@OO**"&&!R>@ 76 *)B B@ @ 76sJ    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+   r3  rB  r?  rY   )r   r   r5   isnatr~   rE  r   r   skiprD  r   rF  )r^   dividendrQ  quotientrO  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' 7 >=6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   )r5   r~   
complex128r   )r^   rO  rP   r   s       r#   test_division_complexz"TestDivision.test_division_complex`  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)NrW   rY   r?          r}   rJ   r   )
r5   rD  r~   rn  r   isinfcomplexinfr   isnan)r^   rP   r   s      r#   test_zero_division_complexz'TestDivision.test_zero_division_complexk  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}      )r5   r~   rn  r   r   r   divmod	remainderr1  s     r#   test_floor_division_complexz(TestDivision.test_floor_division_complexy  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 )Nr3   r   r   )r5   r!  r	   signbitr1  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}   rJ   rr  rB  rW   ra  rE  )r5   r~   r   ru  rD  r
   rF  rW  )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,[[:,bootTJ ;[[':OOD$' ; [[W%OOD$'OOD$'OOD$'OOD$'	 &% ;::: &%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)
Nr3   r}   rJ   rr  z)invalid value encountered in floor_dividedt: , div: rW   r>  )r5   r!  onesr~   r   ru  r   filterRuntimeWarningrW  rv  dtrD  r   rs  rE  )r^   r   rP   r   r  r  r  r  supdivzs              r#    test_floor_division_corner_casesz-TestDivision.test_floor_division_corner_cases  sU    HHRu%GGBe$xxe,xx5)xx5)xxe, CJJ~'RS//$-C88C=@C#@@=//$-C88C=@C#@@=//$-C88C=@C#@@= ! [[)1%ABHHQKOO%& *) !  *)s   1CG'AG3'G03G<N)rc   rd   re   r2  r   r  skipifr   r  	itertoolsproductr5   r  rT  rZ  timedelta64rh  ro  rw  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   )r5   rW  r{  rP   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,   )r5   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}      rl  r,   r   )r5   r  r  rz  r  r  r  rc   r~   r	   r   r^   r  opdt1dt2sg1sg2fmtrO  r   r   r  rems                r#   test_remainder_basicz"TestRemainder.test_remainder_basic  s   \\,'",,w*??-ryy9B%--b"5S ) 1 1&+vc{ KHCFCc3S AACRs3ARs3A!!QxHC Qa=byC1c2C1c2 !L 6 :r&   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   )rz  ).0ts     r#   	<genexpr>z;TestRemainder.test_float_remainder_exact.<locals>.<genexpr>  s     +s!61:ss   r}   rr         r  zop: z	, dtype: rl  )listranger  r  r5   r~   r   Tr   wherer  rz  r  rc   r   r	   )r^   nlstplstrd  rQ  argtgtr   r   tgtdivtgtremr  r  rO  fafbr  r  s                     r#   test_float_remainder_exactz(TestRemainder.test_float_remainder_exact  sV    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9Bll7+-/[["=XXb\XXb\b":SS&#6S&#6 , :r&   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}   rl  r,   r   )
r5   r  r  rz  r  r  rc   r~   r	   r   r  s                r#   test_float_remainder_roundoffz+TestRemainder.test_float_remainder_roundoff  s    \\'"-ryy9B%--b"5S ) 1 1(H EHCFCc3S AACRC8AT5A!!QxHC Qa=byC1c2C1c2 !F 6 :r&   r3  r4  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)Nrr  r}   rJ   rB  rW   ra  rX   )r5   r~   ru  r   rD  r
   rF  rz  )r^   r   fzeror  r  r  s         r#   test_float_divmod_errorsz&TestRemainder.test_float_divmod_errors  sX    E*xx5)xxe,xxe, [[:,biiuE ;[[':,biiuE ;[[),biiF *[[),biitD *[[':,biiuE ;[[:IIdE" ;: ;:::))))::::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)Nrr  r}   rJ   rB  r  zinvalid valuer   )r5   r~   ru  r   rD  r   r   rF  )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)NrW   )rA  rY   r*   r   rB  )rY   rA  )
r5   finfor"  tinyrD  rz  rs  r   r
   rF  )r^   r   r  mods       r#   test_float_remainder_overflowz+TestRemainder.test_float_remainder_overflow2  s    HHRZZ %%[[h9yyAHCHHSMC1H : [[gx8,biiA> 9[[x8,biiA> 98 :9 9888s$   =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}   rJ   rr  z#invalid value encountered in divmodz$divide by zero encountered in divmodr  r  , rem: )r5   r  r~   r   ru  r   r  r  rz  rs  rv  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'B88BFF"-D88Cr*D88Cr*D88BFF"-D"$

>+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}/ %$ (
 %$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  rJ   r}   rr  zdt: %sz&invalid value encountered in remainderz!invalid value encountered in fmodr  r  z, fmod: )r5   r  r~   r   	nextafterr{  r   r   r  r  ru  rv  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^  sM   ,,w'B88Cr*D88Cr*D88BFF"-DB'ARXXc4qb9A,,q!$CC1Hhm,,,rA2&CCA2Ix"}- (  CJJ~'OPJJ~'JKll7+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 , !  s   N>SSN)rc   rd   re   r  r  r  r   r  r  r   xfailsysrC   rF   r  r5   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    ar&   c                 @    t        j                  |       j                  S r   r5   r  r:  r}   s    r#   r$   z4TestDivisionIntegerOverflowsAndDivideByZero.<lambda>  s    RXXe_00r&   c                 B    t        j                  |       j                   S r   r  r}   s    r#   r$   z4TestDivisionIntegerOverflowsAndDivideByZero.<lambda>  s    "((5/"5"5!5r&   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  r3  r4  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?   r5   r  r:  r   warnsr  r   r  rz  
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 L 99		)))S>RXXcii%8%<%<<<< )C99		)))S>Q&&&''#s#CS>Q&&& n4JKYYsC0
d L ::8syy88888T?bhhsyy&9&=&====T?a'''+ 8@KK LKs   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   r5   rz  r  s
             r#   test_divide_by_zeroz?TestDivisionIntegerOverflowsAndDivideByZero.test_divide_by_zero  s    
 .aE:7?3Ci!3n4DESj F 99		)))S>Q&&&n4DEYYsC0
d F ::8syy88888T?a'''T?a''' 8@EE FEs   C1C=1C:	=D	dividend_dtyper   divisor_dtype	operationwarnr@  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  r5   r~   r  r:  r   itemsizerz  rW  r  floordivr   r  r  overflow_resultsr  flattenlenr   r  )
r^   r  r  r  rS  arraysrQ  resultr   expected_arrays
             r#   test_overflowsz:TestDivisionIntegerOverflowsAndDivideByZero.test_overflows  s    ;@3-I:GQ ((BHH^4889!;!/1:G 	 I((B4}5 88N#,,1'x(,5		2??H4E4E:G -G"35 #*288N+C+G+GH)"- !6!6y!A!H!H&"( ( ( (5  \\&79  XXi7&;<DDSIF%'XX!229=DD .0 114Q8&99@ # 'v~>9 9	  &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5 59 9s   ?K#5AK(4BK5(K25K?	N)rc   rd   re   r   r  helper_lambdasr5   r{  r  r  r  r   rW  rz  r  r   r  r  r   r  r  r  r  r  rD  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   r5   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 )NrJ          @      r)   )	r5   r~   ru  r   r  r   rv  r   r	   r1  s     r#   	test_cbrtzTestCbrt.test_cbrt   s    HHb"c266BFF734BGGAqDM1-)*RWWRVV_bff-RWWbffW%w/r&   N)rc   rd   re   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)rJ   r        @r   rJ   rJ   rJ   r   r   )rJ         @      "@r,   )rJ   rw   gUUUUUU?rw   rJ   r)   unary   r   r   max_sizerl  r{   ry  )
r5   r~   r	   r   r   rj   sqrtr   r  r"  )r^   rP   r   r{   inprO  rS  exps           r#   test_power_floatzTestPower.test_power_float*  si   HH\"QT<(QT1QT<(FFH	aQ%AG_5AHr388A;&DE0rzz6=:<>MCc ),,1388A;C,c
C=GGCS!c3/> 1rzz6=:;=MCc ),,1388A;C,c
C=GGCS!c3/= - -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)rk         @      @      @      @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̱~&|grw   rk  r%  r&  rJ      )y         ~@y   0vA   ΋Ay  A   ]Ac                     t        | j                  |j                         t        | j                  |j                         y r   r   rN   imagr  s     r#   assert_complex_equalz:TestPower.test_power_complex.<locals>.assert_complex_equalX  &    qvvqvv.qvvqvv.r&   r}   rW   rX   )
r5   r~   r	   r   rj   r   rt  ru  complex_rD  )r^   rP   normrS  r+  r  s         r#   test_power_complexzTestPower.test_power_complexE  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9A!BKK0AX.$QT1-$QT1Q3/$QT1Q3q51 /. :? /.s   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   )r5   r   r   rN   r*  r  s     r#   r+  z7TestPower.test_power_zero.<locals>.assert_complex_equalk  s?    ::a="**Q-qAqvvqvv.qvvqvv.r&   )	gQ?rw   r         ?r   r)   r*   r+   gffffff@r   rW   rX                 ?y      𿚙?)r5   r~   rt  r   powerrD  )r^   r  onecnanr+  ps         r#   test_power_zerozTestPower.test_power_zeroc  s    xx~hhvxx012	/ 6A $!2D9 6 	RXXdA.4[[* $!5t< :$RXXdQB%7> : $!8$? +**s   A D,,D5r3  r4  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)Nr1  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       @      rj  r2        ?      )expected_warning            ?y             y              r5  y              r+   )	r5   r~   rt  r   r6  r   r  r  r  )r^   r  r8  r+  r   s        r#   test_zero_power_nonzeroz!TestPower.test_zero_power_nonzero~  s=    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)   )	r5   r~   int16r   r   r   may_share_memoryr	   shape)r^   rP   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)r5   r~   r6  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+  r3   r}   r   r  r5   r  rX  r	   r6  	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  r3   r}   r   rM  rO  s       r#   test_integer_power_of_1z!TestPower.test_integer_power_of_1  sH    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   r3   r}   r   )r5   r  rX  r	   r6  
zeros_likerO  s       r#   test_integer_power_of_zeroz$TestPower.test_integer_power_of_zero  sJ    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,   )r5   r  r~   r
   r   r6  )r^   r   r  r   r   r7  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   )r5   r  r"  r~   ru  r	   r6  )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)rc   rd   re   r#  r/  r:  r   r  r  r   r@  rF  rK  rP  rR  rU  rX  rZ  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   r5   r  float_powerr   r   name)r^   arg_typeres_typedtindtoutrO  r  r"   s           r#   test_type_conversionz$TestFloat_power.test_type_conversion  sp    %%x2KD%+/7C''!4(C..c*CCIINNbhhuo&:&::C@	 3r&   N)rc   rd   re   re  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+      ry  rl  rB  r3   r}   )r5   r~   r   log2r^   r  rP   r   xfyfs         r#   test_log2_valueszTestLog2.test_log2_values  s>    9.XXar"XXar"BGGBK,r&   rS  r   A   c                 h    t        j                  d|z        }t        |t        |      d|z         y )Nr  zat exponent %drl  )r5   rs  r	   r   )r^   rS  vs      r#   test_log2_intszTestLog2.test_log2_ints  s+     GGBENQa*:Q*>?r&   r3  r4  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)NrJ   rr  T)recordalways       r   r   r   )r	   r5   rs  ru  r   rv  r   warningscatch_warningsfilterwarningsr  category)r^   ws     r#   test_log2_specialzTestLog2.test_log2_special  s	   RWWR["%RWWRVV_bff-)*$$D1Q##Hb.ABHHRWWS\*+BHHRWWbffW-./rvvg.AaDMM^34AaDMM^34AaDMM^34 211s   0DGGN)rc   rd   re   r   r  r  rw  r  r{  r  r   r  r    r&   r#   rg  rg    s|    [[T?3- 4- [[S%2,/@ 0@ [[(FG5 H5r&   rg  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 )Nrk  rq  rh  r}   )r5   r~   r   exp2r^   rP   r   r  ru  rv  s         r#   test_exp2_valueszTestExp2.test_exp2_values  sH    9.!B!2&B!2&BR0 "r&   N)rc   rd   re   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   )rr  rr  rr  rr  rr  rh  )rr  rH  rH  r}   decimal)r   r5   rs  r~   r   
logaddexp2	r^   rP   r   r  r  dec_ru  rv  zfs	            r#   test_logaddexp2_valuesz%TestLogAddExp2.test_logaddexp2_values  s    O[9HB!2./B!2./B!2./Bb" 5r4H	 :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  rh  r}   )r5   r~   r   r  r^   rP   r   r  r  logxflogyflogzfs           r#   test_logaddexp2_rangez$TestLogAddExp2.test_logaddexp2_range  s`    222!BHHQb)EHHQb)EHHQb)EeU ;U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Nr   rB  rX   rh  r}   )r5   ru  rD  r~   r	   r  	r^   ru  rP   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[[)%"-"-"-R]]5%8%@	 & *))   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   r5   rv  r  r   ru  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	   r5   r  identityru  r   r]   s    r#   test_reducezTestLogAddExp2.test_reduce5  s    R]]++bffW5R]]))"-w7R]]))BFF7)4rvvg>R]]))BFF7A,7;r&   N)rc   rd   re   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)Nrk  rq  rh  9B.?r}   )r   g      ?r)   gRQ?gl#	?r  rB  r  ri  z=Overflow has occurred for np.log(np.finfo(np.longdouble).max))r5   r~   r   logrD  r  r  rF  r   r   rc  )r^   rP   r   r  log2_ru  rv  excs           r#   test_log_valueszTestLog.test_log_values=  s   9.!B*E!2&B!2&u,Br
B/	 " 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*   r/   r.   r-   r,   r   r   r)   r*   r   r)  {Gz?      Y@r   rJ   r)   r,   r*   nulp)
r5   r   seedr~   rX  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 BJJryy00T20NOE

I #Ia1fVVE]Fy)I.rvveDbDk/BF4R4LWXY.rvvi"o/F	RVTVRV^_`  r&   N)rc   rd   re   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 )Nrk  rq  rh  r  r}   )r5   r~   r   r"  )r^   rP   r   r  r  ru  rv  s          r#   test_exp_valueszTestExp.test_exp_valuesk  sR    9.!B*E!2&B!2&u,Br
B/	 "r&   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  )	r5   r   r  r~   rX  r"  r  r"  r   )r^   r  r  r  r  r  r  s          r#   test_exp_strideszTestExp.test_exp_stridest  s    
		r((01		!C BJJryy00T20NOEVVE]F.rvveDbDk/BF4R4LWXY  r&   N)rc   rd   re   r  r  r    r&   r#   r  r  j  s    0Zr&   r  c            $          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      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d.ge3fd.gd-z  e3fd/ge4fd/gd-z  e4fd0ge7fd0gd-z  e7fd1ge7fd1gd-z  e7fd2d2d2ejt                  ge5fd2d2d2ejt                  gd-z  e5fejt                  d/d/d/ge4fejt                  d/d/d/gd-z  e4fejt                  gg fejt                  gd-z  g fd2d2d2ej*                  ge,e5z   fd2d2d2ej*                  gd-z  e,e5z   fej*                  d/d/d/ge,fej*                  d/d/d/gd-z  e,fej*                  ge,fej*                  gd-z  e,fd2d2d2ej*                   ge3e,z   e5z   fd2d2d2ej*                   gd-z  e3e,z   e5z   fej*                   d/d/d/ge3e,z   fej*                   d/d/d/gd-z  e3e,z   fej*                   ge3e,z   fej*                   gd-z  e3e,z   ff      d3                             Z;y4)5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)NrB  )underrA  rr  rn   r  r   ri  r}   )r5   rD  r   ru  r~   r	   r"  r  s         r#   r  z!TestSpecialFloats.test_exp_values  s    [[wW5"&&"&&"-A"&&"&&266'2A*XXar*XXar*RVVBZ, + 655s   CC''C02.17z<Older glibc versions may not raise appropriate FP exceptionsr4  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)NrB  rA  g o_.&@r  g =`XCg      @r  g     1g     @g =`X)r5   rD  r
   rF  r"  float16r  r"  r]   s    r#   test_exp_exceptionsz%TestSpecialFloats.test_exp_exceptions  sA   
 [[g&,bffbjj6IJ,bffbjj6FG,bffbjj6FG,bffbjj6FG,bffbjj6FG ' [[w',bffbjj6GH,bffbjj6HI,bffbjj6GH,bffbjj6HI,bffbjj6GH (' '& ('s   C;H40C;I4H>I
r3  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)NrW   r  rr  r         r  r}   rB  r>  rn   r  r   rX   g    eAr  )r5   rD  r   ru  r~   r	   r  rs  log10log1pr
   rF  r   )	r^   rP   r   y1pr  ru  rv  yf1pr   s	            r#   r  z!TestSpecialFloats.test_log_values  s#   [[X&"&&"&&AA"&&"&&266'3=A66BFF7BFFRVVGT4@C*XXar*XXar*xx2.RVVBZ,RWWR["-RXXb\2.RXXd^R0 +	 ' [[(%0"&& hhs"570"'' hhs"570"(( hhs"57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0"(( hhwb9;0"(( hht268 & *(  !I.AFF1I "!Y '& )( *)( "!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)NrW   r  r}   )r5   rD  r   ru  r~   r	   sincos)r^   r   rP   r   ru  rv  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)NrB  r  z0x1.f37f47a03f82ap-511r}   )r5   rD  r~   r   fromhexr"  r  r  )r^   underflow_triggers     r#   test_sincos_underflowz'TestSpecialFloats.test_sincos_underflow  s[     [[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)NrB  rX   r}   )r5   rD  r
   rF  r~   )r^   r  r   r  s       r#   test_sincos_errorsz$TestSpecialFloats.test_sincos_errors  s9    
 [[),h%.0 *))s   (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  )rO   r5   r   default_rngstandard_normalr	   )	r^   r  r   r<   Nr\  rngrP   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)NrW   r  rr  r}   )r5   rD  r   ru  r~   r	   r   rt  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 )Nrr  rJ   r  r  r  r}   )r5   r   ru  r~   r	   rO   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)NrW   r  r  r}   rB  r       @@rn   gnFr  gZbtir   )	r5   r   ru  rD  r~   r	   squarer
   rF  r  s         r#   test_square_valuesz$TestSpecialFloats.test_square_values  s   VVbffbffbff-VVbffWbffrvvg.[[X&*XXar*XXar*RYYr]B/ + ' [[g&,bii((3c24,bii((4s35,bii((546 '& '& '&s   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)	NrW   r  rr  r  r  r}   rB  r>  )	r5   rD  r   ru  r~   r	   
reciprocalr
   rF  r  s         r#   test_reciprocal_valuesz(TestSpecialFloats.test_reciprocal_values$  s    [[X&"&&#tRVVbffW=A"&&"&&266'2s;A*XXar*XXar*R]]2.3 + ' [[(*0"-- hht268 + )( '& )(s   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)	NrW   r  rr  r  r  r}   rB  rX   )	r5   rD  r   ru  r~   r	   tanr
   rF  r^   in_r{   r  in_arrout_arrs         r#   test_tanzTestSpecialFloats.test_tan3  s   [[X&66BFF7Crvvw?C662663bffbff=C%#R0((3b1RVVF^W5 & ' [[)%0"&& hhrvvR8:0"&& hhwb9; & *) '& *)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)	NrW   r  r  r}   r  r  rB  rX   )
r5   rD  r   ru  r~   r	   arcsinarccosr
   rF  )r^   r  r{   r  r   r  r  r  s           r#   test_arcsincosz TestSpecialFloats.test_arcsincosD  s%   [[X&66BFF7BFFRVVG4C662662662662C%#R0((3b1RYYv.8RYYv.8	 & ' BII.H&&266'35)BW5%&8(&(hhuB&?A 65 * 6 / '& 65s   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)NrW   r  r  r}   )r5   rD  r   r~   r	   arctanr  s         r#   test_arctanzTestSpecialFloats.test_arctanV  s}    [[X&66BFF7#C66266"C%#R0((3b1RYYv.8 & '&&s   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}   rB  r        (@rn   g      ^@r  g     @r   )	r5   r   ru  r~   r	   sinhrD  r
   rF  r  s         r#   	test_sinhzTestSpecialFloats.test_sinh_  s    vvw0vvrvvrvvw/!BXXc,Fhhs"-G'2 "
 [[g&,bgg((4s35,bgg((546,bgg((657 '&&s   *BFFc           	      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  )	r5   r   ru  r~   r	   coshrD  r
   rF  r  s         r#   	test_coshzTestSpecialFloats.test_coshp  s    vvw0vvrvvrvvrvv.!BXXc,Fhhs"-G'2 "
 [[g&,bgg((4s35,bgg((546,bgg((657 '&&s   )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 )NrJ   r  r  r}   )r5   r   ru  r~   r	   tanhr  s         r#   	test_tanhzTestSpecialFloats.test_tanh  sv    vvw0vvrvvsD)!BXXc,Fhhs"-G'2 "r&   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}   )r5   r   ru  r~   r	   rK   r  s         r#   test_arcsinhzTestSpecialFloats.test_arcsinh  s    vvw0vvrvvrvvw/!BXXc,Fhhs"-GF+W5 "r&   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)	NrW   r  rJ   rr  r  r}   rB  rX   )	r5   rD  r   ru  r~   r	   arccoshr
   rF  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        ` y # 1 sw Y   xY w# 1 sw Y   wxY w)NrW   r  rJ   r  r  r  r}   g)\(?rB  rq  )	r5   rD  r   ru  r~   r	   arctanhr
   rF  r  s          r#   test_arctanhzTestSpecialFloats.test_arctanh  s   [[X&66BFF7BFFRVVGS$DC66266266266266BFF7BFFKC%#R0((3b1RZZ/9 & ' BFFRVVGS$7EWW=)B!"4bjj"$((5";= * >= 8 '& >=s   DF*"<F6*F36F?	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)	NrW   r  rr  r  r}   )     @@g     @rB  )rA  r  )	r5   rD  r   ru  r~   r	   r  r
   rF  r  s          r#   	test_exp2zTestSpecialFloats.test_exp2  s    
 [[X&66BFF7BFFRVVG4C662662663/C%#R0((3b1RWWV_g6 & ' 'E'9)B!"4bgg"$((5";= * :9 ' '& :9s   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)
NrW   r  r  r  r}   )g      i@r  rB  r  )rn   r  )	r5   rD  r   ru  r~   r	   expm1r
   rF  r  s          r#   
test_expm1zTestSpecialFloats.test_expm1  s    [[X&66BFF7BFFRVVG4C6626626640C%#R0((3b1RXXf-w7 & ' %E'*$B!"4bhh"$((5";= % +* % '& +*s   CE <EEE	win32l       z*failures on 32-bit Python, see FIXME belowufunczdata, escapegQ?rn  r  rJ   rr  r  rw   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)Nrn   r}   )r5   spacingceilr~   r   )r^   r%  r   dataescaper~   s         r#   test_unary_spurious_fpexceptionz1TestSpecialFloats.test_unary_spurious_fpexception  sZ    V evo RZZ))eslU+!%L "!!s   	A##A,N)<rc   rd   re   r  r   r  r  r   r  r  r   r  r  r  r  rC   rF   r  r5   r  r  ru  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  rs  r  r  r   r  NEG_INVALID_ERRONE_INVALID_ERRLTONE_INVALID_ERRr  
BYZERO_ERRmaxsizeUFUNCS_UNARY_FPr   r+  r    r&   r#   r  r  ~  st   - [[&!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7 H7 36 [[(FG= H= [[(FG= H=  [[&!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r&   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*  r/   r.   r-   r,   r   r   r*   r+   rr  ry  rl  rB  r3   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  rJ   r  rr  iVQ  iVQ r   r}   gJ-& 6gJ-& r  
TTFFFFFFFF
FFTTFFFFFF
FTFTTFTFFT
FFFFTTTTTT)	r5   r~   r   ru  r	   rv  rs  r~  isfinite)r^   r<   arr_f64arr_f32r   ru  signfinites           r#   test_fpclasszTestFPClass.test_fpclass   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  rJ   r  rr  r6  r7  r}   r8  r9  r:  r;  r   r   r)   FTr  r   )r5   r~   r   ru  r   rE  r	   r   c_contiguousrv  rs  r~  r<  array_split)r^   r   r)  r   ru  r?  r@  r{   
ncontig_inncontig_out	contig_in
data_split	nan_split	inf_split
sign_splitfinite_splits                   r#   test_fp_noncontiguousz!TestFPClass.test_fp_noncontiguous2  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)rc   rd   re   r   r  r  rA  rM  r    r&   r#   r4  r4    sU    [[X (9 :G:G  [[WsCj1+< 2+<r&   r4  c                       e Zd Zej                  j                  dg d      ej                  j                  dddg      d               Zy)	TestLDExpr<   r/   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      ?      ?rw   rJ   rJ   r  r  g       @r}   )r)   r   r   r   r   r,   r-   r.   rS  rl  r  )r5   r~   r!  r	   ldexpr  )r^   r   r<   mantr"  r{   s         r#   
test_ldexpzTestLDExp.test_ldexpa  s     xx>eLxx33?xx'RXXd8V8nc(F(mXvXOQSQXQXYZbgQhiqkqiqQrsS6]BGGAU$;HfH$EFr&   N)rc   rd   re   r   r  r  rU  r    r&   r#   rO  rO  `  sE    [[X'78[[WsCj1G 2 9Gr&   rO  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<   rP  r   r  r   gh23048r4  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 )Nrr  r  rJ   r  r}   rw         )r   r   r   r   r   r   r   r   rS  rl  r   r  )r5   r~   r   ru  r  r   r	   )
r^   r   r<   r   	mant_trueexp_trueout_mantout_exprT  r"  s
             r#   
test_frexpzTestFRExp.test_frexpk  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)rc   rd   re   r   r  r  r  r   r  r  rC   rF   r`  r    r&   r#   rW  rW  j  s    [[X'78[[WsCj1[[wy1[[CLL33G<<b  d
<d 2 2 9

<r&   rW  )r   rr  r  )r         Yr  )r   rJ   r  )r   ra  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   rn  r   maxulp)r5   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$**,JD$QI!WF!WFa T*

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

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

90EF 

90EF(

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

98M#,. !8%e}H%e}H%$VE$B$K%8(4R4.I$VE$B$K%8(4R4.I &' $ -r&   N)rc   rd   re   rz  r    r&   r#   rg  rg    s    Jr&   rg  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  rr  fffffV@r  r   r)   ri  )r5   r   r  r  r  r"  r   r"  r^   ru  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  rr  r   r  r   r*   ri  )r5   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   ra  r  r  g   vH7Br   ri  r  )r5   r   r  int_r   r  r  r   randr"  r   r  r  r   )r^   r  r\  indexru  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  )r5   r   r  r~   rX  r  r  r   r"  r  r  r  r   )r^   r  r  r  ru  x_f32_larger]  log_truesin_truecos_truer  s              r#   test_strided_float32z1TestAVXFloat32Transcendental.test_strided_float32  sZ   
		r((01		!C BJJryy00Tt0LME**,K"*K"Qvve}Hvve}Hvvk*Hvvk*H.rvveDbDk/BHTrTNYZ[.rvveDbDk/BHTrTNYZ[.rvvk$B$6G/H(SWUWSW._`a.rvvk$B$6G/H(SWUWSW._`a	  r&   N)rc   rd   re   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   r5   r  r~   r   	logaddexpr  s	            r#   test_logaddexp_valuesz#TestLogAddExp.test_logaddexp_values  s    O[9HB"-.B"-.B"-.BR 4b$G	 :r&   c                     g d}g d}g d}dD ]g  }t        j                  ||      }t        j                  ||      }t        j                  ||      }t        t        j                  ||      |       i y r  )r5   r~   r   r  r  s           r#   test_logaddexp_rangez"TestLogAddExp.test_logaddexp_range  s`    222!BHHQb)EHHQb)EHHQb)EUE :EB	 "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  )r5   ru  rD  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   r5   rv  r  r   ru  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	   r5   r  r  ru  r   r]   s    r#   r  zTestLogAddExp.test_reduce  s;    R\\**RVVG4R\\((,rvvg6r&   N)rc   rd   re   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   rj   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)NrW   rq  r  r  )r5   rD  r	   rj   r  r   ru  r]   s    r#   test_specialzTestLog1p.test_special	  s    [[(;266*BFF3266*BFF33"&&130BFF7+RVV4 <;;s   DD//D8N)rc   rd   re   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   rj   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 )Nrr  r  r  )r	   rj   r"  r5   ru  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=)r5   r   r   rj   r"  r   rn  r1  s     r#   test_complexzTestExpm1.test_complex  sF    JJu399Q<(HHR]]#399Q<(r&   N)rc   rd   re   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   rj   hypotr   r]   s    r#   test_simplezTestHypot.test_simple&  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@rr  )r   rj   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)rc   rd   re   r  r  r    r&   r#   r  r  %  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)NrW   rX   hypot(, ) is 	, not nan)r5   rD  r   rv  rj   r  r  s     r#   assert_hypot_isnanr  1  L    	X	&1a)23Q		!QH	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)NrW   rX   r  r  r  z	, not inf)r5   rD  r   rs  rj   r  r  s     r#   assert_hypot_isinfr  7  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  r5   r   r]   s    r#   test_nan_outputsz'TestHypotSpecialValues.test_nan_outputs>  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  r5   r   ru  r]   s    r#   test_nan_outputs2z(TestHypotSpecialValues.test_nan_outputs2B  sb    266266*266266*2661%1bff%266266*2664(r&   c                 V    t        t        j                  t        j                  d       y r  )r   rj   r  r5   ru  r]   s    r#   test_no_fpez"TestHypotSpecialValues.test_no_fpeJ  s    399bffa0r&   N)rc   rd   re   r  r  r  r    r&   r#   r  r  =  s    &)1r&   r  c                     t        t        j                  t        j                  | |            d| d|dt        j                  | |      d       y )Narctan(r  r  r  )r   r5   rv  rj   arctan2r  s     r#   assert_arctan2_isnanr  N  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   r5   rs  rj   r  r  s     r#   assert_arctan2_ispinfr  R  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  V  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   rj   r  r5   r~  r  s     r#   assert_arctan2_ispzeror  Z  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  ^  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   rR  r,         п      ?)r   rj   r  r5   rk   r]   s    r#   test_one_onez%TestArctan2SpecialValues.test_one_onec  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   rj   r  r5   PZERONZEROrk   r]   s    r#   test_zero_nzeroz(TestArctan2SpecialValues.test_zero_nzeroi  sF    CKK"((;RUUCCKK"((;beeVDr&   c                     t        t        j                  t        j                         t        t        j                  t        j                         y r   r  r5   r  r  r  r]   s    r#   test_zero_pzeroz(TestArctan2SpecialValues.test_zero_pzeron  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   rj   r  r5   r  rk   r  r]   s    r#   test_zero_negativez+TestArctan2SpecialValues.test_zero_negatives  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_positivex  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   rw   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,   r[  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   rj   r  r5   NINFrk   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  r5   ru  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   rw   r[  r   rj   r  r5   ru  rk   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 )NrR  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  r5   r   ru  r]   s    r#   test_nan_anyz%TestArctan2SpecialValues.test_nan_any  s8    RVVRVV,RVVRVV,RVVRVV,r&   N)rc   rd   re   r  r  r  r  r  r  r  r  r  r  r  r  r  r    r&   r#   r  r  b  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   rj   rS  r5   r~   r  r"  rn  )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  rS  r   )r   rj   rS  r  r5   int8rC  r   r]   s    r#   rU  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)NrW   r  r   r  r   )
r5   rD  r  r   r  r:  r	   rj   rS  ru  )r^   imaximins      r#   test_ldexp_overflowzTestLdexp.test_ldexp_overflow  s    [[h'88BHHSM*..D88BHHSM*..D2t,bff52t,a0	 (''s   B3CCN)rc   rd   re   r  rU  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,   r3   r   )r5   r  rX  maximumr   r   r	   r   	r^   dfltdintseq1seq2ro  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	   r5   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  )r5   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   rJ   )r  r5   r~   r   r   r   r	  r^   rS  rP   r   r  s        r#   test_object_nanszTestMaximum.test_object_nans  o     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}   )r5   r   rt  r~   r	   r	  r^   r   r8  r  r  r{   s         r#   test_complex_nanszTestMaximum.test_complex_nans      ffS!_gaowsC7HID88QdO7;D88T1dO7;D((Cc?':CD$/5	 Jr&   c                     t        j                  dt              }|dz   }t        t        j                  ||      |       y Nr+   r}   r   )r5   rX  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      rJ   g      $@rr  r  r  r  rl  r   r*   r)   rr  r  )r5   r~   r   ru  r  r	   r	  )r^   r9   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-  )r5   r  r  r"  rn  r  r:  r  r  ru  r   r	   r	  r   r^   r   r  dtmindtmaxd1d1_next
test_casesrQ   rR   r   s              r#   test_precisionzTestMaximum.test_precision		  s    **bjj"**bmmDBHHRL$$EHHRL$$ECBll2rvv.G E*E*G,BFF+J %/ BRZZrd3hZ@RZZ..Bx8(C %/ r&   Nrc   rd   re   r  r  r  r  r#  r(  r.  r7  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   )r5   r  rX  minimumr   r   r	   r   r
  s	            r#   r  zTestMinimum.test_reduce 	  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	   r5   r<  r   r]   s    r#   r  zTestMinimum.test_reduce_complex5	  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  )r5   r   r~   r	   r<  r  s        r#   r  zTestMinimum.test_float_nans9	  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  r5   r~   r   r   r   r<  r  s        r#   r  zTestMinimum.test_object_nans@	  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!  )r5   r   rt  r~   r	   r<  r"  s         r#   r#  zTestMinimum.test_complex_nansK	  r$  r&   c                     t        j                  dt              }|dz   }t        t        j                  ||      |       y r&  )r5   rX  r   r	   r<  r'  s      r#   r(  zTestMinimum.test_object_arrayS	  r)  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 r+  )r5   r~   r   ru  r  r	   r<  )r^   r9   r:   mintruer{   out_mintrues         r#   r.  zTestMinimum.test_strided_arrayX	  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 r0  )r5   r  r  r"  rn  r  r:  r  r  ru  r   r	   r<  r   r1  s              r#   r7  zTestMinimum.test_precisione	  s    **bjj"**bmmDBHHRL$$EHHRL$$ECBll2rvv.G E*E*B'BFF+J %/ BRZZrd3hZ@RZZ..Bx8(C %/ r&   Nr8  r    r&   r#   r:  r:  	  s+    -*82	-63
'Dr&   r:  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,   r3   r   rB  )r5   r  rX  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	   r5   rI  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  )r5   r   r~   r	   rI  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!  )r5   r   rt  r~   r	   rI  r"  s         r#   r#  zTestFmax.test_complex_nans	      ffS!_gaowsC7HID88QdO7;D88T1dO7;D((A!S>9Ct,c2	 J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 r0  )r5   r  r  r"  rn  r  r:  r  r  ru  r   r	   rI  r   r1  s              r#   r7  zTestFmax.test_precision	  s    **bjj"**bmmDBHHRL$$EHHRL$$ECBll2rvv.G E*E*G,E*J %/ BRWWbTB408*=RWW^^RH5x@ %/ r&   Nrc   rd   re   r  r  r  r#  r7  r    r&   r#   rG  rG  {	  s    (*7/3Ar&   rG  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   )r5   r  rX  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	   r5   rT  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  )r5   r   r~   r	   rT  r  s        r#   r  zTestFmin.test_float_nans	  rL  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!  )r5   r   rt  r~   r	   rT  r"  s         r#   r#  zTestFmin.test_complex_nans	  rN  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 r0  )r5   r  r  r"  rn  r  r:  r  r  ru  r   r	   rT  r   r1  s              r#   r7  zTestFmin.test_precision	  s    **bjj"**bmmDBHHRL$$EHHRL$$ECBll2rvv.G E*E*B'E*J %/ BRWWbTB408*=RWW^^RH5x@ %/ r&   NrP  r    r&   r#   rR  rR  	  s    (*5/3Ar&   rR  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}   )r5   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)r5   r  mapr   r   
logical_orr	  r	   r   r   logical_andr<  logical_xorr   )	r^   input1input2r  r   r  r  r{   ro  s	            r#   test_truth_table_logicalz!TestBool.test_truth_table_logical 
  s   \\*-||L12	 9-E::fE2D::fE2D ,C

3T$-44T:C@ 4 .C4T$-44T:C@ 5 -C6T$-44T:C@ 7 .r&   c                     g d}g d}g d}t        t        j                  ||      |       g d}t        t        j                  ||      |       g d}t        t        j                  ||      |       y )N)FFTT)FTFTrb  rc  rd  )r	   r5   
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   )r5   r~   r   r	   rg  r   rE  rf  anyrh  r#  )r^   nonesomeeveryr   arrsr   s          r#   r  zTestBool.test_reduce&
  s    xxd+xxd+t,T"dE5)C..s3SX>  C--c2CH=  C..s3SWWY]a5GH r&   N)rc   rd   re   r_  rk  rp  r  r    r&   r#   rZ  rZ  	  s    4A26Ir&   rZ  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'rl  )
bitwise_typesr5   r~   r   charr	   bitwise_notrm  ro  rn  r^   r  r!  r  rO  s        r#   test_valueszTestBitwiseUFuncs.test_values<
  s   $$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+ %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,   rz  )r{  r5   r~   r   r|  r   r}  r   rm  ro  rn  r~  s        r#   
test_typeszTestBitwiseUFuncs.test_typesT
  s    $$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 %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   rm  ro  r,   rn  )r   r5   rm  r  ro  rn  r]   s    r#   test_identityzTestBitwiseUFuncs.test_identity_
  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: ''rl  T)r5   rm  ro  rn  r{  r~   r   r	   r   r  r   r   r   r   r   )r^   binary_funcsr  r!  r  r  rO  r   r  r"   btypes              r#   test_reductionz TestBitwiseUFuncs.test_reductiond
  s   r~~r~~F$$BHHaS+E88RD>((,D!-/3QXXe_eSAQXXd^T3? " % $$Sb)BHHRr*E!-/3hhqzz*11"5hhuoS#s3		SYY.4 " * A !#CHHRv.E**C((5/Cc3/  A !#CHHdV62ED%)T137 r&   N)
rc   rd   re   r5   r   r{  r  r  r  r  )r  cr5   s   000r#   rx  rx  8
  s=    *BC*BQRXXa[*BCMH0	C>
%8U Ds   9rx  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 )Nr3   r}   r  Fr   r  )r5   r  rC  r   r   r   logical_not)r^   rP   r   r  oss        r#   test_logical_notzTestInt.test_logical_not
  sj    GGBbhh'GGF$'ffhCaCssV2>>!4e<1c"r&   N)rc   rd   re   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	   rj   FLOATING_POINT_SUPPORTr]   s    r#   test_floating_pointz%TestFloatingPoint.test_floating_point
  s    S//3r&   N)rc   rd   re   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@r[       V)r   rj   degreesr5   rk   r]   s    r#   test_degreeszTestDegrees.test_degrees
  s4    CKK.6CKKRUU
3U;r&   N)rc   rd   re   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  r[  )r   rj   radiansr5   rk   r]   s    r#   test_radianszTestRadians.test_radians
  s4    CKK.6CKK.RUU
;r&   N)rc   rd   re   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.  rr  r  g      @)rr  rr  rw   rJ   rJ   rr  r   r   r   rw   )
r5   r~   r   ru  r   rj   	heavisider	   r   r  )r^   rP   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)rc   rd   re   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)Nrr  r  r  rJ   r  rW   rX   )
r5   r~   ru  r   r!  rE  rD  rj   r?  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-  )r5   r~   r?  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   )r5   r~   r   r?  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)rc   rd   re   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)NrH  ry  r  r  r}   c                       dS )N
r    )r!  rO  s   r#   r$   z0TestMinMax.test_minmax_blocked.<locals>.<lambda>
  s
    sC#8r&   z#invalid value encountered in reduce)rO  g    _Brl  g    _)r5   r  r"  r   r  r   rX  r   r   r  r  r   rv  r  r:  r	   )	r^   r  szr{   rS  emsgr  r!  rO  s	          @@r#   test_minmax_blockedzTestMinMax.test_minmax_blocked
  s    

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

>#HJ 3> 3>	 - "CF D#>"CF E3? )"B : -,s   $A3E+	+E4c                    t        j                  dt         j                        dd j                  t         j                        }t        |j                         |d          t        |j                         |d          y )N   r}   r*   r/   r   )r5   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*   rl  rm  rn  r}   )	r5   r  r  	complex64diagflatr~   r   r	   r:  )r^   r<  r  r   s       r#   test_reduce_reorderzTestMinMax.test_reduce_reorder
  sj     #Azz2::r||<RXXrvvhl"%EFA BFF3 G = #r&   c                     t        j                  t         j                  d      }t        |t         j                         y r  )r5   r<  r   r	   r   s     r#   test_minimize_no_warnsz!TestMinMax.test_minimize_no_warns  s$    JJrvvq!Qr&   N)rc   rd   re   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  rl  r   r,   r}   )r5   r  r"  r   rj   rb  r	   r   rE  r\  r   ru  r  r   rX  r   rO   )
r^   r  r  r{   r!  rO  rS  r  rz  r   s
             r#   test_abs_neg_blockedz)TestAbsoluteNegative.test_abs_neg_blocked	  s   

B'"**a9FB!42G>@"B "BS#0341s||A4CS)S#s3()'*+s!r1vs+CS)S#s3&&266'2662A"388_IIchhb9"#A!"A%&266'\rq!*266#;3Gs,*33?*C4CEHCS1*33? - 3"B : 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*   r/   r  )	r5   r!  r   r   r"  r	   rO   r\  rN  r  s     r#   r  z%TestAbsoluteNegative.test_lower_align&  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  rJ   r  rr  r6  r        @rr  r7  ir3   r}   )rJ   r  rr  r  r7  r  r  rr  r  r6  rl  r+  r3   r   r   r  )	r5   r~   repeatr   rE  r   r\  rD  r	   )r^   r   r  r)  expectr{   rE  rF  rG  rH  expect_splits              r#   test_noncontiguousz'TestAbsoluteNegative.test_noncontiguous1  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)	rc   rd   re   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}   rl  )	r   r   rt  r   r5   rX  r]  r	   str)r^   valid_dtypesr   rP   r  s        r#   
test_validzTestPositive.test_validP  sG    UGV4!E		!5)A[[^FFCJ7 "r&   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   r5   r]  
datetime64r~   r  r   r]   s    r#   test_invalidzTestPositive.test_invalidW  s    9%KK &9%KKl34 &9%KK%45 &9%KK%78 &% &%%%%%%%s.   C=)D	=0D0D!=D	DD!D*N)rc   rd   re   r  r  r    r&   r#   r  r  O  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  r5   r!  r]   s    r#   	__array__z9TestSpecialMethods.test_wrap.<locals>.with_wrap.__array__f      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__i  s    K#	r&   Nrc   rd   re   r  r   r  s   r#   r  r  e  s    #r&   r  r   r   r   )	rj   r<  r	   r   r5   r!  r   r   r  )r^   r   rP   ro  argsrS  r  s         @r#   	test_wrapzTestSpecialMethods.test_wrapc  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 ra   )r5   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&   )rc   rd   re   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   r9  r  r   rn   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  r5   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>      1vr&   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0r&   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3r&   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>  
    1ayr&   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0r&   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3r&   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6r&   c                     dd| fS r  r    r  s    r#   r$   z>TestSpecialMethods.test_wrap_and_prepare_out.<locals>.<lambda>  s
    1a)r&   )r5   r   )r^   r  r  s     @r#   test_wrap_and_prepare_outz,TestSpecialMethods.test_wrap_and_prepare_outy  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_wrapr3   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   )r5   r   rj   multiplyr   r   r   r~   r^   r  r   rP   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>.Ar3   c                 h    t        j                  dd      j                  |       j                         S )NrJ   r"  r   r  s    r#   r   z?TestSpecialMethods.test_priority_with_scalar.<locals>.A.__new__  s'    zz#y166s;@@BBr&   N)rc   rd   re   r   r   r    r&   r#   Ar*    s    !#Cr&   r,  r   )r5   r   r"  r   r   r   r~   )r^   r,  r   rP   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  r0    s    #r&   r  r   )rj   r<  r	   r   r5   r!  )r^   r   rP   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#   r,  r6    s    #r&   r,  c                       e Zd ZdZy)+TestSpecialMethods.test_priority.<locals>.Br  Nrc   rd   re   r   r    r&   r#   Br:        !$r&   r<  c                       e Zd ZdZy)+TestSpecialMethods.test_priority.<locals>.Cg      D@Nr;  r    r&   r#   Cr?    r=  r&   r@  r   )r5   r!  rj   r<  r   r   r   r"  )	r^   r,  r<  r@  rP   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#   r,  rD    s    ##r&   r,  )r
   rI  rj   r	  r   r^   r,  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 )NrJ   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rc   rd   re   r   )rQ  s   r#   OkrO    s    !r&   rS  c                       e Zd Zd Zy)5TestSpecialMethods.test_failing_out_wrap.<locals>.Badc                     t         r   rH  r^   r  s     r#   r   zDTestSpecialMethods.test_failing_out_wrap.<locals>.Bad.__array_wrap__  rJ  r&   NrR  r    r&   r#   BadrU        #r&   rX  r   r3   )
r5   r~   r   r   r   r  r
   rI  rj   r   )r^   rS  rX  okbadrS  rQ  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__/      r&   r   r  r    r&   r#   r,  r_  +  s    #r&   r,  )r	   rj   r	  rK  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_wrapr3   c                 ,    t        j                  d      S r  r  r]   s    r#   r  zDTestSpecialMethods.test_default_prepare.<locals>.with_wrap.__array__:  r  r&   c                     |S r   r    r   s      r#   r   zITestSpecialMethods.test_default_prepare.<locals>.with_wrap.__array_wrap__=  s    
r&   N)rc   rd   re   r   r  r   r    r&   r#   r  rf  7  s    !##r&   r  r   )rj   r<  r	   r5   r!  r   r   r&  s       r#   test_default_preparez'TestSpecialMethods.test_default_prepare5  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_preparer3   c                 N    t        j                  |      j                        S Nr   r5   r~   r   r^   r   r   with_prepares      r#   r  zGTestSpecialMethods.test_prepare.<locals>.with_prepare.__array_prepare__K  s    xx}))|)<<r&   Nrc   rd   re   r   r  rs  s   r#   rs  rm  H  s    !#=r&   rs  r   rp  Tr  r   )r5   r   r~   r   r   r	   r   r^   rj  r   rP   rs  s       @r#   test_preparezTestSpecialMethods.test_prepareE  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_preparer3   c                 N    t        j                  |      j                        S ro  rq  rr  s      r#   r  zKTestSpecialMethods.test_prepare_out.<locals>.with_prepare.__array_prepare__]  s    xx}))|)<<r&   Nrt  ru  s   r#   rs  rz  Z  s    !#=r&   rs  r   rp  Tr  r   )	r5   r   r~   r   r   r   shares_memoryr	   r   rv  s       @r#   test_prepare_outz#TestSpecialMethods.test_prepare_outW  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__n  r  r&   Nc                     t         r   rH  r   s      r#   r  zDTestSpecialMethods.test_failing_prepare.<locals>.A.__array_prepare__q  rJ  r&   r   )rc   rd   re   r  r  r    r&   r#   r,  r  m  s    ##r&   r,  Fr  )r
   rI  rj   r	  rK  s      r#   test_failing_preparez'TestSpecialMethods.test_failing_preparek  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)rc   rd   re   r  r    r&   r#   r,  r  z  rY  r&   r,  z2 required positional)r   r   r5   r#  rK  s      r#   test_array_too_many_argsz+TestSpecialMethods.test_array_too_many_argsx  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^   ro  methodinputskwargss        r#   __array_ufunc__zATestSpecialMethods.test_ufunc_override.<locals>.A.__array_ufunc__  s    T66699r&   Nrc   rd   re   r  r    r&   r#   r,  r    s    :r&   r,  c                       e Zd ZdZy)9TestSpecialMethods.test_ufunc_override.<locals>.MyNDArrayr)  Nr;  r    r&   r#   	MyNDArrayr    r=  r&   r  r   r  r   r   __call__r)   r*   r{   )r5   r   r~   r   r%  r	   )r^   r,  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)Nr,  r    r  s        r#   r  zETestSpecialMethods.test_ufunc_override_mro.<locals>.A.__array_ufunc__  r  r&   Nr  r    r&   r#   r,  r        r&   r,  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)Nr<  r    r  s        r#   r  zETestSpecialMethods.test_ufunc_override_mro.<locals>.B.__array_ufunc__  r  r&   Nr  r    r&   r#   r<  r    r  r&   r<  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)rc   rd   re   r  r  r    r&   r#   r@  r    s    &r&   r@  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   rr  )r5   
frompyfuncr%  r	   r  r
   r   )r^   r  r  three_mul_ufuncfour_mul_ufuncr,  r  r<  r@  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__%      UFFF::r&   Nr  r    r&   r#   r,  r  $      ;r&   r,  r   r  r  )r  answer)ry   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   r5   r%  r  r	   	ncu_testsinner1dr   _NoValuer   r   r  r  r  )r^   r,  r   r"   s       r#   test_ufunc_override_methodsz.TestSpecialMethods.test_ufunc_override_methods"  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#   r,  r    r  r&   r,  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#   r<  r    r  r&   r<  out_argr  r   r)   r*   r+   r{   r   r  r  r   r   )NNr7  twor7  r  r    )r  threer  )r7  r  r  )r7  )
r5   r%  r	   modfr   r   r  r
   r   r   )r^   r,  r<  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   r5   r~   r   r  append)r^   objsr   r  r  s        r#   _unwrapzPTestSpecialMethods.test_ufunc_override_where.<locals>.OverriddenArrayOld._unwrap	  sZ    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&   )rc   rd   re   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__'  s    f$&*llF7O3F&GF7Og.8--*0/!*<wG+E6MFMfMN*tDz*Ar&   rc   rd   re   r  r  r  s   @r#   OverriddenArrayNewr  &  s     r&   r   r   )TFTr  )
r5   r   r\  r~   r   r   r   r   r   rE  )	r^   r  r   r%  r~   r  r   result_1result_2s	            r#   test_ufunc_override_wherez,TestSpecialMethods.test_ufunc_override_where  s+   	 	>	!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__Q  s     ((r&   Nr  r    r&   r#   r,  r  P  s    )r&   r,  r   r  rJ   )r
   r   r5   r\  r?  rK  s      r#   test_ufunc_override_exceptionz0TestSpecialMethods.test_ufunc_override_exceptionN  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__\  s    %%r&   Nr  r    r&   r#   r,  r  [  s    &r&   r,  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	translater5   r\  r   r   )r^   r,  rO  s      r#   #test_ufunc_override_not_implementedz6TestSpecialMethods.test_ufunc_override_not_implementedY  s    	& 	&K G,=,=c,BCKK D1 !G,=,=c,BCFF13a( DC DC DCs   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  l  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   r5   r   r\  r   )r^   r  opt_outrO  r  greedys         r#   test_ufunc_override_disabledz/TestSpecialMethods.test_ufunc_override_disabledj  s    	# 	# ( 9 C0FF7A 1 C0FF1g 1 C0KK  1	 	 F#v-. C0FF67# 1 C0FF61'* 10% 100000 1000s;   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#   r,  r     r  r&   r,  r   r   r   r  r)   r*   r  )r   r   r{   r  r7  r  r    )r  r  r	   r
   r   r   )r^   r,  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   )r5   r   r   )r  r  outputr,  s      r#   r  z_TestSpecialMethods.test_ufunc_override_with_super.<locals>.A.__array_ufunc__.<locals>.<genexpr>  sA       M6KNFF %+N "$F!3!8!8!;8>"?6Ks   58)	enumerater   r  r   r5   r   tuplenoutr  r  r  infor   r  )r^   r%  r  r{   r  r  r  in_norS  input_r'  out_noout_argsjr)  r-  resultsr,  r  s                    r#   r  zLTestSpecialMethods.test_ufunc_override_with_super.<locals>.A.__array_ufunc__  s   !*6!2IAv!&!,QFKK

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

,CD$OOF3 &8 %*(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  r,  s   @r#   r,  r%    s    BF 1D 1Dr&   r,  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  r/  r,  s     r#   r  z_TestSpecialMethods.test_ufunc_override_with_super.<locals>.B.__array_ufunc__.<locals>.<genexpr>  s     B6z&!,6s   A!)rr  r  )r^   r%  r  r  r  r,  s        r#   r  zLTestSpecialMethods.test_ufunc_override_with_super.<locals>.B.__array_ufunc__  s    B6BB))r&   Nr  )r,  s   r#   r<  r5    s    *r&   r<  r  r  r   r  r'  )r  r'  r   r  r8  r   r  )r  r{   )r   r   r   r   rJ   )r5   r   rX  r   r  r   rE  r	   r-  r  r   r  r  r
   r   r~   rr  r  rT  r   r   r  r   r  )r^   r<  r   r   r   checkb1b2c1r  r  indicesr,  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  )r5   r~   r   r   r   r  r   r   )r^   r   r"   s      r#   test_array_ufunc_direct_callz/TestSpecialMethods.test_array_ufunc_direct_callS  s    HHQK]]9% & ]]9%a# & 
Aq93A& &% &%s   B.!B:.B7:CN)rc   rd   re   r  r  r'  r-  r3  rA  rL  r\  rc  ri  r   r  r  rw  r}  r  r  r  r  r  r  r  r	  r  r  r"  r>  r@  r    r&   r#   r  r  b  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   )r5   r~   r	   choose)r^   r  r   s      r#   
test_mixedzTestChoose.test_mixedb  sL    HHdD\"HHdD\"RYYq1a&)288QF+;<r&   N)rc   rd   re   rE  r    r&   r#   rB  rB  a  s    =r&   rB  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_innerr5   rC  uint16r]   s    r#   test_lcmzTestRationalFunctions.test_lcmi  &    RXX&RYY'r&   c                 B    | j                  t        j                         y r   )rI  r5   object_r]   s    r#   test_lcm_objectz%TestRationalFunctions.test_lcm_objectm      RZZ(r&   c                     | j                  t        j                         | j                  t        j                         y r   )_test_gcd_innerr5   rC  rI  rJ  r]   s    r#   test_gcdzTestRationalFunctions.test_gcdp  rL  r&   c                 B    | j                  t        j                         y r   )rR  r5   rN  r]   s    r#   test_gcd_objectz%TestRationalFunctions.test_gcd_objectt  rP  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  r\  r*   )r)   r]  r  rr  )r   r  r  rY  r  r  )	r5   r~   r	   lcm
issubclassunsignedintegerr   rX  r   r^   r   r   r   s       r#   rI  z%TestRationalFunctions._test_lcm_innerw  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]  rW  r}   r  rX  r*   (   rZ  r[  )rH     #   r+   rr  )r  r   r   r   r*   r+   )	r5   r~   r	   gcdr^  r_  r   rX  r   r`  s       r#   rR  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+   r3   )r5   r   r  r  r	   r]  )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)   )r5   r   r   r  r:  r	   re  )r^   r   r   qs       r#   test_gcd_overflowz'TestRationalFunctions.test_gcd_overflow  sp    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  rl  r5   r~   r	   re  r]  )r^   rl  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   r5   re  r]  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   rX  r)     i-1 l          U9 l         `i  r)   r   )r	   r5   r~   itemre  r]  rJ  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)rc   rd   re   rK  rO  rS  rU  rI  rR  rg  rj  rm  ro  rs  r    r&   r#   rG  rG  h  s9    ()()<*=*+-83

0r&   rG  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rF  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)rc   rd   re   rz  r}  r  r    r&   r#   r@  rx    s    r&   r@  r   r   r)   N)r5   r~   r	   rd  r(  re  r^   r@  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__  rb  r&   N)rc   rd   re   r  r    r&   r#   r@  r    r  r&   r@  r.   r-   N)	r5   r~   r	   rd  r(  r   r   r   re  r  s      r#   test_object_indirectz*TestRoundingFunctions.test_object_indirect  ss    	 	 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 )Nr/   r)   r-   r,   )r   r	   r5   rd  r(  re  )r^   r  s     r#   test_fractionz#TestRoundingFunctions.test_fraction  sC    RORXXa["%RWWQZ$RXXa["%r&   N)rc   rd   re   r  r  r  r    r&   r#   ru  ru    s    ,
&r&   ru  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 )Nr4  rw   zreal part %srl  rr  zimag part %s)funcsr5   r  rt  r   rN   r*  )r^   r  rP   frfzs        r#   test_itzTestComplexFunctions.test_it  se    ABJJ1B71:B^a5GH^a5GH r&   gh23049r4  zdoesn't workc                    d}| j                   D ]w  } |t        j                  |            } |t        j                  |            } |t        j                  |            }t        ||dd|z         t        ||dd|z         y y )Nrj  rr  z
fch-fcd %s)r  rm  rH  z
fch-fcl %s)r  r5   csinglecdoubleclongdoubler   )r^   r  r  fcffcdfcls         r#   test_precisions_consistentz/TestComplexFunctions.test_precisions_consistent   st     ABJJqM"CBJJqM"CBNN1%&CS!\A=MNS"lQ>NO 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 )Nr[  r5  r   r,   T      r-   r                  r  rw   r-   r   r   r5  r5  r   r  r  r   r   r   r5  r  r  r   )_check_branch_cutr5   r  rs  r  r  r   r  r  r  rK   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 )Nr[  r5  r   r,   Tr  r-   r   r  r  rw   Fr  r  r  r  r  )r  r5   r  r  rs  r  r  r   r  r  r  rK   r  r  r]   s    r#   test_branch_cuts_complex64z/TestComplexFunctions.test_branch_cuts_complex64&  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=  rj  asinacosatanasinhacoshatanh)r  r  r  rK   r  r  r*   .r,    z: z	; cmath: )cmathr5   r  rt  epsr  rc   splitgetrm  AttributeErrorr-  r   rO   )r^   r  pointsname_mapatolro  fnamecnamecfuncr9  r   r   s               r#   test_against_cmathz'TestComplexFunctions.test_against_cmathA  s    -$&&7wP'"&&&JJDMM'',R0ELL.Eu- DQ01!HAE
T)UAqRS+TU  
 " 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* functionsrr  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   rK   r5  r  r  r  )r   r5   rb  rK   rN   r   rE  argmaxr  r  r*  r  r  )rP   rtolr  r   r   
real_dtypes       r#   r9  z:TestComplexFunctions.test_loss_of_precision.<locals>.checke  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&   r\  g5^IrX  gˡEr   r3   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   ri   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   )r5   r   rO   r   rE  )ro  z0r   zpzmgoodr   r  s         r#   r9  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  r5  rj  Nr   )r5   r  rN   r   r  logspacelongcomplexrS   r   rc  r~   rb  r  r   rE  rK   r  r  )r^   r   r-  r9  x_seriesx_basicr  r9  r   ro  rpipptsr  r  s    `           @@r#   test_loss_of_precisionz+TestComplexFunctions.test_loss_of_precisionT  s;    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ND&6 *&6@P2Agq be8@P8&6C *$Q$R $T" O*s    KrW   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  r5   r  r   r   rC  r  )r^   ro  s     r#   test_promotion_corner_casesz0TestComplexFunctions.test_promotion_corner_cases  s    JJD

1&,,

:::$**bjj888$**bjj888	 r&   N)'rc   rd   re   r5   r  r  r  rK   r  r  r  r  r  r"  r  r  r   r  rs  r  r  r  r   r  r  r   r   r  r  r  r  r   r  r  r-  r  r  rD  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V& [[&!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   )
rj   r   r	   rc   r   ntypestypesninr,  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   rj   r   __doc__rF   r   r]   s    r#   test_doczTestAttributes.test_doc  sH     	**46 	7		!!,,JL 	Mr&   N)rc   rd   re   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   )r5   r   r   r   fill)subtyperE  r^   s      r#   r   z5TestSubclass.test_subclass_op.<locals>.simple.__new__  s-    zz))'5)G		!r&   N)rc   rd   re   r   r    r&   r#   simpler    s    r&   r  )r)   r*   )r5   r   r	   )r^   r  r   s      r#   test_subclass_opzTestSubclass.test_subclass_op  s+    	RZZ 	 6NQqS!r&   N)rc   rd   re   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  r,  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  r,  c                  P     j                  t        j                  d      d      S )Nr  r  r  )r   r5   r  r  s   r#   r$   z.TestFrompyfunc.test_identity.<locals>.<lambda>  s    )*:*:2776?QW*:*Xr&   c                  &     j                  g       S r   r   r  s   r#   r$   z.TestFrompyfunc.test_identity.<locals>.<lambda>  r  r&   )r5   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)rc   rd   re   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)r5   
atleast_1dr   r   r|  r  r  r  rb  r   rE  rN   r*  rr  r  )r  x0dxre_signim_signsig_zero_okr   scaler  y0ypymjrjirP   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,   rW   r>  r   )r   r5   copysignrD  r~  r   r    r&   r#   test_copysignr  5  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  )r5   r  r  r   r  rv  r   )r  r7  r  r  r  s        r#   _test_nextafterr  =  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  r5   r"  r    r&   r#   test_nextafterr	  H      2::&&r&   c                  4    t        t        j                        S r   )r  r5   r  r    r&   r#   test_nextafterfr  L  r
  r&   zlong double is same as doubler4  ppc64zIBM double double)	conditionr5  c                  4    t        t        j                        S r   )r  r5   rn  r    r&   r#   test_nextafterlr  P  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  rr  r   r  )r  r  r5   r  r   r  UserWarningrv  r  r  r   r  r	   )r  	directionr  r  s       r#   test_nextafter_0r  X  s    !))"**W*=wG9  CJJ{#88BHHQK,,-xx{''R\\!A$)%EELLN	 ! 	R\\!A$)5#>	CP H ! 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   rW   rX   gꌠ9Y>)Fr   )
r5   r  r  r   ru  rD  r	   r'  r   rv  )r  r7  r  r   ru  s        r#   _test_spacingr  d  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  r5   r"  r    r&   r#   test_spacingr  p      $$r&   c                  4    t        t        j                        S r   )r  r5   r  r    r&   r#   test_spacingfr  s  r  r&   c                  4    t        t        j                        S r   )r  r5   rn  r    r&   r#   test_spacinglr  w  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?)r3   r  )h㈵>r   r   i)  r}   r  )r5   r"  r  r   r~   r   r'  )refr  r  rP   s       r#   test_spacing_gfortranr!  ~  sr    " :: 2 :: (	)C RZZ0(;DHH+26!"**Q-R$G <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   )r5   r  r"  r   r  r'  )r  _fr  f1s       r#   test_nextafter_vs_spacingr%    s^    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   r5   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.)r`  S11timer  r)  r}   Simpler`  r3   )r   ry  rH  rc  r   r   Nrn  )r5   r   r   r  r   r  r   r   r~   r  r   
setbufsizeUFUNC_BUFSIZE_DEFAULT)dbr   indxh2r7   r8   h1s          r#   test_reduceatr2    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)r5   r~   r   r  r	   r   rE  r  )r=  rP   r  s      r#   test_reduceat_emptyr6    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,   rW   rX   Fz < rl  z > z <= z >= z == )rt  r5   r   rD  r~   r<  r	   )nansfinsrP   r   s       r#   test_complex_nan_comparisonsr:    sI   BFFA266 2GBFFBFF4KLDAqM72q>71a='!R.AqM72r?GAqM;D 
X	&A!AD[HHaSM;;q>bkk!nQUE13EFQUE13EFQ!VU!Q4GHQ!VU!Q4GHQ!VU!Q4GH !  
'	&	&s   CF%%F.c                      d} t        | t        t        |                    t        | t        j                  |              y )Nl    *n )r	   r   r   r5   rc  )vals    r#   test_rint_big_intr=    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}   )r@  r@  rB  rB  rB  )r@  rA  rA  rC  rD  )r5   r~   r	   r	  r   r<  )r>  r   out_maxout_mins       r#   test_memoverlap_accumulaterG    si     ((1
?Chh5UCGhh5UCG&&s+W5&&s+W5r&   zufunc, dtypera  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   rl  rn  ro  r  rp  )r   r   r   r}   ra  )r   r   rc  r5   r~   r   r   r   r  r  r	   )r%  r   r   r   accacc_u8r"  s          r#   test_memoverlap_accumulate_cmprN    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)NrJ  rW   r  rK  r   r   r   r}   )r   r   rc  r5   rD  r~   r   r   r  r  r	   )r%  r   r   r   rL  r"  s         r#   $test_memoverlap_accumulate_symmetricrQ    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    )rE  r   buffer)r   r5   r   rv  r  s    r#   test_signaling_nan_exceptionsrT    s2    		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)rc   rd   re   r    r&   r#   r  rW  (  s    r&   r  )r5   r   r%  r  r   r  rc   )r   r  actuals      r#   test_outer_subclass_preserverY  !  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   )ndimrE  rW  s     r#   __array_finalize__z;test_outer_bad_subclass.<locals>.BadArr1.__array_finalize__.  s"    yyA~!ZZ$.
 r&   Nc                     |S r   r    r  s      r#   r  z:test_outer_bad_subclass.<locals>.BadArr1.__array_prepare__3      Jr&   r   rc   rd   re   r_  r  r    r&   r#   BadArr1r\  -  s    	/
	r&   rc  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   rE  )r^   r  BadArr2s     r#   r_  z;test_outer_bad_subclass.<locals>.BadArr2.__array_finalize__7  s;    #w'::b>Q&!%DbD!1DJ ' (r&   Nc                     |S r   r    r  s      r#   r  z:test_outer_bad_subclass.<locals>.BadArr2.__array_prepare__=  ra  r&   r   rb  )rg  s   r#   rg  re  6  s    	2	r&   rg  )r   r)   r   r   )	r5   r   r  r   r
   r   r   r  r   )rc  r   r   r   rg  s       @r#   test_outer_bad_subclassri  ,  s    "** "**  !ggfo""3'9%FFLLq!f% &
 ggfo""3'BFFLL!Q-.#555 "%%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   )r5   r  r
   r   r   r  )deeps    r#   test_outer_exceeds_maxdimsrl  J  s6    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,   rr  r   r   r   rP  )r5   rX  r   r"  r   r   rI  r  always_errorr  reshaper  r   r  r   r  )r   
non_contigs     r#   #test_bad_legacy_ufunc_silent_errorsrr  O  s    ))A,

bjj
)C	|+A	BsC( 
C 
|+A	BZZ^++B21cc6:
z3/ 
C
 
|+A	B$$S#. 
C 
|+A	B%%c* 
C 
|+A	B''aV4 
C 
|+A	B))#. 
C 
|+A	B!!#y#6 
C	B) 
C	B 
C	B
 
C	B 
C	B 
C	B 
C	B 
C	BsU   H*AH7-!I1 I4#I: I*=$I6*H47IIII'*I36I?x1r  )rr  rJ   r  c                     t        j                  t        d      5  t        j                  | d       d d d        y # 1 sw Y   y xY w)Nrn  r   rr  )r   r   rI  r  always_error_gufunc)rs  s    r#   $test_bad_legacy_gufunc_silent_errorsrv  m  s0     
|+A	B%%b#. 
C	B	Bs	   <A)rC   r  r  r  r   r  r  r  	fractionsr   	functoolsr   collectionsr   numpy.core.umathcoreumathrj   
numpy.corer   r  numpyr5   numpy.testingr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   numpy.testing._private.utilsr   __dict__valuesr   r%  UFUNCSr  UFUNCS_UNARYr  r2  UFUNCS_BINARYr  r,  UFUNCS_BINARY_ACCr?   rG   rS   rU   rg   rt   r   r  r&  r  r  r  r  r
  r  r\  rg  r  r  r  r  r  r4  rO  rW  rk  rg  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r:  rG  rR  rZ  rx  r  r  r  r  r  r  r  r  r  r  rB  rG  ru  r  r  r  r  rt  r  r  r  r	  r  r  r  r  doublern  r  rE   rF   r  r  r  r  r  r  r!  r%  r'  r2  r6  r:  r=  r  r  r"  rG  rN  rQ  rT  rX  matrixrY  ri  rl  rr  rv  )r  ufr%  r  s   0000r#   <module>r     sh        
 	    "   0      ;//668 
'8#sBHH% 8 
' 2266Q;B 2288!3B
 2266Q;B 2'"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(_ _B?< ?<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L9 L9^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/mR
'nN* *sH   Z!Z&Z&!Z+5Z+ Z0Z0 Z5/Z5?Z5.Z:1<[ 