
    sg	                     J    d dl Z ddlmZmZ ddlmZmZmZmZ  G d de      Z	y)    N   )_TensorTensor)_dims_enable_layersllistltuplec                   t     e Zd Zd Zed        Zed        Zed        Zed        Ze fd       Z	d Z
 xZS )DelayedMulTensorc                     ||c| _         | _        d | _        d | _        |j                  xs |j                  | _        d | _        d | _        y N)_lhs_rhs_data_levels_data_has_device_batchtensor_data_tensor_data)selflhsrhss      S/var/www/html/venv/lib/python3.12/site-packages/functorch/dim/delayed_mul_tensor.py__init__zDelayedMulTensor.__init__   sF    "C	49
 ??=coo!%     c                     | j                   `t        | j                  j                        }| j                  j                  D ]  }||vs|j                  |        t        |      | _         | j                   S r   )r   r   r   _levelsr   appendr	   )r   levelsls      r   r   zDelayedMulTensor._levels   sh    $499,,-FYY&& %F?MM!$% !'vD   r   c                 .   | j                   gt        | j                        5  t        d       | j                  j
                  | j                  j
                  z  | _         d d d        | j                   S | j                   S # 1 sw Y   | j                   S xY w)Nzbt multiply fallback)r   r   r   printr   _batchtensorr   r   s    r   r"   zDelayedMulTensor._batchtensor   s~    !!)- Y,-)-)?)?$))BXBX)X&Y %%%t%%%Y %%%s   >B  Bc                     | j                   9t        j                  | j                  | j                        j
                  | _         | j                   S r   )r   r   from_batchedr"   r   _tensorr#   s    r   r&   zDelayedMulTensor._tensor'   sH    $ & 3 3!!4#3#3!g     r   c                 .    | j                   j                  S r   )r"   ndimr#   s    r   r(   zDelayedMulTensor.ndim/   s      %%%r   c                 *    t        t        |         S r   )r	   superdims)r   	__class__s    r   r+   zDelayedMulTensor.dims3   s    egl##r   c                 \   t        |ddd      t        d      | j                  fd| j                  j                  | j                  j                  }}| j
                  j                  | j
                  j                  }}t        fd| j                  D              }| j                  D cg c]	  }|vs| }}dj                  g fd|D        dfd	|D        d
fd|D              }	t        j                  |	||f      }
t        j                  |
|d      S c c}w )Nr   Fac                 >    t        j                  |       z         S r   )chrindex)d
all_levelsns    r   to_charz%DelayedMulTensor.sum.<locals>.to_char<   s    q:++A..//r   c              3   ,   K   | ]  }|vs|  y wr    ).0r2   r+   s     r   	<genexpr>z'DelayedMulTensor.sum.<locals>.<genexpr>A   s     ?q$?s   	 c              3   .   K   | ]  } |        y wr   r7   r8   r2   r5   s     r   r9   z'DelayedMulTensor.sum.<locals>.<genexpr>E        0'!*0   ,c              3   .   K   | ]  } |        y wr   r7   r<   s     r   r9   z'DelayedMulTensor.sum.<locals>.<genexpr>G   r=   r>   z->c              3   .   K   | ]  } |        y wr   r7   r<   s     r   r9   z'DelayedMulTensor.sum.<locals>.<genexpr>I   s     1'!*1r>   T)r   ordr   r   r&   r   tupler+   jointorcheinsumr   from_positional)r   dimplhs	levelslhsprhs	levelsrhsnew_dimsr   
new_levelsfmtresult_datar3   r+   r4   r5   s              @@@@r   sumzDelayedMulTensor.sum7   s   S!UE*H\\
	0 ))++TYY->->i))++TYY->->i?DII??!%?A$a?
?gg0i0 1i0 	
 2j1
 ll3t5%%k:tDD @s   4	D)>D))__name__
__module____qualname__r   propertyr   r"   r&   r(   r+   rQ   __classcell__)r,   s   @r   r   r      sr    ! ! ! & & ! ! & & $ $Er   r   )
rE   r:   r   r   	referencer   r   r   r	   r   r7   r   r   <module>rX      s#      ; ;AEw AEr   