
    Ph                     *   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mZm	Z	m
Z
mZmZmZmZ 	  ej                  d      d   Zed   d   dk(  Zd
Z ej(                  g d      Z e eee            Z G d d      Z G d d      Zd Zy# e$ r d	ZY Fw xY w)    N)assert_assert_equalassert_array_equalassert_almost_equalassert_raisessuppress_warningsassert_raises_regexassert_allclosedicts)mode	Compilerscnamezclang-clF
abcdefghij)            r   r   r      r   r   r   c                      e Zd Zd Zd Zd Z ej                         d0d       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d Zd Zd Zd Zd Zd Zd Zd Zd Zd Z e!jD                  jG                  dejH                  d   ejH                  d   z         d         Z%d! Z&d" Z'd1d$Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2d/ Z3y#)2
TestEinsumc                    dD ]x  }t        t        t        j                  |       t        t        t        j                  d|       t        t        t        j                  dd|       t        t        t        j                  ddd|       t        t        t        j                  ddd|       t        t        t        j                  ddd	|
       t        t        t        j                  ddd|       t        t        t        j                  ddd|       t        t        t        j                  gdd|i t        t        t        j                  ddd|       t        t        t        j                  dddgdg|       t        t        t        j                  ddg|       t        t        t        j                  dd|       t        t        t        j                  dddg|       t        t        t        j                  dd|       t        t        t        j                  dddg|       t        t        t        j                  dd|       t        t        t        j                  dddg|       t        t        t        j                  dddg|       t        t        t        j                  dddg|       t        t        t        j                  dddg|       t        t        t        j                  dddg|       t        t        t        j                  dddg|       t        t        t        j                  dddg|       t        t        t        j                  dddg|       t        t        t        j                  dddg|       t        t        t        j                  dddgddgg|       t        t        t        j                  d t        j
                  d!      j                  d"d#      |       t        t        t        j                  d$t        j
                  d!      j                  d"d#      |       t        t        t        j                  dt        j
                  d!      j                  d"d#      |       t        t        t        j                  d%dd&gdd&ggt        j
                  d'      j                  d"d"      |       t        t        d(      5  t        j                  d)      }t        j                  d*      }t        j                  d+||       d d d        t        t        t        j                  d%t        j
                  d!      j                  d,d&      |d-.       { y # 1 sw Y   SxY w)/NTFoptimize r   test)outr   Worderr   blah)castingr   bad_data_type)dtyper   )bad_argr   )?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNr   ,iijz...izi...jzi...zij...zi..z.i...zj->..jzj->.j...zi%...z...j$zi->&zi->ijzij->jijiir   r   r   ii->izi->i   r   z'b')r   r   r   r   r   )r   r   r   z	aabcb,abcd)r   r!   )	r   
ValueErrornpeinsum	TypeErrorarangereshaper	   ones)selfdo_optabs       gC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\numpy/core/tests/test_einsum.pytest_einsum_errorszTestEinsum.test_einsum_errors   s   #F*bii&A*biifE )RYY1vF )RYYA6#)+ *biiQc#)+ *biiQ#)+ )RYYA_#)+ )RYYAq#)+ )RYYMMfM *biiQFK*biia!qc#)+*biiqcFK *biia&I*bii1vO*biiVL*bii1a&6R*biiVL*bii1a&6R *biiAP*bii1a&6R*biiAq6FS*biiaVfU *bii1a&6R*bii1a&6R*bii!Q&Q *bii1a&6R *biiaVaV<L#)+ *bii))A,..q!4vG*bii))A,..q!4vG *biibiil6J6J1a6P#)+*bii1a&1a&9I iil221a86K$Z7GGO,GGI&		+q!,	 8 *bii19M9MbRS9T#)6c $T 87s   ,AV  V		c           	          G d dt                G fdd      }t        j                  t        dd      D cg c]  } ||d       c}d	      j	                  d
d
      }t        t        j                  d|       t        j                  t        dd      D cg c]  } ||d       c}d	      j	                  d
d
d
      }t        t        j                  d|       t        j                  t        dd      D cg c]  } ||d       c}d	      }t        t        j                  d||       t        t        j                  d||       t        t        j                  d|       y c c}w c c}w c c}w )Nc                       e Zd Zy)=TestEinsum.test_einsum_object_errors.<locals>.CustomExceptionN)__name__
__module____qualname__     r:   CustomExceptionr>   s   s    rC   rD   c                   4    e Zd Zd Z fdZd Z fdZd Zy):TestEinsum.test_einsum_object_errors.<locals>.DestructoBoxc                      || _         || _        y N_val	_destruct)r6   valuedestructs      r:   __init__zCTestEinsum.test_einsum_object_errors.<locals>.DestructoBox.__init__x   s    !	!)rC   c                 j    | j                   |j                   z   }|| j                  k\  r|| _         | S rH   rI   r6   othertmprD   s      r:   __add__zBTestEinsum.test_einsum_object_errors.<locals>.DestructoBox.__add__|   3    ii%**,$..()) #DIKrC   c                 2    |dk(  r| S | j                  |      S Nr   )rS   r6   rQ   s     r:   __radd__zCTestEinsum.test_einsum_object_errors.<locals>.DestructoBox.__radd__       A:K<<..rC   c                 j    | j                   |j                   z  }|| j                  k\  r|| _         | S rH   rI   rP   s      r:   __mul__zBTestEinsum.test_einsum_object_errors.<locals>.DestructoBox.__mul__   rT   rC   c                 2    |dk(  r| S | j                  |      S rV   )r[   rW   s     r:   __rmul__zCTestEinsum.test_einsum_object_errors.<locals>.DestructoBox.__rmul__   rY   rC   N)r?   r@   rA   rN   rS   rX   r[   r]   )rD   s   r:   DestructoBoxrF   v   s    * / /rC   r^   r,   
   r   objectr%   r   zij->ir      d   z
i...k->...r   7   ij, jzij, jhzij->)	Exceptionr0   arrayranger4   r   r1   )r6   r^   r(   r8   r9   rD   s        @r:   test_einsum_object_errorsz$TestEinsum.test_einsum_object_errorso   sB   	i 	 	/  	/D HH%2,?,Ql1a(,?#%%,WQ] 	
 	oryy'1= HHE!RLALql1c*LA#%%,WQ1%5 	
oryy,B HH5A;?;al1b);?#%oryy'1a@ 	oryy(AqA 	oryy&!<) @ B
 @s   E/E4?E9c                 H   dD 
]  }t        j                  d      }d|_        t        j                  d||      }t	        |j
                  |u        t        j                  |t        g|      }t	        |j
                  |u        t        j                  d||      }t	        |j
                  |u        t        ||       t        j                  |ddg|      }t	        |j
                  |u        t        ||       t        j                  d||      }t	        |j                  d	          d
