
    -ii                     |   d dl Z d dlZd dlZd dlmZmZ d dlZd dlm	Z	 d dl
mZmZmZ d dlmZ ddlmZm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 ej!        "                    dg d          de#fd            Z$ej!        "                    d e%g dg d                    de&e#e#f         fd            Z'ej!        "                    dg d          de#fd            Z(d Z)d Z*d Z+d  Z,d! Z-d" Z.d# Z/d$ Z0ej!        "                    d%g d&          d'             Z1ej!        "                    d%g d&          d(             Z2ej!        "                    d%g d&          d)             Z3ej!        "                    d%g d&          d*             Z4d+ Z5ej!        "                    d,g d-          d.             Z6ej!        "                    d%g d&          d/             Z7ej!        "                    d%g d&          d0             Z8ej!        "                    d1g d2          d3             Z9d4 Z:d5 Z;ej!        "                    d%g d&          d6             Z<ej!        "                    d%g d&          d7             Z=d8 Z>ej!        "                    d9g d:          d;             Z?ej!        "                    d%g d&          d<             Z@ej!        "                    d%g d&          d=             ZAd> ZBej!        "                    d9g d:          d?             ZCg d@ZDej!        "                    dAeD          dB             ZEg dCZFej!        "                    dDeF          dE             ZGdF ZHdG ZIdH ZJdI ZKdJ ZLg dKZMej!        "                    d9eM          dL             ZNdMdNdOgd gffdPdQdRgd gffdSdTd gdgffdUdVd dRgdRdgffdWdXg dYg dZffd[d\d]d]g dYg dYffgZOej!        "                    d^eO          d_             ZPd` ZQej!        "                    dag db          dc             ZRej!        "                    d%g dd          de             ZSej!        "                    d%g dd          df             ZTg dgZUej!        "                    d9eU          dh             ZVej!        "                    d9eU          di             ZWg djZXej!        "                    dkeX          dl             ZYg dmZZej!        "                    dkeZ          dn             Z[do Z\dpdqdrdsdtdudWd  ej]        dv          fdwdPdO ej]        dx          fdydzd{d|d}d~dddd ej]        d          fdddd ej]        d          fdddY ej]        dS          fdgZ^ej!        "                    de^          d             Z_ej!        "                    de^          d             Z`d Zag dgZbej!        "                    d9eb          d             Zcd Zdej!        "                    d9eb          d             Zed Zfej!        "                    d9eb          d             Zgd Zhej!        "                    d9eb          d             Ziej!        "                    d9eb          d             Zjd Zkd Zld Zmd Znd Zod Zpd Zqd Zr ejs        d          t                    d          Zu eeu          Zvdd ewdOdRd          d fd ewdOdRd          f ewdOdRd           ewdOddR          f ewddd          dfdO ewd          fexfdOdRgd fddOdgf ejy        dOdRg           ewdOd          f ewd           ejy        g d          f ejy        dOdRg           ejy        d dg          fgZzej!        "                    g dd ezD                       ej!        j{        d                         Z| ejs        d          t                    d          Zu eeu          Zvddd  ewdOdR          d f ewdRd          dR ewd          f ewd           ewdOdd           ewdOd          f ewddd           ewd           ewdOdd          fexddOdg ewdR          f ejy        dOdRg           ewdOd          d f ejy        dOdRg           ewdOd          d gf ejy        dOdRg           ewdOd           ejy        ddg          fd ejy        dOdRg           ejy        ddg          f ejy        dOdRg           ejy        ddg          dOf ejy        dOdRg           ejy        ddg          dgfgZzej!        "                    g dd ezD                       ej!        j{        d                         Z}ej!        "                    dd ejy        d gg d          ej!        {                    d          d                         Z~ ejs        d          t                    d          Zu eeu          Zvddddd ewddd          ddO ewddd          dOffd ewddd           ewddd          ddOdOffdddOdO ewddd           ewddd          ffd ewddd           ewddd          ddOdOffd ewddd          g d¢g dâgg dĢg dŢg ewddd          d ffd ewddd          g dĢg dâgg dĢg dŢgdO ewddd          ffd ewddd          g dĢg dĢ ewddd          dOffdd  ewdOdd          dOg dĢgdgdOgd ggffd ewddRd           ewdOdd          dOg dĢgdgdOgd ggffdg dĢgdgdOgd ggd  ewdOdd           ewddRd          ffdg dĢg ewdOdd           ewddRd          d dgdOgd ggffd ewddd          g dĢg d¢gg dĢg d͢g ewddd          dOffd ewdOdd          d dOg d¢gdgdOgdOggffgZzej!        "                    g dϢdЄ ezD                       ej!        j{        dф                         Zd҄ Zdӄ ZdS )    N)assert_equalassert_allclose)
block_diag)	coo_arrayrandom_arraySparseEfficiencyWarning)	csr_array   )_block_diag_extract_block_diagc                     t          d          } | j        dk    sJ t          |                                 t	          j        d                     t          d          }|j        dk    sJ t          |                                t	          j        d                     t          d          }|j        dk    sJ t          |                                t	          j        d                     d S )N   r   r
   )r
   r            r   shaper   toarraynpzeros)empty1dempty2dempty_nds      a/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/sparse/tests/test_coo.pytest_shape_constructorr      s    ooG=D    ""BHTNN333G=F""""""BHV$4$4555%%H>[((((!!##RXk%:%:;;;;;    c                  d   t          g d          } | j        dk    sJ t          |                                 t	          j        g d                     t          g dg dg          }|j        dk    sJ t          |                                t	          j        g dg dg                     t	          j        ddgddggd	d
gddgggddgddggdd
gdd	gggddgddggddgddgggg          }t          |          }|j        dk    sJ t          |                                |           t          j                            d           t          j                            ddddd	d
ddd	  	        }t          |          }|j        dk    sJ t          |                                |           t          dt          j	        ggddggd
d	ggg          }|j        dk    sJ t          |                                t	          j        dt          j	        ggddggd
d	ggg                     d S )N   r
   r   r   r      r   r
   r   r   r   r!   r   r   r#   	   r
   r      )r   r
   r
   r
      )	r
   r   r   r   r   r#   r   r
   r   )r   r!   r
   )
r   r   r   r   r   arrayrandomseedrandnnan)res1dres2darr4dres4darr9dres9dnan_3ds          r   test_dense_constructorr4      sU   iii  E;$"(999"5"5666 yyy))),--E;&    "(IIIyyy+A"B"BCCC HAA'1a&1a&)9:AA'1a&1a&)9:AA'1a&1a&)9:< = =E eE;,&&&&%((( INN2IOOAa!Aa!A..EeE;-----%((( !RVAx1a&:;;F<9$$$$!!28q"&k]aVH1vh,O#P#PQQQQQr   c            	      2   t          g dd          } | j        dk    sJ t          |                                 t	          j        g d                     t          g dg dgd          }|j        dk    sJ t          |                                t	          j        g dg dg                     t          dggdgggd          }|j        dk    sJ t          |                                t	          j        dggdggg                     t          j                            d	           t          j                            d
dddddd
          }t          |d          }|j        dk    sJ t          |                                |           d S )Nr    r   r   r"   r$   r   r   r
   r!   r!   r'   r
   r!   r   r#   )r
   r   r!   r   r#   r   r
   )	r   r   r   r   r   r(   r)   r*   r+   )r-   r.   res3darr7dres7ds        r   !test_dense_constructor_with_shaper;   ;   s   iiit,,,E;$"(999"5"5666yyy))),F;;;E;&    "(IIIyyy+A"B"BCCCusenI666E;)####"(aSEQC5>":":;;;INN2IOOAa!Aa**Eu_555E;/))))%(((((r   c                     t          j        t          d          5  t          g dd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          g dd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          g dgd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dggd	gggd
           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dgdgffd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          ddgddgddgddgffd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dgdgff           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dgdgdgdgff           d d d            d S # 1 swxY w Y   d S )Ninconsistent shapesmatchr    r   r6   r   r!   r   r   r   r!   r!   r!   z)axis 0 index 2 exceeds matrix dimension 2r!   r
   )r
   z)axis 1 index 3 exceeds matrix dimension 3r   )r
   r   r
   znegative axis 0 index: -1znegative axis 2 index: -1)pytestraises
