
    7hI	                     J    S SK r SSKJrJr  SSKJrJrJrJr   " S S\5      r	g)    N   )_TensorTensor)_dims_enable_layersllistltuplec                   ~   ^  \ rS rSrS r\S 5       r\S 5       r\S 5       r\S 5       r	\U 4S j5       r
S rS	rU =r$ )
DelayedMulTensor   c                     XsU l         U l        S U l        S U l        UR                  =(       d    UR                  U l        S U l        S U l        g N)_lhs_rhs_data_levels_data_has_device_batchtensor_data_tensor_data)selflhsrhss      Z/var/www/fran/franai/venv/lib/python3.13/site-packages/functorch/dim/delayed_mul_tensor.py__init__DelayedMulTensor.__init__   sD    "	49
 ??=coo!%     c                     U R                   cd  [        U R                  R                  5      nU R                  R                   H  nX!;  d  M
  UR                  U5        M     [        U5      U l         U R                   $ r   )r   r   r   _levelsr   appendr	   )r   levelsls      r   r   DelayedMulTensor._levels   sa    $499,,-FYY&&?MM!$ ' !'vD   r   c                 :   U R                   cg  [        U R                  5         [        S5        U R                  R
                  U R                  R
                  -  U l         S S S 5        U R                   $ U R                   $ ! , (       d  f       U R                   $ = f)Nzbt multiply fallback)r   r   r   printr   _batchtensorr   r   s    r   r%   DelayedMulTensor._batchtensor   sy    !!)-,-)-)?)?$))BXBX)X& . %%%t%%% .- %%%s   >B
Bc                     U R                   c:  [        R                  " U R                  U R                  5      R
                  U l         U R                   $ r   )r   r   from_batchedr%   r   _tensorr&   s    r   r*   DelayedMulTensor._tensor'   sH    $ & 3 3!!4#3#3!g     r   c                 .    U R                   R                  $ r   )r%   ndimr&   s    r   r-   DelayedMulTensor.ndim/   s      %%%r   c                 *   > [        [        TU ]  5      $ r   )r	   superdims)r   	__class__s    r   r1   DelayedMulTensor.dims3   s    egl##r   c                 ,  ^^^ [        USSS5      n[        S5      mU R                  mUU4S jmU R                  R                  U R                  R                  pCU R
                  R                  U R
                  R                  peU R                   Vs/ s H  owU;  d  M
  UPM     nnSR                  / U4S jU 5       QSPU4S jU 5       QS	PU4S
 jU 5       Q5      n	[        R                  " XU45      n
[        R                  " XS5      $ s  snf )Nr   Fac                 >   > [        TTR                  U 5      -   5      $ r   )chrindex)d
all_levelsns    r   to_char%DelayedMulTensor.sum.<locals>.to_char<   s    q:++A..//r    c              3   4   >#    U  H  nT" U5      v   M     g 7fr    .0r9   r<   s     r   	<genexpr>'DelayedMulTensor.sum.<locals>.<genexpr>D        0i'!**i   ,c              3   4   >#    U  H  nT" U5      v   M     g 7fr   r@   rA   s     r   rC   rD   F   rE   rF   z->c              3   4   >#    U  H  nT" U5      v   M     g 7fr   r@   rA   s     r   rC   rD   H   s     1j'!**jrF   T)r   ordr   r   r*   r   jointorcheinsumr   from_positional)r   dimr1   plhs	levelslhsprhs	levelsrhsr!   
new_levelsfmtresult_datar:   r;   r<   s              @@@r   sumDelayedMulTensor.sum7   s    S!UE*H\\
	0 ))++TYY->->i))++TYY->->i!%?A$a
?gg0i0 1i0 	
 2j1
 ll3t5%%ktDD @s   	D!D)r   r   r   r   r   r   r   )__name__
__module____qualname____firstlineno__r   propertyr   r%   r*   r-   r1   rW   __static_attributes____classcell__)r2   s   @r   r   r      sx    ! ! ! & & ! ! & & $ $E Er   r   )
rL   r>   r   r   	referencer   r   r   r	   r   r@   r   r   <module>ra      s#      ; ;@Ew @Er   