o
    if                     @   sN   d dl m  mZ d dlm  m  mZ G dd dZG dd dejZdS )    Nc                   @   s   e Zd ZdddZdS )tinygradNc                    sN    d u rt jjd t t jrt  j fdd| _d S t j| _d S )Nr   c                    s   t  j | dS NoriginTensorr   r    a/home/ubuntu/.local/lib/python3.10/site-packages/einx/_src/tracer/signature/classical/tinygrad.py<lambda>       z#tinygrad.__init__.<locals>.<lambda>)tracer	signaturepythonimport_
isinstanceTracercastr   )selfr   r	   r   r
   __init__   s
   ztinygrad.__init__N)__name__
__module____qualname__r   r	   r	   r	   r
   r      s    r   c                       s2   e Zd Zedd Zd fdd	Zdd Z  ZS )	r   c                    s    fddS )Nc                    s   t  j| dS r   )r   _Tensorr   r   r	   r
   r      r   z%Tensor._tracer_type.<locals>.<lambda>r	   r   r	   r   r
   _tracer_type   s   zTensor._tracer_typeNc                    s  t  j|d  | _tj | _t tj	rtjj
j}nt d }tj j| _tj j| _tj j| _tj j| _tjj fdddd| _tjj jddd| _tj j| _tjj jd	d
| _tjj jd	d
| _tjj jd	d
| _tjj jd	d
| _tjj jd	d
| _tjj jd	d
| _tjj jd	d
| _tjj j d	d
| _ tjj| dd	d
| _!tjj| dd	d
| _"tjj| dd	d
| _#tjj| dd	d
| _$tjj| dd	d
| _%tjj| dd	d
| _&tjj j'd	d
| _'tjj j(d	d
| _(tjj j)d	d
| _)tjj j*d	d
| _*tjj+ j,dd| _,tjj+ j-dd| _-tjj+ j.dd| _.tjj+ j/dd| _/tjj+ j0dd| _0tjj+ j1dd| _1tjj+ j2dd| _2tjj+ j3dd| _3tjj+ j4dd| _4tjj+ j5dd| _5tjj+ j6dd| _6tjj+ j7dd| _7tj8d fdd	| _9tj: j;| _;tj: j<| _<tj= j=| _=tj> j>| _>tj j?| _?tj j@| _@tjj jAdd
| _Atj jB| _Btj jC| _Cd S )Nr   getattrc                    s    j | i |S r   )cat)tensorskwargsr   r	   r
   r   $   s    z!Tensor.__init__.<locals>.<lambda>dim)argname_axisF)
cumulativer"      )num_outputs__lt____le____gt____ge____eq____ne__keepdim)argname_keepdimsr   c                    s     | ||S r   )gather)xindicesaxisr   r	   r
   r   I   r      )r   )Dsuperr   r   r   	classicalgetitem__getitem__r   r   r   r   r   globals	set_shapereshape	transposepermuteexpandarangeconcatenater   splitpreserve_shapedetachelementwiseaddsubmuldividivwheremaximumminimumr&   r'   r(   r)   r*   r+   	logaddexpexplognegreducesummeanvarstdprodallanyminmaxargmaxargmin	logsumexptaker.   setitemscatterscatter_reducedoteinsumrollflipsortsoftmaxlog_softmax)r   r   r   r   	__class__r   r
   r      sj   
zTensor.__init__c                 O   s   t jj| ||S r   )r   r   r   call)r   argsr    r	   r	   r
   __call__W   s   zTensor.__call__r   )r   r   r   propertyr   r   rk   __classcell__r	   r	   rg   r
   r      s
    
Br   )einx._src.tracer_srcr   einx._src.tracer.signaturer   r   r   r   r	   r	   r	   r
   <module>   s    