ValueErrorr    r   r   .test_dense_constructor_with_inconsistent_shaperH   O   s   	z)>	?	?	? ) ))))4(((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
z)>	?	?	? + +)))6****+ + + + + + + + + + + + + + + 
z)>	?	?	? + +999+T****+ + + + + + + + + + + + + + + 
z)>	?	?	? 3 3QC5A3%.	22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
zH
J 
J 
J - -A3!-t,,,,- - - - - - - - - - - - - - - 
zH
J 
J 
J F FAa5Aq6Aq6Aq6239EEEEF F F F F F F F F F F F F F F 
z)D	E	E	E " "A3".!!!" " " " " " " " " " " " " " " 
z)D	E	E	E + +A3!qcB4()***+ + + + + + + + + + + + + + + + + +s   <A A "BB	B(C		CC/DDD9EE #E F--F14F1G44G8;G8I  IIc                      t          d          } t          |           }|j        dk    sJ t          |                                t	          j        d                     d S )Nr   r   )r   ress     r   test_1d_sparse_constructorrK   k   sS    ooG
G

C9/////r   c                      t          ddgddgff          } | j        dk    sJ t          |                                 t	          j        g d                     d S )Nr%   r&   r!   r
   r   )r   r%   r&   r   r   r   r   r   r(   rJ   s    r   test_1d_tuple_constructorrO   r   s]    
aUaUH%
&
&C9 3 344444r   c                      t          ddgddgffd          } | j        dk    sJ t          |                                 t	          j        g d                     d S )Nr%   r&   r!   r
   r@   r6   )r   r%   r&   r   rM   rN   s    r   $test_1d_tuple_constructor_with_shaperQ   x   sb    
aUaUH%T
2
2
2C9 6 677777r   c                  "   d\  } }t          j        | dz
  gd          t          j        |dz
  gd          f}t          dg|f| |f          }|                    | |z  df          }|j        d         j        t          j        d          k    sJ |j        d         d         | |z  dz
  k    sJ |                    ||           }|j        d         j        t          j        d          k    sJ |j        d         d         |dz
  k    sJ d S )	N)i i r!   int32)dtypegffffff
@r6   r   int64)r   r(   r   reshapecoordsrT   )MNrW   ABCs         r   test_reshape_overflowr]   }   s   DAqhAwg...!a%0P0P0PQFC5&/!Q000A 	
		1q5!*A8A; 1 111118A;q>a!eq[(((( 	
		!QA8A; 1 111118A;q>QU""""""r   c            	         t          g d          } | j        dk    sJ |                     d          }|j        dk    sJ t          |                                t          j        dgdgdgg                     |                     d          }|j        dk    sJ t          |                                t          j        g dg                     t          j        t          d	          5  |                     d
           d d d            n# 1 swxY w Y   t          j        t          d	          5  |                     d           d d d            n# 1 swxY w Y   t          g dg dg          }|j        dk    sJ |                    d          }|j        dk    sJ t          |                                t          j        g d                     |                    d          }|j        dk    sJ t          |                                t          j        dgdgdggdgdgdggg                     t          j        t          d	          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr!   r   r   r   rA   r!   r   r   r!   r   zcannot reshape arrayr>   r   r   r   r   r!   r
   r   r   r   r   r$   )r   )r!   r
   r   r   r   r   )r
   r   r!   r
   )