|j                  d	<   t        j                  d||      }t	        |j                  d	           t        j                  d      }d|_        t        j                  d||      }t	        |j
                  |u        t        ||j                         t        j                  |ddg|      }t	        |j
                  |u        t        ||j                         t        j                  d      }d|_        t        j                  d||      }t	        |j
                  |u        t        |t        d      D cg c]	  }|||f    c}       t        j                  |ddgdg|      }t	        |j
                  |u        t        |t        d      D cg c]	  }|||f    c}       t        j                  d      }d|_        t        j                  d||      }t	        |j
                  |u        t        ||D cg c]   }t        d      D cg c]	  }|||f    c}" c}}       t        j                  |t        ddgt        dg|      }t	        |j
                  |u        t        ||D cg c]   }t        d      D cg c]	  }|||f    c}" c}}       t        j                  d||      }t	        |j
                  |u        t        ||j                  ddd      D cg c]   }t        d      D cg c]	  }|||f    c}" c}}       t        j                  |ddt        gt        dg|      }t	        |j
                  |u        t        ||j                  ddd      D cg c]   }t        d      D cg c]	  }|||f    c}" c}}       t        j                  d||      }t	        |j
                  |u        t        |t        d      D cg c]  }|d d ||f    c}       t        j                  |t        ddgdt        g|      }t	        |j
                  |u        t        |t        d      D cg c]  }|d d ||f    c}       t        j                  d||      }t	        |j
                  |u        t        |t        d      D cg c]  }|d d ||f    c}       t        j                  |g dddg|      }t	        |j
                  |u        t        |t        d      D cg c]  }|d d ||f    c}       t        j                  d||      }t	        |j
                  |u        t        |t        d      D cg c]  }|j                  ddd      d d ||f    c}       t        j                  |ddt        gdt        g|      }t	        |j
                  |u        t        |t        d      D cg c]  }|j                  ddd      d d ||f    c}       t        j                  d||      }t	        |j
                  |u        t        |t        d      D cg c]  }|j                  ddd      d d ||f    c}       t        j                  |dt        dgdt        g|      }t	        |j
                  |u        t        |t        d      D cg c]  }|j                  ddd      d d ||f    c}       t        j                  d||      }t	        |j
                  |u        t        ||j                  ddd      D cg c]   }t        d      D cg c]	  }|||f    c}" c}}       t        j                  |dt        dgt        dg|      }t	        |j
                  |u        t        ||j                  ddd      D cg c]   }t        d      D cg c]	  }|||f    c}" c}}       t        j                  d      }d|_        t        j                  d||      }t	        |j
                  |u        t        |t        d      D cg c]
  }||||f    c}       t        j                  |g ddg|      }t	        |j
                  |u        t        |t        d      D cg c]
  }||||f    c}       t        j                  d      }d|_        t        j                  d||      }t	        |j
                  |u        t        ||j                  dd             t        j                  |g d g d!|      }t	        |j
                  |u        t        ||j                  dd             
 y c c}w c c}w c c}w c c}}w c c}w c c}}w c c}w c c}}w c c}w c c}}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}}w c c}w c c}}w c c}w c c}w )"Nr   r   r   r   z...r   r)   r   r,   	WRITEABLEFji	   )r   r   r+   r   rb   )r   r   r   z...ii->...izii...->...ir   z...ii->i...zjii->ij)r,   r   r   zii...->i...zi...i->i...zi...i->...iziii->i)r   r   r      r   r   r   zijk->jikr   r,   r   )r,   r   r   )r0   r3   shaper1   r   baseEllipsisr   flagsTrh   	transposeswapaxes)r6   r7   r8   r9   r(   xs         r:   test_einsum_viewszTestEinsum.test_einsum_views   sE	   #F		!AAG		%V4AAFFaK 		!hZ&9AAFFaK 		$F3AAFFaK A		!aVf5AAFFaK A 		%V4AAGGK()#(AGGK 		%V4A,,- 		!AAG		$F3AAFFaK ACC 		!aVf5AAFFaK ACC  		!AAG		'1v6AAFFaK eAh7hQq!tWh78		!aVaS6:AAFFaK eAh7hQq!tWh78 		"AAG		-V<AAFFaK !D!QuQx8x!a1gx8!DE		!h1-!}vNAAFFaK !D!QuQx8x!a1gx8!DE		-V<AAFFaK &'kk!Q&:<&: 05Qx8x!a1gx8&:< = 		!aH-!}vNAAFFaK &'kk!Q&:<&: 05Qx8x!a1gx8&:< = 		-V<AAFFaK q:AQq!QwZ:;		!h1-8}vNAAFFaK q:AQq!QwZ:;		)Q8AAFFaK q:AQq!QwZ:;		!YA@AAFFaK q:AQq!QwZ:;		-V<AAFFaK E!HMHqQ[[Aq1!Q':HMN		!aH-8}vNAAFFaK E!HMHqQ[[Aq1!Q':HMN		-V<AAFFaK E!HMHqQ[[Aq1!Q':HMN		!a1-8}vNAAFFaK E!HMHqQ[[Aq1!Q':HMN		-V<AAFFaK &'kk!Q&:<&: 05Qx8x!a1gx8&:< = 		!a1-!}vNAAFFaK &'kk!Q&:<&: 05Qx8x!a1gx8&:< = 		"AAG		(A7AAFFaK q:AQq!QwZ:;		!Yf=AAFFaK q:AQq!QwZ:; 		"AAG		*a&9AAFFaK AJJq!,-		!Y	FCAAFFaK AJJq!,-O $V 8 8 9D 9D 9 <
 9 <
 ; ; ; ; N N N N 9 <
 9 < ; ;s   4j&j+:j5j0j5/k j;k 'k9kk-k?kkkk!k&=k+"k0"k5;"k:4"k?(l	:ll	.l ll9ll0j5;k kkl	lc                 6   t        j                  |      }t        dd      D ]  }t        j                  ||      }t        j                  |d      }t        |d      r|j                  |      }t        t        j                  d||      |       t        t        j                  |d	gg |      |        t        dd      D ]  }t        j                  d
|z  |      j                  dd|      }t        j                  |d      }t        |d      r|j                  |      }t        t        j                  d||      |       t        t        j                  |t        d	gt        g|      |        t        dd      D ]  }t        j                  d|z  |      j                  d|      }t        j                  |d	      }t        |d      r|j                  |      }t        t        j                  d||      |       t        t        j                  |d	t        gt        g|      |        t        dd      D ]  }t        j                  d
|z  |      j                  dd|      }t        j                  |d	      }t        |d      r|j                  |      }t        t        j                  d||      |       t        t        j                  |d	t        gt        g|      |        t        dd      D ]	  }t        j                  ||z  |      j                  ||      }t        j                  |      }t        |d      r|j                  |      }t        t        j                  d||      |       t        t        j                  |d	d	g|      |       t        j                  d	d	g      }t        t        j                  |||      |       t        t        j                  |t        |      |      |        t        t        j                  ddd      d       t        dd      D ]  }t        j                  d|z  |      j                  d|      }t        j                  d
|z  |      j                  dd|      }t        t        j                  d|||      t        j                  ||             t        t        j                  |t        g|t        g|      t        j                  ||              t        dd      D ]  }t        j                  d
|z  |      j                  dd|      }t        j                  ||      }t        t        j                  d|||      t        j                  ||             t        t        j                  |t        d	g|t        d	g|      t        j                  ||              t        dd      D ]  }t        j                  |dz  dz  |      j                  |dd      }t        j                  ||      }t        t        j                  d|||      t        j                  |j                   |j                         j                          t        t        j                  |d	t        g|d	t        g|      t        j                  |j                   |j                         j                           t        dd      D ]  }t        j                  d|      dz   }t        j                  ||      dz   }t        t        j                  d|||      t        j"                  ||             t        t        j                  |d	g|dg|      t        j"                  ||              t%               5 }|j'                  t         j(                         t        dd      D ]  }t        j                  d|z  |      j                  d|      }t        j                  ||      }t        t        j                  d|||      t        j*                  ||             t        t        j                  |d	dg|dg|      t        j*                  ||             t        j                  d|      }t        j                  d|||dd|       t        |t        j*                  |j                  d      |j                  d            j                  |             d	|d<   t        j                  |d	dg|dg|dd|       t        |t        j*                  |j                  d      |j                  d            j                  |              t        dd      D ]H  }t        j                  d|z  |      j                  d|      }t        j                  ||      }t        t        j                  d|j                   |j                   |      t        j*                  |j                   |j                                t        t        j                  |j                   dd	g|j                   dg|      t        j*                  |j                   |j                                t        j                  d|      }t        j                  d|j                   |j                   |dd|       t        |t        j*                  |j                   j                  d      |j                   j                  d            j                  |             d	|d<   t        j                  |j                   dd	g|j                   dg|dd|       t        |t        j*                  |j                   j                  d      |j                   j                  d            j                  |             K t        dd      D ]  }|dk  s|dk7  st        j                  d|z  |      j                  d|      }t        j                  |d
z  |      j                  |d
      }t        t        j                  d |||      t        j*                  ||             t        t        j                  |d	dg|ddg|      t        j*                  ||              t        dd      D ]Z  }t        j                  d|z  |      j                  d|      }t        j                  |d
