o
    i=                     @   s8   d Z ddlmZ ddgZdadd Zdd Zd	d ZdS )
zHRequired functions for optimized contractions of numpy arrays using jax.    )to_backend_cache_wrapbuild_expressionevaluate_constantsNc                  C   s.   t d u rdd l} t| jdd }| |fa t S )Nr   c                 S   s   | S )N )xr   r   M/mnt/sdb/aimis/docanh/lib/python3.10/site-packages/opt_einsum/backends/jax.pyto_jax   s   z#_get_jax_and_to_jax.<locals>.to_jax)_JAXjaxr   jit)r
   r   r   r   r   _get_jax_and_to_jax
   s   r   c                    s&   t  \}} ||j  fdd}|S )z6Build a jax function based on ``arrays`` and ``expr``.c                     s   dd l }| | S )Nr   )numpyasarray)arraysnpjax_exprr   r   jax_contract   s   z&build_expression.<locals>.jax_contract)r   r   	_contract)_exprr
   r   r   r   r   r      s   
c                    s(   t  \} | fdd| D dddS )zbConvert constant arguments to jax arrays, and perform any possible
    constant contractions.
    c                    s   g | ]} |qS r   r   ).0r   r   r   r   
<listcomp>-   s    z&evaluate_constants.<locals>.<listcomp>r
   T)backendr   )r   )const_arraysr   r
   r   r   r   r   '   s   
)__doc__opt_einsum.sharingr   __all__r	   r   r   r   r   r   r   r   <module>   s    