r   r   rV   r   r   r   r(   rD   rE   rF   )arr1dcol_vecrow_vecarr2dflat	to_3d_arrs         r   test_reshaperk      s9   iii  E;$mmF##G=F""""""BHqcA3_$=$=>>>mmF##G=F""""""BHiii[$9$9::: 
z)?	@	@	@  e               
z)?	@	@	@  e               yyy))),--E;&    ==D:*<*<*<!=!=>>> i((I?i''''""$$bh!qcA31#sQC/Q&R&RSSS 
z)?	@	@	@  e                 s6   /DDD7EE EJ  JJc                      t          g d          } | j        dk    sJ | j        dk    sJ t          g dg dg          }|j        dk    sJ |j        dk    sJ d S )Nr_   r   r
   rc   rd   r$   r   )r   r   nnzre   rh   s     r   test_nnzro      su    iii  E;$9>>>>yyy))),--E;&    9>>>>>>r   c            	         t          g d          j        } | j        dk    sJ t          |                                 t          j        g d                     t          g dg dg          j        }|j        dk    sJ t          |                                t          j        ddgddgdd	gg                     d S )
Nr_   r   rc   rd   r   r!   r   r
   r   )r   Tr   r   r   r   r(   rn   s     r   test_transposerr      s    iii  "E;$"(999"5"5666yyy))),--/E;&    "(QFQFQF+C"D"DEEEEEr   c                      t          g d                              d          } | j        dk    sJ t          |                                 t          j        g d                     t          g dg dg                              d          }|j        dk    sJ t          |                                t          j        g dg dg                     t          j        t          d	
          5  t          g d                              d           d d d            n# 1 swxY w Y   t          j        t          d
          5  t          g dg dg                              d           d d d            d S # 1 swxY w Y   d S )Nr_   r   axesr   rc   rd   r   r!   r$   "axes don't match matrix dimensionsr>   repeated axis in transposer!   r!   )
r   	transposer   r   r   r   r(   rD   rE   rF   rn   s     r   test_transpose_with_axisr|      s   iii  ***55E;$"(999"5"5666yyy))),--77V7DDE;&    "(IIIyyy+A"B"BCCC	z)M	N	N	N 4 4)))&&F&3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
z)E	F	F	F A A999iii())333@@@A A A A A A A A A A A A A A A A A As$   4&D&&D*-D**FF
Fc                  ~   t          g d          } t          | j        t          j        g d                     t          | j        t          j        | j                             | j        j        | j        j        k    sJ | j        j        j	        du sJ g d| _        t          | j                  dk    sJ t          | j        t          j        g d                     | j        j        | j        j        k    sJ t          j        t          d          5  g d| _        d d d            d S # 1 swxY w Y   d S )Nr!   r   r!   r
   Fr    r!   zcannot set row attributer>   )r   r   colr   r(   row
zeros_likerT   flags	writeablelenrW   rD   rE   rF   rN   s    r   test_1d_row_and_colr      sd   
KKK
 
 C"(999--..."-001117=CGM))))7="e++++iiCGsz??a"(999--...7=CGM))))	z)C	D	D	D  ))                 s   
D22D69D6c                     t          g d          } | j        | j        | j        | j        fD ]?}t          j        t          d          5   |             d d d            n# 1 swxY w Y   @| j        | j	        | j
        fD ]>}t           |                                            |                                            ?d S )Nr~   zCannot convertr>   )r   tobsrtocsctodiatolilrD   rE   rF   tocootocsrtodokr   r   )rJ   fs     r   test_1d_toformatsr      s    
KKK
 
 CiCIsy9  ]:-=>>> 	 	ACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	iCI. 3 3QQSS[[]]CKKMM22223 3s   	A  A$	'A$	arg)r!   r
   r   r#   r&   c                    t          j        g d          }t          |          }|                    | d           |                    |            |j        |j        k    sJ t          |                                |           d S )Nr~   Frefcheckr   r(   r   resizer   r   r   r   denrJ   s      r   test_1d_resizer      sx    
(;;;

C
C..CJJsUJ###JJsOOO9	!!!!$$$$$r   r!   r
   r   r   c                    t          j        g d          }t          |          }|                    | d           |                    |            |j        |j        k    sJ t          |                                |           d S )Nr_   Fr   r   r   s      r   test_1d_to_2d_resizer      sx    
(999

C
C..CJJsUJ###JJsOOO9	!!!!$$$$$r   )r!   r   r   r&   c                    t          j        g dg dg          }t          |          }|                    | d           |                    |            |j        |j        k    sJ t          |                                |           d S )Nr_   r   r   r   Fr   r   r   s      r   test_2d_to_1d_resizer     s    
(IIIyyy)
*
*C
C..CJJsUJ###JJsOOO9	!!!!$$$$$r   c            	         t          g dg dff          } | j        dk    sJ t          |                                 t	          j        ddg                     |                                  | j        dk    sJ t          |                                 t	          j        ddg                     t          g dg dg dg dg dff          }|j        dk    sJ t	          j        d	d	gd	d	gd	d	ggd	d	gd	d	gd	d	ggd	d	gd	d	gdd	gggd	d	gd	d
gd	d	ggd	d	gd	d	gd	d	ggd	d	gd	d	gd	d	gggg          }t          |                                |           |                                 |j        dk    sJ t          |                                |           t          g dg dff          }|j        dk    sJ |                                 |j        dk    sJ d S )N)r
   r
   r
   r!   r   r!   r   r
   r   )r
   r   r   )r   r
   r   r!   r
   r!   r   r%   r   r   r!   r
   r   )r   rm   r   r   r   r(   sum_duplicates)re   r/   expected
arr_nodupss       r   test_sum_duplicatesr     s*   yyy999,/00E9>>>>"(Aq6"2"2333	9>>>>"(Aq6"2"2333 yyy999iiiIII"NOPPE9>>>>xq6Aq6Aq6
"aVaVaV$<1v1vPQSTv>V	Wq6Aq6Aq6
"aVaVaV$<1v1vPQSTv>V	W	Y H (+++	9>>>>(+++ LLL<<</:;;J>Q>Qr   c                  n   t          g dg dff          } | j        dk    sJ |                                 dk    sJ t          |                                 t          j        ddg                     |                                  | j        dk    sJ |                                 dk    sJ t          |                                 t          j        ddg                     t          | j        t          j        dg                     t          | j	        t          j        dg                     d S )N)r   r   r!   r   r   r!   r   )
r   rm   count_nonzeror   r   r   r(   eliminate_zerosr   r   )re   s    r   test_eliminate_zerosr   *  s   yyy999,/00E9>>>>  A%%%%"(Aq6"2"2333	9>>>>  A%%%%"(Aq6"2"2333BHaSMM***BHaSMM*****r   c                      t          j        g d          } t          j        g d          }| |z   }t          |           |z   }t          |          t          |          u sJ t	          ||           d S Nr   r   r   r   r   )r   r(   r   typer   den_aden_bexprJ   s       r   test_1d_add_denser   7  sv    H^^^$$EH\\\""E
%-C
E

U
"C99S		!!!!cr   c                      t          j        g d          } t          j        g d          }| |z   }t          |           t          |          z   }t          ||                                           d S r   )r   r(   r   r   r   r   r   	dense_sum
sparse_sums       r   test_1d_add_sparser   @  sm    H^^^$$EH\\\""EI5!!Ie$4$44JJ..0011111r   c                      t          j        g d          } t          j        g d          }| |z  }t          |           |z  }t          j        |          dk    sJ t	          ||           d S )Nr   r   r   )r   r(   r   ndimr   r   s       r   test_1d_matmul_vectorr   I  sr    H^^^$$EH\\\""E
%-C
E

U
"C73<<1cr   c                      t          j        g d          } t          j        g dg dg          j        }| |z  }t          |           |z  }t	          |          t	          |          u sJ t          ||           d S )Nr   r   r   r
   r!   r   )r   r(   rq   r   r   r   )r   otherr   rJ   s       r   test_1d_matmul_multivectorr   R  s    
(>>>
"
"CHlllLLL1224E
+C
C..5
 C99S		!!!!cr   c                  0   t          j        g dg dg          } t          |           }| | j        z  }||j        z  }t	          |                                |           t          j        g dg dg          } t          |           }| | j        z  }|| j        z  }t	          ||           t          j        g dg dg          }t          j        g d          }t          |          }||j        z  }||j        z  }t	          ||           t          j        g d          }t          j        dgdgd	gg          }||z  }t          |          |z  }t	          ||           t          |          t          |          z  }t	          ||           d S )
Nr   r   )r   r   r   r   r#   )r!   r   r   r   r   )r   r!   r   r   r   )r!   r   r
   r   r   r   )r   r(   r   rq   r   r   list)r   rh   r   rJ   r   r   re   s          r   test_2d_matmul_multivectorr   [  s   
(LLL,,,/
0
0CcNNE
+C
%'/C$$$ (OOO___5
6
6CcNNE
+C
#%-Cc Hooo788EH___%%EeE
%'/C
%'/Cc HYYYEHqcA3_%%E
%-C
E

U
"Cc
E

T%[[
(Ccr   c                      t          j        g d          } t          j        t          d          5  t          |                                            d d d            d S # 1 swxY w Y   d S )Nr   z diagonal requires two dimensionsr>   )r   r(   rD   rE   rF   r   diagonal)r   s    r   test_1d_diagonalr   |  s    
(>>>
"
"C	z)K	L	L	L " "#!!!" " " " " " " " " " " " " " " " " "s   "A!!A%(A%r   )rt   r   )r   r   r   r   r   )r   r   r
   r_   )r   r%   r   r
   r   r#   c                     t           j                            d           t           j                            dd|           }t	          t          |                                          |           d S )Nr'   r   r#   )lowhighsize)r   r)   r*   randintr   r   todense)r   arrs     r   test_nd_todenser     s\     INN2
)



6
6C3''))3/////r   c                     t          |           }t          |          }|j        | k    sJ t          |                                t	          j        |                      d S Nr   )r   	empty_arrrJ   s      r   test_nd_sparse_constructorr     sW     %  I
I

C900000r   c                     t           j                            d           t          j        j        |  }t	          |          }|j        | k    sJ t          |                                |           d S )Nr'   r   r)   r*   r+   r   r   r   r   r   r   rJ   s      r   test_nd_tuple_constructorr     sb     INN2
)/5
!C
C..C9$$$$$r   c                     t           j                            d           t          j        j        |  }t	          ||           }|j        | k    sJ t          |                                |           d S )Nr'   r6   r   r   s      r   $test_nd_tuple_constructor_with_shaper     si     INN2
)/5
!C
Cu
%
%
%C9$$$$$r   c                  >   t          j        t          d          5  t          ddgddgddgddgffd	           d d d            n# 1 swxY w Y   t          g g g g g ffd
	          } t	          |                                 t          j        d
                     d S )Nzexceeds matrix dimensionr>   r%   r&   r!   r
   r   r   r   r   r6   )r   r   r
   r   )rD   rE   rF   r   r   r   r   empty)r   s    r   (test_tuple_constructor_for_dim_size_zeror     s    	z)C	D	D	D E EAq6QFQFQF34GDDDDE E E E E E E E E E E E E E E 2BB/0	BBBI""$$bhy&9&9:::::s   AAA)r   	new_shape))r   r%   r   r#   )r   r      r   )r   )$      )r   )i8  )r   )r
   r   r
   r
   r   r#   r   c                 h   t           j                            d          }t          | d|t                    }|j        | k    sJ |                                }|                    |          }|                    |          }|j        |k    sJ t          |                                |           d S N4e333333?densityrngrT   )	r   r)   default_rngr   intr   r   rV   r   )r   r   r   r/   den4dexp_arrres_arrs          r   test_nd_reshaper     s     )


)
)CC@@@E;%MMOOEmmI&&GmmI&&G=I%%%%""G,,,,,r   c                     t           j                            d          }t          | d|t                    }|j        t          j        |                                          k    sJ d S r   )r   r)   r   r   r   rm   r   r   )r   r   r   s      r   test_nd_nnzr     s[     )


)
)C
ucs#
>
>
>C7b&s{{}}55555555r   c                 >   t           j                            d          }t          | d|t                    }|                                j        }|                                }|j        | d d d         k    sJ t          ||                                           d S )Nr   r   r   rC   )
r   r)   r   r   r   r   rq   r{   r   r   )r   r   r   r   	trans_arrs        r   test_nd_transposer     s     )


)
)C
ucs#
>
>
>CkkmmoGI?eDDbDk)))))++--.....r   )r   	axis_perm))r   rt   )r$   rw   ))r
   r   r   r   r#   r   )r!   r
   r   r#   r   r   c                 0   t           j                            d          }t          | d|t                    }|                    |          }t          |                                t          j        |                                |                     d S )Nr   r   r   ru   )r   r)   r   r   r   r{   r   r   )r   r   r   r   r   s        r   test_nd_transpose_with_axisr     s{     )


)
)C
ucs#
>
>
>C9--I""$$bl3;;==y&Q&Q&QRRRRRr   c                  p   t          j        t          d          5  t          g d                              d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          g dg dg                              d	           d d d            d S # 1 swxY w Y   d S )
Nrx   r>   r_   rw   ru   ry   rc   rd   rz   )rD   rE   rF   r   r{   rG   r   r   %test_transpose_with_inconsistent_axisr     sL   	z)M	N	N	N 4 4)))&&F&3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
z)E	F	F	F A A999iii())333@@@A A A A A A A A A A A A A A A A A As#   &AAA4*B++B/2B/c            
         t          g dg dg dg dff          } | j        dk    sJ |                                 dk    sJ t          |                                 t          j        g dg dgg dg dgg dg d	gg                     |                                  | j        dk    sJ |                                 dk    sJ t          |                                 t          j        g dg dgg dg dgg dg d	gg                     g dg dg dg d
g df}t          g d|f          }|j        dk    sJ |                                dk    sJ |                                 |j        dk    sJ |                                dk    sJ t          |j        t          j        g                      t          |j	        t          j        g                      t          |j
        g g g g g f           d S )N)r!   r   r   r   )r   r!   r!   r
   )r   r!   r   r!   )r!   r!   r
   r   r   r
   )r   r!   r   r   r   )r   r   r
   r   )r!   r   r   r
   )r   r   r   r   r   )r   rm   r   r   r   r   r(   r   r   r   rW   )arr3drW   arr5ds      r   test_nd_eliminate_zerosr     sX   |||lllLLL,,,%OPQQE9>>>>  A%%%%"(YYY			,B%.YY			$:YYY			<R,T #U #U V V V	9>>>>  A%%%%"(YYY			,B%.YY			$:YYY			<R,T #U #U V V V llLLL,,,lllSF|||V,--E9>>>>  A%%%%	9>>>>  A%%%%BHRLL)))BHRLL)))BB344444r   c                 h   t           j                            d          }t          | d|t                    }t          | d|t                    }|                                |                                }}||z   }||z   }t          |          t          |          u sJ t          ||           d S r   r   r)   r   r   r   r   r   r   r   r   sp_xsp_yden_xden_yr   rJ   s           r   test_nd_add_denser         )


)
)Cs3???Ds3???D<<>>4<<>>5E
%-C
,C99S		!!!!cr   c                 L   t           j                            d          }t          | d|t                    }t          | d|t                    }|                                |                                }}||z   }||z   }t          ||                                           d S r   r   r)   r   r   r   r   r   r   r   r  r  r  r  r   r   s           r   test_nd_add_sparser    s     )


)
)C#SAAAD#SAAAD<<>>4<<>>5EIJJ..0011111r   c                     t          j        dgt           j        ggdgdggg          } t          j        dgdggdgdggg          }| |z   }t          |           t          |          z   }t	          ||                                           d S Nr   r   r!   r
   r   )r   r(   infr   r   r   r   s       r   test_add_sparse_with_infr        HsRVHoqc{344EHsQCjA3*-..EI5!!Ie$4$44JJ..0011111r   )a_shapeb_shape))r   )r'   )r   r   )r   r#   )r#   r%   r   r
   )r%   r#   r
   r   c                    t           j                            d          }t          | d|t                    }t          |d|t                    }t          j        t          d          5  ||z    d d d            d S # 1 swxY w Y   d S Nr   r   r   r=   r>   r   r)   r   r   r   rD   rE   rF   r  r  r   arr_aarr_bs        r   +test_nd_add_sparse_with_inconsistent_shapesr  '       )


)
)C'CSDDDE'CSDDDE	z)>	?	?	?                      +A>>BBc                 h   t           j                            d          }t          | d|t                    }t          | d|t                    }|                                |                                }}||z
  }||z
  }t          |          t          |          u sJ t          ||           d S r   r  r  s           r   test_nd_sub_denser!  3  r	  r   c                 L   t           j                            d          }t          | d|t                    }t          | d|t                    }|                                |                                }}||z
  }||z
  }t          ||                                           d S r   r  r  s           r   test_nd_sub_sparser#  @  s     )


)
)Cs3???Ds3???D<<>>4<<>>5EIJJ..0011111r   c                     t          j        dgt           j        ggdgdggg          } t          j        dgdggdgdggg          }| |z
  }t          |           t          |          z
  }t	          ||                                           d S r  )r   r(   r,   r   r   r   r   s       r   test_nd_sub_sparse_with_nanr%  N  r  r   c                    t           j                            d          }t          | d|t                    }t          |d|t                    }t          j        t          d          5  ||z
   d d d            d S # 1 swxY w Y   d S r  r  r  s        r   +test_nd_sub_sparse_with_inconsistent_shapesr'  W  r  r  )	)r
   r   r   r#   r#   r   r   rt   ))r
   r   r   r   r&   )r&   )r   r   r
   r   rt   )r   r#   r   r
   r   r   r!   )r
   r#   r)  r/  )r#   r!   )r   rA   )r@   r@   )	mat_shape	vec_shapec                 l   t           j                            d          }t          | d|t                    }t          |d|t                    }|                                |                                }}||z  }||z  }t          ||           |t          |          z  }t          ||           d S r   r   r)   r   r   r   r   r   r   )	r1  r2  r   r  r  r  r  r   rJ   s	            r   test_nd_matmul_vectorr5  n  s    
)


)
)C	3CsCCCD	3CsCCCD<<>>4<<>>5E
%-C
,CS
e
CSr   ))r(  )r
   r   r#   r   r*  r,  )r   r&   r   r   )r6  rA   )r-  r   r   ))r!   r   r
   r   )r   r#   r!   r   r   ))r   r!   r!   r
   r   )r!   r   r   r   )r@   )r
   r   r   )r   )r#   r   r   r   r
   )r@   r7  r0  )
mat_shape1
mat_shape2c                    t           j                            d          }t          | d|t                    }t          |d|t                    }|                                |                                }}||z  }||z  }t          |                                |           ||z  }t          ||           |t          |          z  }t          ||           ||z  }t          ||           d S Nr   r   r   random_staterT   r4  )	r8  r9  r   r  r  r  r  r   rJ   s	            r   test_nd_matmulr>    s    
)


)
)C
CcMMMD
CcMMMD<<>>4<<>>5E
%-C
+C$$$
,Cc
e
Cc $,Ccr   c                     t           j                            d          } t          dd| t                    }t          dd| t                    }t          j        t          d          5  ||z   d d d            n# 1 swxY w Y   t          j        t          d          5  ||                                z   d d d            n# 1 swxY w Y   t          dd| t                    }t          j        t          d	          5  ||z   d d d            n# 1 swxY w Y   t          j        t          d	          5  ||                                z   d d d            d S # 1 swxY w Y   d S )
Nr   )r   r#   r   r   r   r   r<  )r!   r#   r   r
   r#   z)matmul: dimension mismatch with signaturer>   )r!   r#   r   r
   z&Batch dimensions are not broadcastable)	r   r)   r   r   r   rD   rE   rF   r   )r   r  r  sp_zs       r   .test_nd_matmul_sparse_with_inconsistent_arraysrA    sN   
)


)
)CSs#NNNDSs#NNND	z)T	U	U	U  t              	z)T	U	U	U                                  	3SLLLD	z)Q	R	R	R  t              	z)Q	R	R	R                                       sH   +A==BB#CCCDDD=E""E&)E&c                  t   t          g d          } t          g d          }t          j        |                                 |                                          }|                     |          }t	          ||           |                     |                                          }t	          ||           d S )Nr    r"   )r   r   dotr   r   )abr   rJ   s       r   test_dot_1d_1drF    s    '''A'''A
&aiikk
*
*C
%%((Cc
%%		

Ccr   c                      t          ddgddgddgg          } d}|                     |          }t          j        |                                 |          }t	          |                                |           d S )Nr!   r
   r   r   r#   r   )r   rC  r   r   r   )rD  rE  rJ   r   s       r   test_dot_sparse_scalarrH    sm    Aq6Aq6Aq6*++A	A
%%((C
&a
 
 C$$$$$r   c                      t          ddggddggg          } t          g d          }t          j        t          d          5  |                     |           d d d            d S # 1 swxY w Y   d S )Nr!   r
   r   r   r"   znot aligned for n-D dotr>   )r   rD   rE   rF   rC  )r  r  s     r   !test_dot_with_inconsistent_shapesrJ    s    Ax1a&*++Eiii  E	z)B	C	C	C  		%                 s   A''A+.A+c                  2   t          ddgddgg          } t          j        t          d          5  |                     d            d d d            n# 1 swxY w Y   t          j        t          d          5  |                     d            d d d            n# 1 swxY w Y   t          j        t          d          5  | d z   d d d            n# 1 swxY w Y   t          j        t          d          5  d | z   d d d            d S # 1 swxY w Y   d S )	Nr!   r
   r   r   zargument not supported typer>   zarg not supported typezunsupported operand type)r   rD   rE   	TypeErrorrC  	tensordot)r  s    r   test_matmul_dot_not_implementedrN    s
   1v1v&''E	y(E	F	F	F  		$              	y(@	A	A	A                	y(B	C	C	C                	y(B	C	C	C  u                 sG   AAA9BB"BCCC9DDD)
)ra   ra   )r   r   r   r   ))r!   r   r.  )r   r
   r   r   r   )r)  r   r   r#   r
   )rQ  )r   r!   ))r!   r#   rR  )rO  r   r
   r   r   )r
   r&   r   )r   r#   r   r   r
   )r   r#   r   r   rS  c                 z   t           j                            d          }t          | d|t                    }t          |d|t                    }t          j        |                                |                                          }|                    |                                          }t          ||           |                    t          |                                                    }t          ||           |                    |          }t          |                                |           d S r;  )	r   r)   r   r   r   rC  r   r   r   )r  r  r   r  r  r   rJ   s          r   test_dot_ndrW    s    
)


)
)C#CsKKKE#CsKKKE
&%--//
2
2C
))EMMOO
$
$Cc
))D))
*
*Cc
))E

C$$$$$r   rO  rP  r!   rQ  r   r   r)  rR  rU  rS  rT  r   r#   r   r&   r
   r   )r   r   r
   ))r   r#   r   r
   r   )r   r
   r   r   r&   r   ))r   r#   r   )r   r   r   r!   )r
   r   r   )r  r  rv   c                    t           j                            d          }t          | d|t                    }t          |d|t                    }t          j        |                                |                                |          }|                    |                                |          }t          ||           |                    t          |                                          |          }t          ||           |                    ||          }t          |          t          u r$t          |                                |           d S t          ||           d S )Nr   r   r<  ru   )r   r)   r   r   r   rM  r   r   r   r   r   )r  r  rv   r   r  r  r   rJ   s           r   test_tensordotrZ    s)   
)


)
)C#CsKKKE#CsKKKE
,u}}d
C
C
CC //%--///
5
5Cc
//$u}}//d/
;
;Cc //%d/
+
+CCyyIS[[]]C(((((S#r   c                  J   t           j                            d          } t          dd| t                    }t          dd| t                    }dgdgf}t          j        t          d          5  |                    ||	           d d d            n# 1 swxY w Y   t          d
d| t                    }t          dd| t                    }g dddgf}t          j        t          d          5  |                    ||	           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r#   r   r<  r   r   r   r
   z*sizes of the corresponding axes must matchr>   ru   )r#   r   r
   r   r   )r   r   r   r
   )r
   r   r!   r!   r   z,axes lists/tuples must be of the same length)	r   r)   r   r   r   rD   rE   rF   rM  )r   r  r  rv   s       r    test_tensordot_with_invalid_argsr^    s   
)


)
)C#CsKKKE#CsKKKEC!:D	z)U	V	V	V * *D)))* * * * * * * * * * * * * * * c3OOOECcMMMEGGaUD	z *& 
' 
' 
' * *D)))* * * * * * * * * * * * * * * * * *s$   1BBB3DDD)actual_shapebroadcast_shape)	))r!   r   r#   r   )r
   r   r#   r   ))r
   r!   r#   r   )r   r
   r   r#   r   ))r!   r!   r   r&   r%   )r   r#   r   r   r&   r%   )r`   )r   r#   r   ))r   r&   r!   )r   r&   r#   )rA   r   r   ))r!   r)  )rB   r"   ))r!   r   r!   r#   r   )r&   r
   r   r%   r#   r   c                 0   t           j                            d          }t          | d|t                    }|                    |          }t          j        |                                |          }t          |                                |           d S r;  )	r   r)   r   r   r   _broadcast_tobroadcast_tor   r   )r_  r`  r   r   rJ   r   s         r   test_broadcast_tore  #  sy     )


)
)C
|Ss#
N
N
NC


O
,
,C
/#++--
9
9C$$$$$r   ))r   r#   r   r   r&   r  r  )r%   r#   r
   r   r   c                    t           j                            d          }t          | d|t                    }|                                }t	          t          j        |j        d d                             }|                    |f|j        dd          z             fdt          |          D             }t          | }t          |          }t          |                                |           d S )Nr   r   r<  r   c                 .    g | ]}|d d d d f         S r   rG   ).0ireshaped_arrays     r   
<listcomp>z#test_block_diag.<locals>.<listcomp><  s,    CCCAq!!!QQQw'CCCr   )r   r)   r   r   r   r   prodr   rV   ranger   r   r   )	r   r   r  r  
num_slicesmatricesr   rJ   rj  s	           @r   test_block_diagrp  1  s     )


)
)CsCHHHDLLNNE RWU["-..//J]]J=5;rss3C#CDDNCCCCz1B1BCCCH
h
C
d

C$$$$$r   c                    t           j                            d          }t          | d|t                    }t          t          |          |           }t          |                                |                                           d S r;  )	r   r)   r   r   r   r   r   r   r   )r   r   r  rJ   s       r   test_extract_block_diagrr  D  sl     )


)
)CsCHHHD
k$//
7
7C/////r   ))ra  ra  )r]  r]  )r   r   r#   rs  c                    t           j                            d          }t          | d|t                    }t          |d|t                    }||z   }t          j        |                                |                                          }t          |                                |           ||                                z   }t          ||           d S r;  )r   r)   r   r   r   addr   r   r  r  r   rD  rE  rJ   r   s          r   test_add_no_broadcastingrw  Q  s    
)


)
)CWc3GGGAWc3GGGA
a%C
&aiikk
*
*C$$$
aiikk/Ccr   c                    t           j                            d          }t          | d|t                    }t          |d|t                    }||z
  }t          j        |                                |                                          }t          |                                |           ||                                z
  }t          ||           d S r;  )r   r)   r   r   r   subtractr   r   rv  s          r   test_sub_no_broadcastingrz  ^  s    
)


)
)CWc3GGGAWc3GGGA
a%C
+aiikk199;;
/
/C$$$
aiikk/Ccr   )r   Nr   r   rO  r!   r   r   r   r   r#   NrT  r
   rT  r   )r
   r   r   ))r   r   r   r
   r   rQ  NrQ  r!   rQ  r   rQ  r
   )rQ  r   rX  r   )rX  r   )r   axisc                    t           j                            d          }t          | d|t                    }|                    |          }t          j        |                                |          }t          ||           |                    |          }t          j        |                                |          }t          ||           d S Nr   r   r<  r  )	r   r)   r   r   r   argmaxr   r   argmin)r   r  r   rD  rJ   r   s         r   test_argmax_argminr  v  s    
)


)
)CUCcEEEA
(((

C
)AIIKKd
+
+
+Cc
(((

C
)AIIKKd
+
+
+Ccr   )r{  r|  r}  r~  r  r  r  r  r  r  r  r  )r   r#   r&   r!   r   )rO  rt   )rO  rw   )r   r   r
   r
   )r  r   r
   )rb   r   )r   r   r&   r#   rw   )r  r
   r!   )r  r  )r  r   r   )r  rC   r
   )r  r   )r  r   )r  r   c                 J   t           j                            d          }t          | d|t                    }|                    |          }t          j        |                                |          }|                    |          }t          j        |                                |          }|                    |          }t          j        |                                |          }	|	                    |          }
t          j	        |                                |          }||f||f||	f|
|ffD ]d\  }}t          j
        t          |          t           j                  rt          ||           Bt          |                                |           ed S r  )r   r)   r   r   r   minr   maxnanminnanmax
issubdtyper   numberr   )r   r  r   rD  res_minexp_minres_maxexp_max
res_nanmin
exp_nanmin
res_nanmax
exp_nanmaxrJ   r   s                 r   test_min_maxr    sq   
)


)
)CUCcEEEAeeeGfQYY[[t,,,GeeeGfQYY[[t,,,Gt$$J199;;T222Jt$$J199;;T222Jw''7); *-
J/GI - -S=cBI.. 	-c"""",,,,- -r   c                      t          g dgg          t          g dg          fD ]7} |                                 dk    sJ |                                  dk    sJ 8d S )Nr   r!   rC   )r   r  r  )rD  s    r   test_min_max_fullr    sr    ,,,())9lll^+D+DE    uuww!||||xxzzR   r   )r   NN)r   r   N)rO  r!   N)r  r   N)r  NN)rT  r
   N)r&   r   )rQ  NN)r   r   r   )rQ  r   N)rX  r   N)r  r   N)rO  rt   N)rO  rw   N)r  r
   N)r  r  N)rb   r   Nr  rw   )r&   r#   )r  r  N)r  r  Nr  )r   r   )r  r   N)r  r   N)r   r  outc                 ~   t           j                            d          }t          | d|t                    }|                    ||          }t          j        |                                |          }t          ||           |2t          ||           t          |          t          |          k    sJ d S d S Nr   r   r<  )r  r  r  )	r   r)   r   r   r   sumr   r   idr   r  r  r   rD  rJ   r   s          r   test_sumr    s    
)


)
)CUCcEEEA
%%Ts%
#
#C
&4
(
(
(Cc
S##ww"S''!!!! !!r   c                 ~   t           j                            d          }t          | d|t                    }|                    ||          }t          j        |                                |          }t          ||           |4t          |          t          |          k    sJ t          ||           d S d S r  )	r   r)   r   r   r   meanr   r   r  r  s          r   	test_meanr    s    
)


)
)CUCcEEEA
&&d&
$
$C
'!))++D
)
)
)CC
#ww"S''!!!!S!!!!! r   c                     t           j                            d          } t          dd| t                    }t          |dz                                  t          j        |                                d                     t          |dz                                  t          j        |                                d                     t          t          |                                          t          j        |                                                     t          t          |                                          t          j	        |                                                     d S )Nr   )r   r   r#   r
   r   r   r<  r   r   )
r   r)   r   r   r   r   r   powerroundabsr   rD  s     r   test_pow_abs_roundr    s    
)


)
)C[#CsKKKAQTNN$$bhqyy{{A&>&>???QTNN$$bhqyy{{A&>&>???E!HH$$&&(=(=>>>CFFNN$$bfQYY[[&9&9:::::r   c                    t           j                            d          }t          | d|t                    }t          |d|t                    }t          j                    5  t          j        dt                     t          ||k    
                                |
                                |
                                k               t          ||k    
                                |
                                |
                                k               t          ||k    
                                |
                                |
                                k               t          ||k    
                                |
                                |
                                k               t          ||k    
                                |
                                |
                                k               t          ||k     
                                |
                                |
                                k                t          ||k    
                                t          j        ||k    
                                                     t          ||k    
                                t          j        ||k     
                                                     t          ||k    
                                t          j        ||k    
                                                     d d d            d S # 1 swxY w Y   d S Nr   r   r<  ignore)r   r)   r   r   r   warningscatch_warningssimplefilterr   r   r   bitwise_not)r  r  r   rD  rE  s        r   test_boolean_comparisonsr    s   
)


)
)CWc3GGGAWc3GGGA		 	"	" 
H 
Hh(?@@@ad^^%%qyy{{AIIKK'?@@@ad^^%%qyy{{AIIKK'?@@@ad^^%%qyy{{AIIKK'?@@@ad^^%%qyy{{AIIKK'?@@@ac]]__aiikk!))++&=>>>ac]]__aiikk!))++&=>>>ad^^%%r~q!tnn6F6F'G'GHHHad^^%%r~qsmmoo'F'FGGGad^^%%r~qsmmoo'F'FGGG
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
H 
Hs   #KM		MMc                     t           j                            d          } t          dd| t                    }t          j                    5  t          j        dt                     t          |dk    
                                |
                                dk               t          |dk    
                                |
                                dk               t          |dk    
                                |
                                dk               t          |dk    
                                |
                                dk               t          |dk    
                                |
                                dk               t          |dk     
                                |
                                dk                d d d            d S # 1 swxY w Y   d S )Nr   )r#   r   r&   r   r   r<  r  r   r!   )r   r)   r   r   r   r  r  r  r   r   r   r  s     r   $test_boolean_comparisons_with_scalarr    s   
)


)
)CY#SIIIA		 	"	" 5 5h(?@@@ad^^%%qyy{{A~666ad^^%%qyy{{A~666ad^^%%qyy{{A~666ad^^%%qyy{{A~666ac]]__aiikk!m444ac]]__aiikk!m4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   FGG"Gc                 d   t           j                            d          }t          | d|t                    }t          |d|t                    }||z  }t          j        |                                |                                          }t          |                                |           d S r;  r   r)   r   r   r   multiplyr   r   rv  s          r   test_multiplyr    s    
)


)
)CWc3GGGAWc3GGGA
a%C
+aiikk199;;
/
/C$$$$$r   c                     t           j                            d          } t          dd| t                    }|dz  }t          j        |                                d          }t          |                                |           d S Nr   )r   r#   r   r   r<  r   r  r   rD  rJ   r   s       r   test_multiply_with_scalarr    sm    
)


)
)CWc3GGGA
a%C
+aiikk1
%
%C$$$$$r   c                    t           j                            d          }t          | d|t                    }t          j        ddt          j        |          z                                 |          }||z  }|	                                |z  }t          |	                                |           ||z  }t          |	                                |           d S )Nr   r   r<  r!   )r   r)   r   r   r   arangemathrl  rV   r   r   rv  s          r   test_divider    s    
)


)
)CWc3GGGA
	!Q7+++,,44W==A
a%C
))++/CCKKMM3'''
a%CCKKMM3'''''r   c                      t           j                            d          } t          dd| t                    }|dz  }|                                dz  }t          |                                |           d S r  )r   r)   r   r   r   r   r   r  s       r   test_divide_with_scalarr  "  se    
)


)
)CWc3GGGA
a%C
))++/CCKKMM3'''''r   c                    t           j                            d          }t          | d|t                    }t          |d|t                    }t          j                    5  t          j        dt                     |	                    |          }t          j	        |
                                |
                                          }t          |
                                |           d d d            d S # 1 swxY w Y   d S r  )r   r)   r   r   r   r  r  r  r   maximumr   r   rv  s          r   test_maximumr  *     
)


)
)CWc3GGGAWc3GGGA		 	"	" ) )h(?@@@iilljaiikk22S[[]]C(((	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )   #BC;;C?C?c                    t           j                            d          }t          | d|t                    }t          |d|t                    }t          j                    5  t          j        dt                     |	                    |          }t          j	        |
                                |
                                          }t          |
                                |           d d d            d S # 1 swxY w Y   d S r  )r   r)   r   r   r   r  r  r  r   minimumr   r   rv  s          r   test_minimumr  6  r  r  c                  Z   t          g d          } t          ddgddgddgg          }t          ddgdd	ggd
dgddgggddgddggddgddgggg          }t          j                    5  t          j        dt                     t          |                     d                                          t          j        |                                 d                     t          |                    d                                          t          j        |                                d                     t          |                    d                                          t          j        |                                d                     d d d            d S # 1 swxY w Y   d S N)r   r!   r   r   r      r#   ir   r
   r   r&   r%   r   r'   r   ir  )	r   r  r  r  r   r   r  r   r   rD  rE  cs      r   test_maximum_with_scalarr  B     '''AB7RGaX.//AaUQqENaURG$45UQqENaUQrFO46 	7 	7A		 	"	" I Ih(?@@@QYYq\\))++RZ		Q-G-GHHHQYYq\\))++RZ		Q-G-GHHHQYYq\\))++RZ		Q-G-GHHH	I I I I I I I I I I I I I I I I I I   *D)F  F$'F$c                  Z   t          g d          } t          ddgddgddgg          }t          ddgdd	ggd
dgddgggddgddggddgddgggg          }t          j                    5  t          j        dt                     t          |                     d                                          t          j        |                                 d                     t          |                    d                                          t          j        |                                d                     t          |                    d                                          t          j        |                                d                     d d d            d S # 1 swxY w Y   d S r  )	r   r  r  r  r   r   r  r   r   r  s      r   test_minimum_with_scalarr  N  r  r  c                     t          t          j        d                    } | d         dk    sJ | d         dk    sJ t          | dd                                         |                                 dd                    t          | d d                                         |                                 d d                    t          | dd                                          |                                 dd                     t          | ddd                                         |                                 ddd                    t          | g d                                         |                                 g d                    t          | g d	                                         |                                 g d	                    d S )
Nr%   r   r   r!   r   r#   r
   r!   r   r   r   r   r!   )r   r   r  r   r   r[   s    r   test_1d_coo_getr  Z  su   ")A,,AQ419999Q4199991Q3!!199;;qs#34442A2!))++bqb/222122!))++abb/2221Qq5!!##QYY[[1Q%7888999%%''YYY)?@@@999%%''YYY)?@@@@@r   c                     t          t          j        d                              d                    } | d         dk    sJ | d         dk    sJ t	          | dddf                                         |                                 dddf                    t	          | d	ddf                                         |                                 d	ddf                    t	          | d d	dd
df                                         |                                 d d	dd
df                    t	          | ddgdf                                         |                                 ddgdf                    t	          | d	d ddgf                                         |                                 d	d ddgf                    t	          | t          j        ddg          df                                         |                                 ddgdf                    t	          | d	d t          j        ddg          f                                         |                                 d	d ddgf                    t	          | d d df                                         |                                 d d df                    t	          | dd d f                                         |                                 dd d f                    d S )N   r   r#   r+  r   ra     r!   r   r
   r#   )r   r   r  rV   r   r   r(   r  s    r   test_2d_coo_getr  i  s   ")E""**62233AT7a<<<<T7b====1Q36""$$aiikk!A#q&&9:::1ac6""$$aiikk!QqS&&9:::2A2q1u9%%''RaR1QY)?@@@Aq619%%''aUAX)>???1221v:&&((!))++abb1Q%i*@AAA28QF##Q&'//11199;;!uax3HIII122rxA'''(0022AIIKKQqE	4JKKK111a4""AIIKK1$56661aaa4""AIIKK111$566666r   c                     t          t          j        d                              d                    } | d         dk    sJ | d         dk    sJ t	          | ddddf                                         |                                 ddddf                    t	          | ddddf                                         |                                 ddddf                    t	          | d ddd	d
