
    ,Vh=                     2    d Z ddlmZ ddgZdad Zd Zd Zy)	zHRequired functions for optimized contractions of numpy arrays using jax.    )to_backend_cache_wrapbuild_expressionevaluate_constantsNc                  `    t         #dd l} t        | j                  d               }| |fa t         S )Nr   c                     | S )N )xs    G/home/dcms/DCMS/lib/python3.12/site-packages/opt_einsum/backends/jax.pyto_jaxz#_get_jax_and_to_jax.<locals>.to_jax   s	     H    )_JAXjaxr   jit)r   r   s     r
   _get_jax_and_to_jaxr   
   s8    |			 
 
	 F{Kr   c                 b    t               \  }} |j                  |j                        fd}|S )z6Build a jax function based on ``arrays`` and ``expr``.c                  :    dd l }|j                   |             S )Nr   )numpyasarray)arraysnpjax_exprs     r
   jax_contractz&build_expression.<locals>.jax_contract   s    zz(6*++r   )r   r   	_contract)_exprr   r   r   s       @r
   r   r      s.     "FCwwt~~&H,
 r   c                 `    t               \  }} || D cg c]
  } ||       c}dddS c c}w )zbConvert constant arguments to jax arrays, and perform any possible
    constant contractions.
    r   T)backendr   )r   )const_arraysr   r   r   r	   s        r
   r   r   '   s2     &'KC\2&)2EVZ[[2s   +)__doc__opt_einsum.sharingr   __all__r   r   r   r   r   r   r
   <module>r"      s+    N 43
4\r   