z  |      j                  |d
      }t        j                  d!|      j                  dd
      }t        j                  d |||dd|       t        |t        j*                  |j                  d      |j                  d            j                  |             d	|d<   t        j                  |d	dg|ddg|dd|       t        |t        j*                  |j                  d      |j                  d            j                  |             ] t        j                  d|      j                  dd      }t        j                  d"|      j                  dd#      }t        j                  d$|      j                  d#d
      }|dk7  rt        t        j                  d%||||      |j+                  |      j+                  |             t        t        j                  |d	dg|ddg|ddg|      |j+                  |      j+                  |             t        j                  d&|      j                  dd
      }	t        j                  d%||||	dd|       |j                  d      j+                  |j                  d            }
|
j+                  |j                  d            j                  |      }
t        |	|
       d	|	d<   t        j                  |d	dg|ddg|ddg|	dd|
       |j                  d      j+                  |j                  d            }
|
j+                  |j                  d            j                  |      }
t        |	|
       t        j                  |      t        j                  d      k7  rt        j                  d'|      j                  ddd#      }t        j                  d!|      j                  ddd      }t        t        j                  d(||      t        j,                  ||dd	gd	dgf)             t        t        j                  |g d*|g d+ddg      t        j,                  ||dd	gd	dgf)             t        j                  d,|      j                  d#d      }t        j                  d-|||dd|       t        |t        j,                  |j                  d      |j                  d      dd	gd	dgf)      j                  |             d	|d<   t        j                  |g d*|g d+ddg|dd|	       t        |t        j,                  |j                  d      |j                  d      dd	gd	dgf)      j                  |             d d d        |j.                  d.k7  rd/n!t        j0                  |      j2                  dz
  }t        j4                  dd|d	dd0d	dg|      }t        j4                  d	d1d2|d	dddg|      }t        j4                  g d3      }t        t        j                  d4|||d5d|6      t        j6                  t        j6                  |d	k7  |d	k7        |d	k7               t        t        j                  |d	g|d	g|d	gd	gd5d7	      t        j6                  t        j6                  |d	k7  |d	k7        |d	k7               t        j                  d8|      }t        t        j                  d9d|      dt        j                  |      z         t        t        j                  dg |d	gg       dt        j                  |      z         t        t        j                  d:|d      dt        j                  |      z         t        t        j                  |d	gdg g       dt        j                  |      z         t        dd;      D ]  }t        j                  ||      }t        j                  |      j8                  dkD  s>t        t        j                  d<|||      t        j                  ||             t        t        j                  d=|||      t        j*                  ||             t        t        j                  d>|d|      d|z         t        t        j                  d?d||      d|z         t        t        j                  d:|d|      dt        j                  |      z         t        t        j                  d9d||      dt        j                  |      z         t        t        j                  d<|dd  |d d |      t        j                  |dd  |d d              t        t        j                  d=|dd  |d d |      t        j*                  |dd  |d d              t        t        j                  d>|dd  d|      d|dd  z         t        t        j                  d?d|dd  |      d|dd  z         t        t        j                  d:|dd  d|      dt        j                  |dd        z         t        t        j                  d9d|dd  |      dt        j                  |dd        z          t        j                  d8t:              }t        j                  d||d7      }t        |t        j                  |             t        |d@      r)t        |j                  t        j                  |             t        j                  |d	gg |d7      }t        |t        j                  |             t        |d@      r)t        |j                  t        j                  |             t        j                  d      dz   }t        j                  d      j                  dd      dz   }t        j                  d      j                  dd      dAz   }t        t        j                  dB|||      dC       t        j<                  dD      }t        j<                  dE      }t?        t        j                  dF||dG      t        j                  dF||dH             t?        t        j                  dF||dG      dIgdz         t        j4                  dJdKg      }t        j4                  dLg      }t?        t        j                  dM||dH      dN       t?        t        j                  dM||dG      dN       t        j<                  dO      dz  }t        j<                  dP      dz  }dQD ]s  }t?        t        j                  dR|||      t        j                  dR|||             t?        t        j                  dR|||      t        j@                  dOdS             u t        jB                  d|      }t        j<                  d|      }t?        t        j                  dT||      dJg       t?        t        j                  dU|||      dJg       t?        t        j                  dV|||      dJg       y # 1 sw Y   xY w)WNr,      ra   r-   )axisastypei->r   r   r   r   r   z	...i->...z	i...->...r*   z..., ...r      z