d
d f                                         |                                 d ddd	d
d
d f                    t	          | ddgddf                                         |                                 ddgddf                    t	          | d d
ddddgf                                         |                                 d d
ddddgf                    t	          | dd d df                                         |                                 dd d df                    t	          | d d d d df                                         |                                 d d d d df                    d S )Nx   r"   r   r   r\  w   r!   r   r#   r
   )r   r   r  rV   r   r   )rZ   s    r   test_3d_coo_getr  |  sH   ")I&&..y99::AW:????W:1ac19%%''Q!QY)?@@@1ac19%%''Q!QY)?@@@2A2q1uabb=!))++QYY[[!QqUABB-GHHHAq61a<((**AIIKKA1,EFFF2A2qsQF?#++--qyy{{2A2qsQF?/KLLL1aaa7##%%qyy{{1aaa7';<<<111aaa7##%%qyy{{111aaa7';<<<<<r   c            	         t          t          j        d                              d                    } |                                 }t          | d ddd df                                         |d ddd df                    t          | d d dddd df                                         |d d dddd df                    t          | d d ddd dd f                                         |d d ddd dd f                    t          | d d ddd f                                         |d d ddd f                    d S )Nr  r"   r#   r   r!   .)r   r   r  rV   r   r   rZ   Ds     r   test_newaxis_getr    sR   ")I&&..y99::A			A2A2qrr19%%''2A2qrr196664!QqS$)*2244abqb!A#tQ8N6OPPP4!QRRD()1133QtRaRQ7L5MNNN4!S$&'//111T2A2sD5H3IJJJJJr   c                     t          j        d                              d          } t          |           }dx|d dd df<   | d dd df<   t	          |                                |            dx|dd dd f<   | dd dd f<   t	          |                                |            dx|dd d df<   | dd d df<   t	          |                                |            d S )Nr  r"   r#   r   r!   r   )r   r  rV   r   r   r   r  rZ   s     r   test_newaxis_setr    s    
	)$$Y//A!A&''AdABBkNQtQRR{^a   &''Aabb!TkNQqrr1d{^a   &''Aabb$kNQqrr4{^a     r   c                     t          j        d          } t          |           }dx|d<   | d<   t          |                                |            dx|d<   | d<   t          |                                |            ddgx|dd<   | dd<   t          |                                |            g d	x|d d<   | d d<   t          |                                |            | dd           x|dd <   | dd <   t          |                                |            | dd
