o
    Ei                     @   sX   d dl T ddlmZ ddlmZ ddlZddlZddlZddl	m
Z
 dd Zdd	 ZdS )
   )*    N)op)partialc                     s:   t dd G  fdddt} ttt| d| _|  S )Nnumpynpc                       s  e Zd ZdZejejeee	e
egZeeZeej fddZe jZe jZe jZe jZe jZe jZe jZee jZe jZee jZe jZe j Z e j!Z!ee j"Z"ee j#Z#e j$Z$e j%Z%e j&Z&e j'Z'e j(Z(e j)Z)e j*Z*ee j+Z+ee j,Z,e- j.Z.e- j/Z/e- j0Z0e- j1Z1e- j2Z2e- j3Z3e- j4Z4e- j5Z5e- j6Z6e- j7Z7e j8Z8e j9Z9e j:Z:e j;Z;eejdd Z<eejdd Z=eejdd	 Z>eejd
d Z?e@ jAZAe@ jBZBdS )zcreate.<locals>.numpyr   c                    s   t jj j| gt j|dS )N)argsoutput)einxtracerapplyasarrayTensor)tensorshapetnp P/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/einx/backend/_numpy.py	to_tensor   s
   
zcreate.<locals>.numpy.to_tensorc                 S   s   | | S Nr   )r   coordinatesr   r   r   get_atE   s   zcreate.<locals>.numpy.get_atc                 S   s   |  ||S r   )__setitem__r   r   updatesr   r   r   set_atJ   s   zcreate.<locals>.numpy.set_atc                 S      |  || ||S r   )r   __getitem____iadd__r   r   r   r   add_atO      zcreate.<locals>.numpy.add_atc                 S   r   r   )r   r   __isub__r   r   r   r   subtract_atV   r!   z!create.<locals>.numpy.subtract_atN)C__name__
__module____qualname__namer   ndarraygenericlisttupleintfloatbooltensor_typesstaticmethod
_get_testsr
   tracer   r   reshape	transposebroadcast_toeinsumarangestackconcatenateassociative_binary_to_naryelementwiseaddsubtractmultiplytrue_dividefloor_dividedividelogical_and
logical_orwhereless
less_equalgreatergreater_equalequal	not_equalmaximumminimumreducesummeanvarstdprodcount_nonzeroanyallminmaxlogexpsqrtsquarer   r   r    r#   
keep_shapefliprollr   r   r   r   r      sv    )backend)r   import_Backendr   vmapr   vmap_forloop)r   r   r   r   create	   s   Trd   c                  C   s(   t jdddtjdd d} t | fgS )N        float32c                 S   s   t j| ||dS )N)dtype)r   full)r   valuerg   r   r   r   <lambda>g   s    z_get_tests.<locals>.<lambda>c                 S   s   | S r   r   )xr   r   r   rj   i   s    )rh   r   to_numpy)re   rf   )typesSimpleNamespacer   r   rd   )testr   r   r   r1   e   s   r1   )baseeinx.tracerr   einx.tracer.tensorr   r   r   r
   rm   	functoolsr   rd   r1   r   r   r   r   <module>   s    \