...i, ...i   z
i..., i...i,jre   zij,jf8unsafe)r   r%   r#   r   .zji,j   f2zij,jkro      r      zij,jk,kl   <   zijk, jil -> klaxesrq   )r,   r   r   r_   zijk,jil->klu   g      @g        )TTFTTFTTzi,i,i->i?)r%   r#   r   )r%   r#   rn   ,i->i,->   z...,...zi,ii,->i,i->ir%      z	z,mz,zm->   )r_   r   r,   r   zij,ij->jTFg      $@g       @      @g      @zi, ig      4@)r,   r   r   r   r   ...ij,...jk->...ikg      ?zji,i->zi,ij->zij,i->)"r0   r%   rh   r3   sumhasattrr~   r   r1   r4   rt   traceasarraylistmultiplyinnerrv   outerr   filterComplexWarningdot	tensordotkindiinfomaxrg   logical_anditemsizer`   r5   r   fulleye)r6   r%   r7   nr8   r9   np_arraysupr   r.   tgtneg_valpqrry   yr   s                     r:   check_einsum_sumszTestEinsum.check_einsum_sums9  s6    q"A		!5)Aqr"Aq(#HHUO5!f=qA1qc2?C  q"A		#a%u-55aA>Aqr"Aq(#HHUO;FCQG1xmhZ&QSTU  q"A		!A#U+33Aq9Aqq!Aq(#HHUO;FCQG1q(mhZ&QSTU  q"A		#a%u-55aA>Aqq!Aq(#HHUO;FCQG1q(mhZ&QSTU  q"A		!A#U+33Aq9AAq(#HHUO4V<a@1q!fv>B zz1a&)H1h@!D1d8nvFJ  	RYYz1a0"5q"A		!a%u-55a;A		%!)5199!QBA:q!fEQ*,1xj!hZ&QQ*,  q"A		%!)5199!QBA		!5)A<AGRSUVX1xmQ1PVW!Q)	  q"A		!a%!)5199!QBA		!5)A<AG!##qss+--/1q(mQHPVW!##qss+--/  q"A		!5)!+A		!5)!+A5!Q@!Q)1qc1qcFC!Q)   CJJr(() 1b\IIac/771=IIau-RYYw1vFVVAq\+RYYq1a&!aS6JVVAq\+ IIau-		&!QA $hIQVVAHHTN$%HHTN44:F5MC #		!aVQ $hIQVVAHHTN$%HHTN44:F5MC# "* 1b\IIac/771=IIau-RYYvqssACC&IVVACC-/RYYqssQFACC!vNVVACC-/ IIau-		&!##qss $hIQVVACCJJt$4$%CCJJt$466<fUmE #		!##1vqssQCQ $hIQVVACCJJt$4$%CCJJt$466<fUmE# ", 1b\q5ETM		!A#U3;;AqAA		!A#U3;;AqAA 7Aq6!J!#1/ 1q!fa!Q&!Q!#1/ " 1b\IIac/771=IIac/771=IIb.66q!<		'1aQdH#)+QVVAHHTN$%HHTN44:F5MC #		!aVQAA $hIQVVAHHTN$%HHTN44:F5MC "$ 		"E*221a8A		"E*221a8A		"E*221a8A}RYYz1aVLUU1X\\!_.RYYq1a&!aVQA0689:qaJ 		"E*221a8AIIj!Qq (VE((4.$$QXXd^4C''!((4.)007CC AcFIIa!QQFA1v1 (VE((4.$$QXXd^4C''!((4.)007CC  xx"((4.0IIb.66q!Q?IIb.66q!Q?RYY'7A>\\!Qq!fq!f5EFHRYYq)Q	Aq6J\\!Qq!fq!f5EFH IIb.66q!<		-A1 $hIQQXXd^QXXd^$%q6Aq6"2!44:F5MC#		!Y9q!f! $hIQQXXd^QXXd^$%q6Aq6"2!44:F5MCe !l 

c)"rxx/B/BQ/FHHa1R"Q?uMHHa3Ga1bAOHHGHRYYz1a6C^^BNN1616$BAFK	M 	RYYq1#q1#q1#s2^^BNN1616$BAFK	M IIau%RYYvq!,aq	k:RYYq"a!b11RVVAY;?RYYvq!,aq	k:RYYq1#q"b11RVVAY;? q"A		!5)Axx''!+RYYy!QH[[A.0RYYuaVDbffQPQlSRYYw1vF!LRYYw1vF!LRYYvq!fEqPQ{SRYYvq!fEqPQ{SRYYy!AB%3B&Q[[12#279RYYuaeQsVfMVVAabE1Sb624RYYw!"q6JAaPQPReGTRYYw1QR56JAaPQPReGTRYYvqua&Irvvae}_.RYYvq!AB%&Irvvae}_.' . IIav&IIeQeX>Qq	"1g"((5/2IIa!bx@Qq	"1g"((5/2 IIaL1IIaL  A&*IIaL  A&*RYY{Aq!4c: GGFOGGEN299ZAE99ZAF	H299ZAE519	&
 HHb"XHHbTN299VQEBCH299VQDA3G GGFOaGGFOa%Hryy)=q!2: <!yy)=q!2: <= ryy)=q!2: <!wwvt46 & FF1E"GGAU#299Xq!hG4	!299Xq!hG4	!299Xq!hG4	!m ! s   ,Q	Am6ZAmmAm#c                     t         j                  dk(  rt        j                         dk(  st        rt	        j
                  d       | j                  d       y )Ndarwinx86_64FFails on macOS x86-64 and when using clang-cl with Meson, see gh-23838i1sysplatformmachineUSING_CLANG_CLpytestxfailr   r6   s    r:   test_einsum_sums_int8z TestEinsum.test_einsum_sums_int8k  @    )h.>.>.@H.LLL 4 5t$rC   c                     t         j                  dk(  rt        j                         dk(  st        rt	        j
                  d       | j                  d       y )Nr   r   r   u1r   r   s    r:   test_einsum_sums_uint8z!TestEinsum.test_einsum_sums_uint8u  r   rC   c                 &    | j                  d       y )Ni2r   r   s    r:   test_einsum_sums_int16z!TestEinsum.test_einsum_sums_int16      t$rC   c                 &    | j                  d       y )Nu2r   r   s    r:   test_einsum_sums_uint16z"TestEinsum.test_einsum_sums_uint16  r   rC   c                 J    | j                  d       | j                  dd       y )Ni4Tr   r   s    r:   test_einsum_sums_int32z!TestEinsum.test_einsum_sums_int32       t$tT*rC   c                 J    | j                  d       | j                  dd       y )Nu4Tr   r   s    r:   test_einsum_sums_uint32z"TestEinsum.test_einsum_sums_uint32  r   rC   c                 &    | j                  d       y )Ni8r   r   s    r:   test_einsum_sums_int64z!TestEinsum.test_einsum_sums_int64  r   rC   c                 &    | j                  d       y )Nu8r   r   s    r:   test_einsum_sums_uint64z"TestEinsum.test_einsum_sums_uint64  r   rC   c                 &    | j                  d       y )Nr   r   r   s    r:   test_einsum_sums_float16z#TestEinsum.test_einsum_sums_float16  r   rC   c                 &    | j                  d       y )Nf4r   r   s    r:   test_einsum_sums_float32z#TestEinsum.test_einsum_sums_float32  r   rC   c                 J    | j                  d       | j                  dd       y )Nr   Tr   r   s    r:   test_einsum_sums_float64z#TestEinsum.test_einsum_sums_float64  r   rC   c                 B    | j                  t        j                         y rH   )r   r0   