d          x|dd
d<   | dd
d<   t          |                                |            | g d          x|g d<   | g d<   t          |                                |            | g d          x|g d<   | g d<   t          |                                |            d S )Nr%   rC   r   r   r   r   r!   r   )iiir#   r
   r  r    r  )r   r  r   r   r   r  s     r   test_1d_coo_setr    s   
	!A!AAaD1Q4a   AaD1Q4a   2hAacFQqsVa    LL AbqbEAbqbEa   qrrUFAabbEAabbEa   QqU8)#Aa!eHq1Qxa   #$YYY<-/AiiiL1YYY<a   #$YYY<-/AiiiL1YYY<a     r   r  r  r`   )rC   r   r#   rC   r    rZ   r  idxc                 ,    g | ]}t           t          |fS rG   r  rh  r  s     r   rk  rk        ,I,I,ISaC[,I,I,Ir   c                 l    ||          x||<   | |<   t          |                                 |           d S r   r   r   r  s      r   test_2d_coo_setr    s:     vgAcFQsVa     r   r  r"   r   )r   r#   r   c                 ,    g | ]}t           t          |fS rG   r  r  s     r   rk  rk    r  r   c                 ^    dx||<   | |<   t          |                                 |           d S )Nr  r  s      r   test_3d_coo_setr    s4     AcFQsVa     r   scalar_containerc                 H    t          t          j        | gg                    S r   )r	   r   r(   xs    r   <lambda>r    s    yA3%)) r   c                     | S r   rG   r
  s    r   r  r    s    q r   )sparsedensescalar)idszfails in parallel)reasonc                      | d          t           d<   dt          d<   t          t                                           t                     d S )Nr  r   )rZ   r  r   r   )r  s    r   test_3d_coo_singletonr    s?     $#C((AiLAiLa     r     r   r   r   r   r   )zall-intsr   )zellipsis-first).r   )zellipsis-last)r!   .)zellipsis-middle)r!   .r   z
