o
    Ei                     @   sH   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mZ dd Z	dS )   )*    N)op)partialc                     sH   t dt dddd lm  dd l} G  fdddt}| S )Njaxz	jax.numpyjnpr   c                       s  e Zd ZdZ jg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
%j(Z(e
%j)Z)e
%j*Z*e
%j+Z+e
%j,Z,e
%j-Z-e
%j.Z.e
%j/Z/e
%j0j1j2Z2e
j3Z3e
j4Z4e
j5Z5e
j6j7Z7e
j8Z8eejdd Z9eejdd Z:eejdd	 Z;eejd
d Z<e
=j>Z>e
=j?Z?e
=j@jAZAe
=j@jBZBe
=j6jCZCe
DjDZDG fdddZEdS )zcreate.<locals>.jaxr   c                    s   t jj j| gt j|dS N)argsoutput)einxtracerapplyasarrayTensor)tensorshape)tjnp N/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/einx/backend/_jax.py	to_tensor   s
   
zcreate.<locals>.jax.to_tensorc                 S   s   | | S )Nr   )r   coordinatesr   r   r   get_atH   s   zcreate.<locals>.jax.get_atc                 S   &   t jj| j| j|gt j| jdS r   )r   r   r   atsetr   r   r   r   updatesr   r   r   set_atM      zcreate.<locals>.jax.set_atc                 S   r   r   r   r   r   r   addr   r   r   r   r   r   add_atT   r   zcreate.<locals>.jax.add_atc                 S   s(   t jj| j| j| gt j| jdS r   r   r   r   r   r   subtract_at[   s   zcreate.<locals>.jax.subtract_atc                       s   e Zd Zej fddZdS )zcreate.<locals>.jax.randomc                    s$   t jj jj| ||gt j|dS r   )r   r   r   random	bernoullir   )rngpr   tjaxr   r   r$   l   s
   
z$create.<locals>.jax.random.bernoulliN)__name__
__module____qualname__r   tracer$   r   r'   r   r   r#   k   s    r#   N)Fr)   r*   r+   namendarraytensor_typesstaticmethodr   r,   r   r   reshape	transposebroadcast_toeinsumarangestackconcatenateassociative_binary_to_naryelementwiser    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scipyspecial	logsumexplogexpsqrtlaxrsqrtsquarer   r   r!   r"   
keep_shapefliprollnnsoftmaxlog_softmaxstop_gradientvmapr#   r   r   r(   r   r   r   r      s    )r   import_	jax.numpynumpyr   Backend)jax_r   r   rf   r   create   s   
frl   )
baseeinx.tracerr   einx.tracer.tensorr   r   types	functoolsr   rl   r   r   r   r   <module>   s    