longdoubler   s    r:   test_einsum_sums_longdoublez&TestEinsum.test_einsum_sums_longdouble  s    r}}-rC   c                 J    | j                  d       | j                  dd       y )Nc8Tr   r   s    r:   test_einsum_sums_cfloat64z$TestEinsum.test_einsum_sums_cfloat64  r   rC   c                 &    | j                  d       y )Nc16r   r   s    r:   test_einsum_sums_cfloat128z%TestEinsum.test_einsum_sums_cfloat128  s    u%rC   c                 B    | j                  t        j                         y rH   )r   r0   clongdoubler   s    r:   test_einsum_sums_clongdoublez'TestEinsum.test_einsum_sums_clongdouble  s    r~~.rC   c                 J    | j                  d       | j                  dd       y )Nr`   Tr   r   s    r:   test_einsum_sums_objectz"TestEinsum.test_einsum_sums_object  s     x(x.rC   c           	      R   t        j                  d      }t        j                  d      }t        t        j                  d||      dgdggg       t        t        j                  d||d      dgdggg       t        t        j                  d||      dgdggg       t        t        j                  dg dg d	      d
       t        t        j                  dg dg d	d      d
       t        j                  dt         j                        }t        j                  dt         j                        }t        t        j                  d|||      t        j                  d||             t        t        j                  d|||d      t        j                  d||d             t        j
                  dd      }t        j
                  dd      j                  dd      }t        j
                  dd      j                  dd      }t        t        j                  d|||      ddgddgddgddggddgddgddgddggg       t        t        j                  d|||d      ddgddgddgddggddgddgddgddggg       t        t        j                  ddgdgd        dgg       y )!Nr   )r   r   r,   zij...,j...->i...r   Tr   z	...i,...i)r,   r   r   rp   r   greedy)r   r   r   r   r   )r   r   r   zijklm,ijn,ijn->zijklm,ijn->r,   r   r   rn   r   zx,yx,zx->xzy   r      r          ro   0   @   r   r   )r0   r5   r   r1   int64r3   r4   )r6   r8   r9   r   s       r:   test_einsum_misczTestEinsum.test_einsum_misc  sa    GGFOGGIRYY11a8QC!:,GRYY11a$GA3QRPS*V 	RYY11a8QC!:,GRYY{IyA2FRYY{Iy(0235	7 GG$bhh/GGK*RYY0!Q:YY}a3	5RYY0!QDIYY}aTB	D
 IIaOIIaO##Aq)IIaO##Aq)RYY~q!Q7AwQ!R1b':"gBx"bB8<>	? 	RYY~q!QFAwQ!R1b':"gBx"bB8<>	? 	RYYuqcA3D9QC5ArC   c                     G d d      }t        j                   |       g      }t        j                  dt        j                  d      j                  z  dt
              }t        j                  t              5  t        j                  ddg|       d d d        t        j                  t              5  t        j                  d|dg       d d d        t        j                  d||      dk(  sJ y # 1 sw Y   `xY w# 1 sw Y   2xY w)	Nc                       e Zd Zd Zy))TestEinsum.test_object_loop.<locals>.Multc                      y)N*   rB   rW   s     r:   r[   z1TestEinsum.test_object_loop.<locals>.Mult.__mul__  s    rC   N)r?   r@   rA   r[   rB   rC   r:   Multr    s    rC   r      r   r,   )bufferrr   r%   r   r  )
r0   rg   ndarrayintpr   r`   r   raisesr2   r1   )r6   r  objMultobjNULLs       r:   test_object_loopzTestEinsum.test_object_loop  s    	 	 ((DF8$**ebggaj.A.A&ARXY]]9%IIeaS'* &]]9%IIeWqc* &yy1R777	 &%%%s   ;C35C?3C<?Dc                 r   t        j                  d      t        j                  d      t        j                  ddgddgddgd       t        j                  ddgddgddgd       t        j                  dd	gd	dgddgd       t        t        fd
       t        t        fd       y )Nrk   r   r   r   r   r   Fr   rb   3   c                  F    t        j                   ddgddgddgd      S )Nr   4   r   Fr   r0   r1   r8   r9   s   r:   <lambda>z1TestEinsum.test_subscript_range.<locals>.<lambda>  s&    "))A2wB7QPQF]b*crC   c                  F    t        j                   ddgddgddgd      S )Nr-   r   r   Fr   r  r  s   r:   r  z1TestEinsum.test_subscript_range.<locals>.<lambda>  s&    "))AAwAq6BPQ7]b*crC   )r0   r5   r1   r   r/   r6   r8   r9   s    @@r:   test_subscript_rangezTestEinsum.test_subscript_range  s     GGFOGGFO
		!aWa"a1a&5A
		!aWa"a1a&5A
		!aWa"a1a&5Aj"cdj"cdrC   c           	      |   t        j                  d      j                  ddd      }t        j                  d      }t        j                  d||d      }dD ]k  }t	        t        j                  d	|||      |       t	        t        j                  d
|||      |       t	        t        j                  d|||      |       m t        j                  d      j                  d      }t        j                  d      j                  d      }t        j                  d||d      }dD ]  }t	        t        j                  d|||      |       t	        t        j                  d|||      |       t	        t        j                  d|||      |       t	        t        j                  d|||      |        g d}t        j                  t        j
                  |            j                  |      }t        j                  |d         }t        j                  d||d      }dD ]k  }t	        t        j                  d|||      |       t	        t        j                  d|||      |       t	        t        j                  d|||      |       m d\  }}	}
t        j                  ||	z  |
z        j                  ddd||	|
      }t        j                  ||	z  |
z  dz        j                  ||	|
d      }t        j                  d||d      }dD ]%  }t	        t        j                  d|||      |       ' y )Nro   r   r   r   z
ijk,j->ijkFr   r   zij...,j...->ij...zij...,...j->ij...zij...,j->ij...r   r   r   r   )r   r   z	ik,kj->ijzik...,k...->i...zik...,...kj->i...jz...k,kjzik,k...->i...)r   r   r   r   zijkl,k->ijlzijkl,kz...kl,kz
...kl,k...)   r  x   r,   z...lmn,...lmno->...oz...lmn,lmno->...o)r0   r3   r4   r1   r   prod)r6   ABrefoptdimsr8   vJKMs              r:   test_einsum_broadcastz TestEinsum.test_einsum_broadcast  s    IIi ((Aq1IIaLiiaU; C#61sKSQ#61sKSQ#3QCH#N !
 IIbM!!&)IIaL  (iiQE: C#5q!cJCP#7ALcR9aSA3G?Aq3GM	 ! IIbggdm$,,T2IId1giiq!e< C8QC@#F9aSA3G<ADcJ !
  1aIIa!eai ((Aq!Q:IIa!eai!m$,,Q1a8ii.1uE C#61,/1257 !rC   c                    t        j                  d      j                  dd      j                  t         j                        }t        j                  d      j                  ddd      j                  t         j
                        }t        j                  d||      }t        j                  ||d      }t        ||       t        j                  d	      j                  dd      j                  t         j                        }t        j                  d
      j                  dddd      j                  t         j                        }t        j                  d||      }t        j                  ||d      }t        ||       y )Nr   r   r   i@  i
  zcl, cpx->lpx)r   r   r   rn   i   r   zcl, cpxy->lpxy)
r0   r3   r4   r~   float32int16r1   r   r   float64)r6   r  r  estps        r:   test_einsum_fixedstridebugz%TestEinsum.test_einsum_fixedstridebug  s   " IIe$$Q*11"**=IIl#++Aq$7>>rxxHYY~A.\\!aw/R" IIe$$Q*11"**=IIo&..q!R<CCBJJOYY'!Q/\\!Qf-RrC   c                    t         j                  j                  ddd      }t        j                  d      }t        j                  d||       t        j
                  d      }||d d d f   |d d d f   ||f   }t        ||       y )Nr   r,   )r   r   r   r   r   zaabb->abr   r   )r0   randomnormalzerosr1   r3   r   )r6   ry   y1idxy2s        r:   test_einsum_fixed_collapsingbugz*TestEinsum.test_einsum_fixed_collapsingbug6  st     IIQ<0XXf
		*aR(iils1d7|SD\334RrC   c                     t         j                  j                  d      }t        j                  d|      }|j	                  dd      j	                         }t        ||       y )N)r_   r_   r_   r_   zijij->r   r   )axis1axis2)r0   r0  random_sampler1   r   r
   )r6   tensorry   r   s       r:   "test_einsum_failed_on_p9_and_s390xz-TestEinsum.test_einsum_failed_on_p9_and_s390x@  sN     (()9:IIh'LLqL*0021rC   c                    t        j                  d      }t        j                  d      d d d   }t        j                  d      }d|d d d<   t        j                  d||||       t        |j                  |       t        j                  d      d d d   }t        j                  d||||       t        |j                  |       t        j                  d      d	   }t        j                  d      }d|d	<   t        j                  d
t         j
                        }t        j                  d|||       t        |j                  |       y )Nr   r_   r   r   zmi,mi,mi->mr   zim,im,im->m)r   r   r   ).r   )r   r   	ij,jk->ik)r0   r5   r1   r   rs   r)  )r6   ry   r   correct_bases       r:   (test_einsum_all_contig_non_contig_outputz3TestEinsum.test_einsum_all_contig_non_contig_outputH  s     GGFOggbk#A#wwr{SqS
		-Aqc2388\2ggbk#A#
		-Aqc2388\2 ggi (wwy) VGGFBJJ'
		+q!-388\2rC   r%   AllFloat
AllIntegerc                 X   t        j                  |      }t        j                  d      dz   j                  |      }t        j                  d|      }t        j
                  d|      }||j                         k(  sJ t        j
                  d||      }t        |||z         t        j
                  d|j                  d      d d d   |j                  d      d d d         }t        |||z         t        j
                  d||      ||z  j                         k(  sJ t        j                  d|      }t        j
                  d||j                  d      |	      }t        |||j                  d      z         t        j
                  d
||      }t        |||j                  d      z         t        j
                  d||      }|t        j
                  d||z        k(  sJ t        j
                  d||      }|t        j
                  d||z        k(  sJ t        j                  g d|      }t        j
                  d|||      }t        |||z  |z  j                                t        j
                  d||||      }t        |||z  |z  |z  j                                y )Nr         ?r   ra   r   zi,i->izi,i->r   r   r   r   r   )rD  rD  g      ?g      @r   zi,i,i->z	i,i,i,i->)r0   r%   r3   r~   rg   r1   r   r   repeatr5   type)r6   r%   arrscalarresr   s         r:   test_different_pathszTestEinsum.test_different_paths_  s.   
  yy|c!))%0!5) iis#cggiii#s+3c	*ii#**Q-!"4cjjmCaC6HI3c	*yy#s+c	/@@@@ggau%iiejjm=3ejjm 34ii-3ejjm 34ii,biiv|4444iiV,biiv|4444hh0>ii	3S13sS 5 5 78iiS#sC83sS3!6 ; ; =>rC   c                 B   t        j                  dt         j                        d d }d|d<   t        j                  dt         j                        d d }t        j                  dt         j                        }t        j                  d|||      }t        ||       y )	N)r   r,   r,   ra   r   T.)r   r,   r,   r   r   )r0   r2  bool_r5   r1   r   )r6   r8   r   r   rI  s        r:   test_small_boolean_arraysz$TestEinsum.test_small_boolean_arrays  sv     HHZrxx0!4#hhz22A6ggirxx0ii,a<S#rC   c                     t        j                  d      j                  dd      }t        j                  d|||      }||u sJ y )Nrn   r   r   r   )r0   r3   r4   r1   )r6   r8   rI  s      r:   test_out_is_reszTestEinsum.test_out_is_res  s<    IIaL  A&ii,a:axxrC   Nc                    |o|g}|j                  d      d   j                  d      }|D ]C  }|D cg c]  }t        |    }}|j                  t        j                  j
                  |        E n|g|z   }t        j                  |ddi}t        j                  |ddi}	t        |	|       t        j                  |ddi}	t        |	|       y c c}w )N->r   r'   r   Fr   optimal)splitglobal_size_dictappendr0   r0  randr1   r   )
r6   
subscriptsoperandsargstermstermry   r"  nooptr!  s
             r:   optimize_comparezTestEinsum.optimize_compare  s     <D$$T*1-33C8E59:T(+T:BIINND12  <(*D		40%0ii11C'ii2	2C' ;s   Cc                 H    | j                  d       | j                  d       y )Nza,ab,abc->abcz
a,b,ab->abr]  r   s    r:   test_hadamard_like_productsz&TestEinsum.test_hadamard_like_products  s    o.l+rC   c                 j    | j                  d       | j                  d       | j                  d       y )Nzea,fb,gc,hd,abcd->efghzea,fb,abcd,gc,hd->efghzabcd,ea,fb,gc,hd->efghr_  r   s    r:   test_index_transformationsz%TestEinsum.test_index_transformations  s/    676767rC   c                    | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       y )N$acdf,jbje,gihb,hfac,gfac,gifabc,hfacz cd,bdhe,aidb,hgca,gc,hgibcd,hgaczabhe,hidj,jgba,hiab,gabz bde,cdh,agdb,hica,ibd,hgicd,hiaczchd,bde,agbc,hiad,hgc,hgi,hiadchd,bde,agbc,hiad,bdi,cgh,agdbzbdhe,acad,hiab,agac,hibdr_  r   s    r:   test_complexzTestEinsum.test_complex  sz    DEDE@A78@A>?>?89rC   c                     | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       y )Nz	ab,ab,c->z
ab,ab,c->czab,ab,cd,cd->zab,ab,cd,cd->aczab,ab,cd,cd->cdzab,ab,cd,cd,ef,ef->r_  r   s    r:   test_collapsezTestEinsum.test_collapse  sY    k*l+o./0/034rC   c                     | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       y )Nzab,cd,ef->abcdefzab,cd,ef->acdfzab,cd,de->abcdezab,cd,de->bezab,bcd,cd->abcdzab,bcd,cd->abdr_  r   s    r:   test_expandzTestEinsum.test_expand  s[    01.//0n-/0./rC   c                    | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d	       | j                  d
       | j                  d       | j                  d       y )Neb,cb,fb->cefdd,fb,be,cdb->cefbca,cdb,dbf,afc->dcc,fce,ea,dbf->abzfdf,cdd,ccd,afe->aezabcd,adzed,fcd,ff,bcf->bezbaa,dcf,af,cde->bezbd,db,eac->acezfff,fae,bef,def->abdzefc,dbc,acf,fd->abezba,ac,da->bcdr_  r   s    r:   test_edge_caseszTestEinsum.test_edge_cases  s    o.12122334i(1223./4534o.rC   c                     | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       y )Nzab,abzab,bazabc,abczabc,baczabc,cbar_  r   s    r:   test_inner_productzTestEinsum.test_inner_product  sH    g&g&i(i(i(rC   c                 z   | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d	       | j                  d
       | j                  d       y )Nzaab,fa,df,ecc->bdezecb,fef,bad,ed->aczbcf,bbb,fbf,fc->zbb,ff,be->ezbcb,bb,fc,fff->zfbb,dfd,fc,fc->zafd,ba,cc,dc->bfzadb,bc,fa,cfc->dzbbd,bda,fc,db->acfzdba,ead,cad->bcezaef,fbc,dca->bder_  r   s    r:   test_random_caseszTestEinsum.test_random_cases  s    232301m,/0/00101230101rC   c                     t        j                  d      j                  ddddd      }t        j                  d|      }t	        |dg       y )Nrn   r,   r   zbbcdc->dr   )r0   r3   r4   r1   r   r  s      r:   test_combined_views_mappingz&TestEinsum.test_combined_views_mapping  s>    IIaL  Aq!Q/IIj!$QrC   c                    t         j                  j                  ddd      }t         j                  j                  dd      }t         j                  j                  dd      }t         j                  j                  d      }| j                  d|||g       | j                  d||||g       t         j                  j                  dddd      }t         j                  j                  d	d	      }| j                  d
|||g       | j                  d||||g       t        j                  d      j                  ddd      }| j                  d||g       y )Nr,   r   r   r   r_   z	ijk,kl,jl)rX  zijk,kl,jl,i->ir   z
abjk,kl,jlzabjk,kl,jl,ab->abr   r   r   zobk,ijk->ioj)r0   r0  rV  r]  r3   r4   )r6   r8   r9   r   r.   efgs           r:   test_broadcasting_dot_casesz&TestEinsum.test_broadcasting_dot_cases  s    IINN1a#IINN1a IINN1a IINN2kQ1I>.!Q1FIINN1aA&IINN1a laAY?1Q1aLI IIbM!!!Q*n1v>rC   c                    t        j                  dd      }t        j                  dd      }dD ]e  }t        j                  d||d|      }t        |j                  j
                         t        j                  d||d	|      }t        |j                  j
                         t        j                  d||d
|      }t        |j                  j                         t        j                  d||d|      }t        |j                  j                  du        t        |j                  j
                  du        t        j                  d|||      }t        |j                  j                  du        t        |j                  j
                  du        h t        j                  dd      }dD ];  }t        j                  d||d|      }t        |j                  j                         = t        j                  dd      }dD ];  }t        j                  d||d|      }t        |j                  j                         = y )N)r   r   r   F)r!   r  r   z...ft,mf->...mtr8   r    ry  r   kFr   C)r0   r5   r1   r   ru   f_contiguousc_contiguous)r6   r8   r9   r!  rR   r   r.   s          r:   test_output_orderzTestEinsum.test_output_order  s   
 GGIS)GGF#& C))-q!3MCCII**+))-q!3MCCII**+))-q!3MCCII**+))-q!3MCCII**e34CII**e34))-q!cBCCII**e34CII**e34! !$ GGF#& C))-q!3MCCII**+ ! GGIS) C))-q!3MCCII**+ !rC   )FrH   )4r?   r@   rA   r;   ri   rz   r0   _no_nep50_warningr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r'  r.  r6  r<  r@  r   markparametrize	typecodesrJ  rM  rO  r]  r`  rb  rf  rh  rj  rp  rr  rt  rv  r{  r  rB   rC   r:   r   r      s<   S6j==~I.V Ro! o!b	%%%%++%%%%+.+&//$BL8	e(7T<3. [[W\\*%\(BBD*?D*?X
($,
8	:50/)2?(",rC   r   c                   F    e Zd ZefdZd Zd Zd Zd Zd Z	d Z
d Zd	 Zy
)TestEinsumPathc                     |g}|j                  d      d   j                  d      }|D ]?  }|D cg c]  }||   	 }}|j                  t        j                  j                  |        A |S c c}w )NrQ  r   r'   )rS  rU  r0   r0  rV  )r6   string	size_dictrX  rZ  r[  ry   r"  s           r:   build_operandszTestEinsumPath.build_operands:  sp     8T"1%++C0D*./$QIaL$D/OOBIINND12   0s   A-c                     t        |      t        |      k(  }t        |       t        t        |      dz
        D ]/  }|t        ||dz      t              z  }|||dz      ||dz      k(  z  }1 t        |       y )Nr,   )lenr   rh   