split-intszcontiguous-ints-lastzcontiguous-ints-firstzempty-slicezsplit-2d-arrays-and-intsr7   )r
   r!   r
   )r
   r!   r   r   zcontiguous-2d-arrays-and-intszsplit-1d-arrays-and-intsz,split-ints-broadcast-arrays-slice-step-not-1zcontiguous-broadcast-arrayszcontiguous-arrays-firstz!split-arrays-some-first-some-lastz$duplicate-array-entries-split-arrays)r   r   r   z3duplicate-array-entries-contiguous-broadcast-arraysrZ   r  ixmsgc                 4    g | ]\  }}t           t          ||fS rG   r  )rh  r  r  s      r   rk  rk  3  s$    2W2W2WwsBAq"c?2W2W2Wr   c                 j    dx||<   | |<   t          |                                 |d| d           d S )Nr  z

Test of: 
)err_msgr  r  s       r   test_5d_coo_setr  3  sE     AbEAbEa)>s)>)>)>??????r   c                     t          j        d                              d          } t          |           }t	          || dk                                             | | dk                        t	          || dk                                             | | dk                        t	          || dk                                             | | dk                        t	          ||dk                                             | | dk                        t	          ||dk                                             | | dk                        t	          ||dk                                              | | dk                         |d d ddddf         dk    }|dd d dddf         dk    }|t          dd	d           d
gt          d dd          |f}|                                t          dd	d
          d
gt          ddd          |                                f}| |         }t	          ||                                         |           t	          ||                                         |           t          dd	d           ||t          d dd          d
gf}t          dd	d           |                                |                                t          d dd          d
gf}| |         }t	          ||                                         |           d S )Nr  r    i  rC   r   2   r
   r   r!   )r   r  rV   r   r   r   slice)r  rZ   bi0bi1r  idxnpresults          r   test_bool_getr'  :  s   
	#$$,,_==A!A1s7##%%qSz2221t8$$&&!d(4441r6""$$aBi0001s7##%%qSz2221t8$$&&!d(4441r6""$$aBi000
AAAq!QM
R
C
Aqqq!QM
R
CaD!!A3dAq(9(93
?C[[]]E!QNNQCq!QOEuXF3!!6***5!!##V,,,Atc3dAq(9(9A3
?C1as{{}}eD!Q>O>ORSQTUEuXF3!!6*****r   c                  8   t          j        d                              d          } t          |           }|                                |                                 }}dx||dk    <   ||dk    <   t          |                                |           |                                |                                 }}dx||dk    <   ||dk    <   t          |                                |           |                                |                                 }}|d d ddddf         dk    }|t          dd	d           d
gt          d dd          |f}|                                t          dd	d
          d
gt          ddd          |                                f}dx||<   ||<   t          |                                |           |                                |                                 }}dx||<   ||<   t          |                                |           d S )Nr  r  ir   ir   r!  r
   r   r!   ii)r   r  rV   r   copyr   r   r"  )D_origA_origrZ   r  bool0r  r%  s          r   test_bool_setr-  U  s   Y())11/BBFvF;;==&++--qA!!Aa#gJ1s7a   ;;==&++--qA!!Aa#gJ1s7a   ;;==&++--qAaaaAq!mr!E%1d##aS%a*;*;U