isinstancetuple)r6   comp	benchmarkretposs        r:   assert_path_equalz TestEinsumPath.assert_path_equalE  st    4yC	N*TQ'C:d37mU33CDqMYsQw%778C ( 	rC   c                    | j                  d      }t        j                  |ddi\  }}| j                  |ddg       t        j                  |ddi\  }}| j                  |ddg       | j                  d      }t        j                  |ddi\  }}| j                  |ddg       t        j                  |ddi\  }}| j                  |ddg       y )	Nz
a,b,c->abcr   )r   r   einsum_pathrq   )rR  r   zacdf,jbje,gihb,hfacr   r,   r   r   r  r0   r  r  )r6   
outer_testpathpath_str	long_tests        r:   test_memory_contraintsz%TestEinsumPath.test_memory_contraintsN  s     ((6
LmLhtmY%?@MnMhtmY%?@''(=>	K]Khtm\%BCL^Lhtm\%BCrC   c                    | j                  d      }t        j                  |ddi\  }}| j                  |g d       t        j                  |ddi\  }}| j                  |g d       | j                  d      }t        j                  |ddi\  }}| j                  |g d       t        j                  |ddi\  }}| j                  |g d       y )	Nrd  r   r   )r  )r   r   r  )r   r   rk   r   r   r   r,   rR  re  )r  r  r   r   r  r,   r   r   r  )r  )r   r   )r,   r   r  r  r   r  r  )r6   
long_test1r  r  
long_test2s        r:   test_long_pathszTestEinsumPath.test_long_paths`  s     (()OP
GhGht &V 	W HiHht &V 	W (()IJ
GhGht &V 	W HiHht &V 	WrC   c                 ,   | j                  d      }t        j                  |ddi\  }}| j                  |g d       t        j                  |ddi\  }}| j                  |g d       | j                  d      }t        j                  |ddi\  }}| j                  |g d       t        j                  |ddi\  }}| j                  |g d       | j                  d      }t        j                  |ddi\  }}| j                  |g d	       t        j                  |ddi\  }}| j                  |g d	       | j                  d
      }t        j                  |ddi\  }}| j                  |g d       t        j                  |ddi\  }}| j                  |g d	       | j                  dddddd      }t        j                  |ddi\  }}| j                  |g d       t        j                  |ddi\  }}| j                  |g d       y )Nrl  r   r   )r  r  r  rR  rm  )r  r  r  r  rn  )r  r   r  r  ro  r  r   r  r  za,ac,ab,ad,cd,bd,bc->r   )r8   r9   r   r.   )r  )r  r  )r   r,   r   r   r   r   r  )r6   
edge_test1r  r  
edge_test2
edge_test3
edge_test4s          r:   test_edge_pathszTestEinsumPath.test_edge_pathsw  s    ((9
GhGht%DEHiHht%DE (()<=
GhGht%LMHiHht%LM (()<=
GhGht%LMHiHht%LM (()=>
GhGht%LMHiHht%LM (()@9;"2TV3W ) Y
GhGht%PQHiHht%PQrC   c                    | j                  d      }t        j                  |ddi\  }}| j                  |ddg       t        j                  |ddi\  }}| j                  |g d       g d}t        j                  |d|i\  }}| j                  ||       t        j                  |ddi}t        j                  |d|i}t        ||       y )	Nro  r   Fr  r  Tr  )r  r  r  r  r  r0   r  r  r1   r   )r6   	path_testr  r  exp_pathr\  r!  s          r:   test_path_type_inputz#TestEinsumPath.test_path_type_input  s    ''(<=	CUChtm\%BCBTBht%LM:FXFhtX. 		95u5ii6X6E3'rC   c                     | j                  d      }g d}t        j                  |d|i\  }}| j                  ||       t        j                  |ddi}t        j                  |d|i}t        ||       y )Nzcab,cdd->abr  )r,   r  r   Fr  )r6   r  r  r  r  r\  r!  s          r:   #test_path_type_input_internal_tracez2TestEinsumPath.test_path_type_input_internal_trace  sp    ''6	0FXFhtX. 		95u5ii6X6E3'rC   c                 h   | j                  d      }g d}t        t        t        j                  g|d|i t        t        t        j
                  g|d|i | j                  d      }g d}t        t        t        j                  g|d|i t        t        t        j
                  g|d|i y )Nzab,bc,cd,de->ae)r  rk   r  r   za,a,a->ar  )r  r   RuntimeErrorr0   r1   r  )r6   r  r  s      r:   test_path_type_input_invalidz+TestEinsumPath.test_path_type_input_invalid  s    ''(9:	2lBIIM	MHM"..	I+4	I?G	I ''
3	0lBIIM	MHM"..	I+4	I?G	IrC   c                     t        j                  dgg      }t        j                  ddgd      D ]%  }t        j                   dj
                  | |       ' y )Nr,   r    r   )rE  z{}...a{}->{}...a{})r0   rg   	itertoolsproductr1   format)r6   rG  sps      r:   test_spaceszTestEinsumPath.test_spaces  sK    hhuo##RIa8BII1*1126< 9rC   N)r?   r@   rA   rT  r  r  r  r  r  r  r  r  r  rB   rC   r:   r  r  9  s7    /? 	D$W.*RX(&(I=rC   r  c                  l   t        j                  dt              j                  dd      } t        j                  dt              j                  dd      }t        j                  | |      }t        j
                  d| |      }t        ||       t        j
                  d| ||      }t        ||       y )Nrn   ra   r   r>  r   )r0   r3   intr4   r   r1   r   )r8   r9   r.   r   s       r:   test_overlapr    s    
		!3''1-A
		!3''1-A
q!A
		+q!$AA
		+q!+AArC   )r  r   r   r   numpyr0   numpy.testingr   r   r   r   r   r   r	   r
   show_config	COMPILERSr   r2   charsrg   sizesdictziprT  r   r  r  rB   rC   r:   <module>r     s     
     
G,[9Is^F+z9N
 	23E5)* ^, ^,@!\= \=|	O&  Ns   !B BB