CC]]__eAq!nnqc5Aq>>5==??SEAeHqva   ;;==&++--qAAeHqxa     r   )r  r  numpyr   numpy.testingr   r   rD   scipy.linalgr   scipy.sparser   r   r   scipy.sparse._csrr	   _coor   r   r   r4   r;   rH   rK   rO   rQ   r]   rk   ro   rr   r|   r   r   markparametrizer   r   ziptupler   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r#  r%  r'  mat_vec_shapesr5  mat_mat_shapesr>  rA  rF  rH  rJ  rN  
dot_shapesrW  tensordot_shapes_and_axesrZ  r^  re  rp  rr  add_sub_shapesrw  rz  argmax_argmin_shapes_axisr  max_min_shapes_axisr  r  r   sum_mean_paramsr  r  r  bitwise_op_and_compare_shapesr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rV   r  rZ   r"  Ellipsisr(   keysthread_unsafer  r  r  r  r'  r-  rG   r   r   <module>rD     sR         7 7 7 7 7 7 7 7  # # # # # # I I I I I I I I I I ' ' ' ' ' ' 3 3 3 3 3 3 3 3< < <R R R@) ) )(+ + +80 0 05 5 58 8 8
# # # " " "J  F F FA A A    3 3 3 00% % % % 10% LLL,,, ? ?@@%eCHo % % % A@% --%c % % % .-%  8
+ 
+ 
+  2 2 2      B" " "  #; #; #; < <0 0< <0  #; #; #; < <1 1< <1  #; #; #; < <% %< <%  #; #; #; < <% %< <%; ; ; / 2Q 2Q 2Q R R- -	R R-  #; #; #; < <6 6< <6  #; #; #; < </ /< </ / 2S 2S 2S T TS ST TSA A A5 5 54  #; #; #; < < < <  #; #; #; < <2 2< <22 2 2 / 2K 2K 2K L L L L  #; #; #; < < < <  #; #; #; < <	2 	2< <	22 2 2 / 2K 2K 2K L L L L
 
 
 3^DD
 
 ED
   5~FF  GF*     "  % % %  	 	 	  
 /<<% % =<%$ EQC!:sQCj!	9sQCj!	QFQF+,kIIIyyy12!g			999-.	  79RSS  TS,* * *& <M M MN N
% %N N
% ' %> %> %> ? ?% %? ?%" ' %> %> %> ? ?0 0? ?0   /@@	 	 A@	 /@@
 
 A@
    *,EFF
 
 GF

 
 
  *,?@@- - A@-*      &(;!XRXe__5iHBHW,=,=>0-/C.0@xrx')A	6828E??CY$@  1?CC	" 	" DC	" 1?CC	" 	" DC	"; ; ;! ! !  /1NOOH H POH"
5 
5 
5 /1NOO% % PO%% % % /1NOO	( 	( PO	(( ( ( /1NOO) ) PO) /1NOO) ) PO)	I 	I 	I	I 	I 	IA A A7 7 7&= = = K K K	! 	! 	!! ! !0 BIeV$$IaLL 
U1aaD
U1aaA'
U4rAdKVQKAKRXq!fuuQ~~&
U1XXxrx			""#RXq!fxrxA''(#( ***,I,ID,I,I,IJJ! !  KJ!
 BIi  ++IaLL aQ
U1d^^Qa!
U1XXuuQ1~~uuQ~~.
U4rEE$KKq!Q8AaRXq!fuuQ~~q)RXq!fuuQ~~s+RXq!fuuQ~~xrxA'7'78!Q("(Aq6**+RXq!fxrxA''+RXq!fxrxA''!-%* ***,I,ID,I,I,IJJ! !  KJ!
 ))28[[A%%%   
 "566! ! 76 ! BI  ((99IaLL  $EE$4((!QdD$0G0GKLeeAtT22EE$d4K4KQPQSTUVq!Qat(<(<eeD$PT>U>UVWUU1a&&dD$(?(?AqIJ	tQ					9995			9997M	tT4	 	 !	% %	tQ					9995			9997M	
EE$d##	%  	tQ		yyy)))UU4t5L5LaP 4	
EE!QNNA			{aS1#sO< #	tQ		uuQ1~~q999+aS1#O 
))sQC!oq%%1a..%%a:N:NO )
))eeAq!nneeD!T&:&:AaS1#O ,	tQ					9995			9997M	tT4	 	 !	% ;	q!QA			{aS1#sO<Q+Z 0002W2WRV2W2W2WXX@ @  YX@
+ + +6! ! ! ! !r   