o
    bi                     @   sR
  d dl Z d dlZd dlm  mZ d dlmZ d dl	m
Z d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ dddZejddddd Zdd Zdd Zdd Zdd Z dd Z!dd Z"dd!d"Z#d#d$ Z$ejdddd%d& Z%d'd( Z&d)d* Z'dd+d,Z(dd-d.Z)dd/d0Z*dd1d2Z+ej,d d3d4d5 Z-d6d7 Z.dd8d9Z/d:d; Z0dd<d=Z1dd>d?Z2dd@dAZ3ddBdCZ4ddDdEZ5ej6dFdG Z7ej6dHdI Z8ej,d d3dJdK Z9ej,d d3dLdM Z:ej,d d3dNdO Z;dPdQ Z<ej,d d3dRdS Z=ddTdUZ>ddVdWZ?ddYdZZ@dd[d\ZAdd]d^ZBdd_d`ZCdadb ZDdcdd ZEdedf ZFdgdh ZGdidj ZHdkdl ZIdmdn ZJdodp ZKdqdr ZLdsdt ZMdudv ZNdwdx ZOej,d d3dydz ZPd{d| ZQdd}d~ZRej,dd3dd ZSej,dd3dd ZTej,dd3dd ZUej6dd ZVej6dd ZWdddZXdddZYdddZZdddZ[dd Z\dddZ]dddZ^dddZ_dddZ`ej,d d3dd Zadd ZbdddZcdd Zdej6dd Zeej6dd Zfdd Zgej,d d3dd ZhdddZiej,d d3dd ZjdddZkdddZldd Zmdd Zndd Zodd ZpdddZqej,dd3dd ZrdddZsej6ddĄ ZtdddƄZuej,d d3ddȄ Zvej,d d3ddʄ Zwdd̄ Zxdd΄ ZyddЄ Zzdd҄ Z{ddԄ Z|ddք Z}dd؄ Z~	 dddۄZej6dd݄ Zej6dd߄ Zej,d d3dd Zej6dd Zdd Zdd Zdd Zdd Zdd ZdddZejd d ddd ZdddZddddZdddZejd d ddd Zdd Zdd  ZdddZdd Zdd Zdd	 Zdd
dZdddZdd ZdddZdddZdddZdd Zdd Zej,dd3dd Zej6dd Zdd d!Zd"d# Zdd$d%Zdd'd(Zej,d d3d)d* Zej,d d3d+d, Zej,d d3d-d. Zej,d d3d/d0 Zd1d2 Zdd3d4Zdd5d6Zdd7d8Zdd9d:Zd;d< Zdd=d>Zdd?d@Zej,d d3dAdB Zej,d d3dCdD ZddFdGZej,d d3ddHdIZdJdK ZddLdMZddNdOZddPdQZddRdSZdTdU ZdVdW ZdXdY ZdZd[ Zddd\d]d^Zdd_d`Zejdadb Zdcdd Zdedf Zdgdh Zej,dd3didj Zej,d d3dkdl Zej,d d3dmdn ZŐddodpZƐddqdrZǐddtduZȐddvdwZɐddxdyZʐddzd{Zːd|d} Z̐d~d Z͐dd ZΐdddZϐdddZАdd ZѐdddZҐdddZdS (      N)export)config)dtypes)canonicalize_axis)to_tuple_or_list)standardize_dtype)nnsparse)castconvert_to_tensor   r   r   c                 C   sV   | j dk rtd| j  t|dks|d |d kr#td| dtj| ||dS )z5Rotate an array by 90 degrees in the specified plane.   zBInput array must have at least 2 dimensions. Received: array.ndim=r   r   zInvalid axes: z3. Axes must be a tuple of two different dimensions.)kaxes)ndim
ValueErrorlenjnprot90)arrayr   r    r   O/home/ubuntu/.local/lib/python3.10/site-packages/keras/src/backend/jax/numpy.pyr      s   

r   T)linearuse_sparsifyc                 C      t | } t |}t| |S N)r   r   addx1x2r   r   r   r   "      r   c                 C      t | } tt| t S r   )r   r   r   bartlettr   floatxxr   r   r   r%   )      r%   c                 C   r$   r   )r   r   r   hammingr   r&   r'   r   r   r   r*   .   r)   r*   c                 C   r$   r   )r   r   r   hanningr   r&   r'   r   r   r   r+   3   r)   r+   c                 C   r   r   )r   r   	heavisider    r   r   r   r,   8      r,   c                 C   r   r   )r   r   hypotr    r   r   r   r.   >   r-   r.   c                 C   s   t | } tt| |t S r   )r   r   r   kaiserr   r&   )r(   betar   r   r   r/   D   s   r/   Fc                    sJ  |st | tjrot | tjr7|d ur4t |tjstd| j|jur1tt| j|js1td|j}| j} t	| j
dkr@dnd}tt| d  }tj| |dd}|d uret||d }|| }tj||fd}|S t	| j
dkr|d u r fd	d
}	tt|	| }
n fdd
}	tt|	t| |}
t|
S tj| | dS )Nz$`x` and `weights` must both be BCOOsz2`x` and `weights` BCOOs must have the same indicesr   r   Tr	   r   r   c                    s   t j|  dS )N	minlengthr   bincount)arrr2   r   r   bincount_fnh      zbincount.<locals>.bincount_fnc                    s   t j| d | d  dS )Nr   r   weightsr3   r4   )arr_wr2   r   r   r7   n   s   r9   )
isinstance
jax_sparseBCOOr   indicesr   allequaldatar   shapemaximummaxr   one_hotexpand_dimsbcoo_reduce_sumlistmapzipstackr5   )r(   r:   r3   r
   reduction_axis	maxlengthone_hot_encodingexpanded_weightsoutputsr7   	bincountsr   r2   r   r5   I   s>   
r5   c                 O   sf   dd |D }t tdd |D }t|dkr!|d dkr!d}nd }||d	< tj| g|R i |S )
Nc                 S      g | ]}t |qS r   r   .0r(   r   r   r   
<listcomp>z       zeinsum.<locals>.<listcomp>c                 s   s    | ]}t |jV  qd S r   )r   dtyperT   r   r   r   	<genexpr>}       zeinsum.<locals>.<genexpr>r   r   int8int32preferred_element_type)rI   setr   r   einsum)
subscriptsoperandskwargsr   r]   r   r   r   r_   y   s   r_   c                 C   r   r   )r   r   subtractr    r   r   r   rc      r#   rc   c                 C   s   t | } t |}t| j}t|j}|dkr|dkrd}nd }t| tjs+t|tjrettds7tt	jt_
t| tjrJtj| t| jd dd} t|tjr]tj|t|jd dd}tj
| ||dS t	j| ||dS )Nr[   r\   sparse_matmulr   warn)n_batchon_inefficient)r]   )r   r   rX   r<   r=   	JAXSparsehasattrmatmulsparsifyr   rd   r>   bcoo_update_layoutr   rC   )r!   r"   x1_dtypex2_dtyper]   r   r   r   rj      s0   


rj   c                 C   s   t | } t |}t| tjrUt|tjr@| j|ju r:| js't| } t|}tjt| j	|j	| jf| j
dddS t| |S t| |}tj|| jf| j
| j| jdS t|tjrpt|| }tj||jf|j
|j|jdS t| |S )NT)rC   indices_sortedunique_indices)r   r<   r=   r>   r?   rp   bcoo_sum_duplicatesr   multiplyrB   rC   bcoo_multiply_sparsebcoo_multiply_densero   )r!   r"   out_datar   r   r   rr      s>   

rr   c                    s   t   t j}t jd}d|v s|dkr|}n|}t tjrl|d u r0tt	t
 j}tj| jdd\}}}t fdd|D }	tj |d}
tj|
j||	 |
jf|
jd	}
|rjtj|
||d
}
|
S tj |||d}
t|
|S )Nfloat32intboolFinsert_dimsc                 3   s    | ]} j | V  qd S r   rC   )rU   ir'   r   r   rY      rZ   zmean.<locals>.<genexpr>r1   r{   rC   broadcast_dimensionsaxiskeepdimsrX   )r   r   rX   r   result_typer<   r=   r>   tupleranger   rC   r
   $axis_shape_dims_for_broadcast_in_dimmathprodrH   rB   astyper?   bcoo_broadcast_in_dimr   meanr   )r(   r   r   	ori_dtypecompute_dtyperesult_dtypecanonical_axiskeep_dims_shaper~   divisoroutputr   r'   r   r      s>   

r   c                 C      t | } tj| |||dS N)r   r   initial)r   r   rE   r(   r   r   r   r   r   r   rE         rE   c                 C      |pt  }tj| |dS N)rX   )r   r&   r   onesrC   rX   r   r   r   r        r   c                 C   r   r   )r   r&   r   zerosr   r   r   r   r     r   r   )r   c                 C      t | } t| S r   )r   r   absoluter'   r   r   r   r        
r   c                 C      t | S r   )r   r'   r   r   r   abs     r   c                 C      t j| ||dS Nr   r   )r   r@   r(   r   r   r   r   r   r@        r@   c                 C   B   t | } t| jdkrt }nt| jt}t| |} t	
| S Nint64)r   r   rX   r   r&   r   r   floatr   r   angler(   rX   r   r   r   r     s   


r   c                 C   r   r   )r   anyr   r   r   r   r   $  r   r   c                 C   r   r   )r   amaxr   r   r   r   r   (  r   r   c                 C   r   r   )r   aminr   r   r   r   r   ,  r   r   c                 C       t | } t |}tj| ||dS Nr   )r   r   append)r!   r"   r   r   r   r   r   0     r   c                 C   sj   dd }|d u r(|| g}|d ur| || |d ur#| || tj| }t|}tj| |||dS )Nc                 S   s&   t | dr| jS t| rtS t| S )NrX   )ri   rX   
jax_exportis_symbolic_dimrw   typer'   r   r   r   	get_dtype7  s
   

zarange.<locals>.get_dtype)steprX   )r   r   r   r   r   arange)startstopr   rX   r   dtypes_to_resolver   r   r   r   6  s   

r   c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   arccosr   r   r   r   r   I     


r   c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   arccoshr   r   r   r   r   T  r   r   c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   arcsinr   r   r   r   r   _  r   r   c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   arcsinhr   r   r   r   r   j  r   r   c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   arctanr   r   r   r   r   u  r   r   c                 C   B   t | } t |}t| j|jt}t| |} t||}t| |S r   )r   r   r   rX   r   r   r   arctan2r!   r"   rX   r   r   r   r        

r   c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   arctanhr   r   r   r   r     r   r   c                 C      ddl m} t| } t| j}d|vs| r| jdkr#tj| ||dS t	|d}t
| |} | dkt| @ }t|t| jj | } tj| ||dS Nr   )uses_cpur   r   rv           )keras.src.testing.test_caser   r   r   rX   r   r   argmaxr   r   r   signbitwherefinfotinyr(   r   r   r   rX   is_negative_zeror   r   r   r        

r   c                 C   r   r   )r   r   r   r   rX   r   r   argminr   r   r   r   r   r   r   r   r   r   r   r     r   r   c                 C   s.   t | } | jdkrtj| d dS tj| |dS )Nr   r   )r   r   r   argsortr(   r   r   r   r   r     s   
r   c                 C      t j| |dS r   )r   r   r   r   r   r   r     r8   r   c                 C   s   t | } | j|dS r   )r   viewr   r   r   r   r        r   c                 C   sd   t | } | jtg}|d urt |}||j tj| }t| |} |d ur*t||}tj| ||dS )N)r:   r   )	r   rX   r   r   r   r   r   r   average)r(   r   r:   r   rX   r   r   r   r     s   



r   c                 C   r   r   )r   r   bitwise_andr(   yr   r   r   r     r-   r   c                 C   r   r   )r   r   invertr'   r   r   r   bitwise_invert     
r   c                 C   r   r   )r   r'   r   r   r   bitwise_not  r   r   c                 C   r   r   )r   r   
bitwise_orr   r   r   r   r     r-   r   c                 C   r   r   )r   r   bitwise_xorr   r   r   r   r     r-   r   c                 C   &   t | } t|tst |}t| |S r   )r   r<   rw   r   
left_shiftr   r   r   r   bitwise_left_shift     
r   c                 C   
   t | |S r   )r   r   r   r   r   r        
r   c                 C   r   r   )r   r<   rw   r   right_shiftr   r   r   r   bitwise_right_shift  r   r   c                 C   r   r   )r   r   r   r   r   r      r   r   c                 C   r$   r   )r   r   r   blackmanr   r&   r'   r   r   r   r     r)   r   c                 C      t | } t| |S r   )r   r   broadcast_to)r(   rC   r   r   r   r   	  r   r   c                 C   r   r   )r   r   cbrtr'   r   r   r   r     r   r   c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   ceilr   r   r   r   r     r   r   c                 C   s.   t | } t| jdkrt| d} t| ||S )Nrx   r\   )r   r   rX   r   r   clip)r(   x_minx_maxr   r   r   r     s   
r   c                 C   sr   t dd | D }|t| kr!t|t| d j}tj| |dS |r+dd | D } ndd | D } tj| |dS )	Nc                 s   s    | ]	}t |tjV  qd S r   )r<   r=   r>   rT   r   r   r   rY   &  s    zconcatenate.<locals>.<genexpr>r   )	dimensionc                 S   s(   g | ]}t |tjr| nt|qS r   )r<   r=   rh   todenser   rT   r   r   r   rV   +  s    

zconcatenate.<locals>.<listcomp>c                 S   rS   r   r   rT   r   r   r   rV   2  rW   r   )	builtinssumr   r   rC   r=   bcoo_concatenater   concatenate)xsr   
bcoo_countr   r   r   r   %  s   r   c                 C   r   r   r   r   	conjugater'   r   r   r   r  6  r   r  c                 C   r   r   r   r'   r   r   r   conj<  r   r  c                 C   r   r   )r   r   copyr'   r   r   r   r  B  r   r  c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   cosr   r   r   r   r  H  r   r  c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   coshr   r   r   r   r  S  r   r  c                 C   s   t tj| |ddS )Nr   r\   )r   r   count_nonzeror   r   r   r   r  ^  s   r  c                 C   s&   t | } t |}tj| |||||dS )N)axisaaxisbaxiscr   )r   r   cross)r!   r"   r  r  r	  r   r   r   r   r
  b  s   r
  c                 C      t | } tj| ||dS N)r   rX   )r   r   cumprodr(   r   rX   r   r   r   r  o     r  c                 C   r  r  )r   r   cumsumr  r   r   r   r  t  r  r  c                 C   r   r   )r   r   deg2radr'   r   r   r   r  y  r   r  c                 C      t | } tj| |dS N)r   )r   r   diagr(   r   r   r   r   r  ~     r  c                 C   r  r  )r   r   diagflatr  r   r   r   r    r  r  c                 C   r   N)offsetaxis1axis2)r   r   diagonalr(   r  r  r  r   r   r   r    s   r  c                 C   r  )N)nr   )r   r   diff)ar  r   r   r   r   r    r  r  c                 C   r   r   )r   r   digitize)r(   binsr   r   r   r!    r#   r!  c                 C   r   r   )r   r   dotr    r   r   r   r#    r-   r#  c                 C   r   r   )r   r&   r   emptyr   r   r   r   r$    r   r$  c                 C   r   r   )r   r   rA   r    r   r   r   rA     r-   rA   c                 C   :   t | } t| j}d|v s|dkrt| t } t| S Nrw   rx   )r   r   rX   r   r   r&   r   expr(   r   r   r   r   r'    
   

r'  c                 C   r%  r&  )r   r   rX   r   r   r&   r   exp2r(  r   r   r   r*    r)  r*  c                 C   sH   t | } t| tjrtj|| jdd\}}}tj| ||dS t	| |S )NTry   r}   )
r   r<   r=   r>   r
   r   rC   r   r   rG   )r(   r   _result_shaper~   r   r   r   rG     s   rG   c                 C   r%  r&  )r   r   rX   r   r   r&   r   expm1r(  r   r   r   r-    r)  r-  c                 C   r   r   )r   flipr   r   r   r   r.    r8   r.  c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   floorr   r   r   r   r/    r   r/  c                 C   s   |pt  }tj| ||dS r   )r   r&   r   full)rC   
fill_valuerX   r   r   r   r0    s   r0  c                 C   r   r   )r   	full_like)r(   r1  rX   r   r   r   r2    r   r2  c                 C   r   r   )r   r   gcdr    r   r   r   r3    r-   r3  c                 C   r   r   )r   r   greaterr    r   r   r   r4    r-   r4  c                 C   r   r   )r   r   greater_equalr    r   r   r   r5    r-   r5  c                 C   
   t | S r   )r   hstackr   r   r   r   r7    r   r7  c                 C   r   r   )r   r&   r   identity)r  rX   r   r   r   r9    r   r9  c                 C   r   r   )r   r   imagr'   r   r   r   r:    r   r:  h㈵>:0yE>c                 C   s"   t | } t |}t| ||||S r   )r   r   isclose)r!   r"   rtolatol	equal_nanr   r   r   r=       r=  c                 C   r   r   )r   r   isfiniter'   r   r   r   rB    r   rB  c                 C   s"   t | } t |}tj| |||dS )N)assume_uniquer   )r   r   isin)r!   r"   rC  r   r   r   r   rD    rA  rD  c                 C   r   r   )r   r   isinfr'   r   r   r   rE  %  r   rE  c                 C   r   r   )r   r   isnanr'   r   r   r   rF  +  r   rF  c                 C   r   r   )r   r   isneginfr'   r   r   r   rG  1  r   rG  c                 C   r   r   )r   r   isposinfr'   r   r   r   rH  6  r   rH  c                 C   r   r   )r   r   isrealr'   r   r   r   rI  ;  r   rI  c                 C   r   r   )r   r   kronr    r   r   r   rJ  @  r-   rJ  c                 C   r   r   )r   r   lcmr    r   r   r   rK  F  r-   rK  c                 C   r   r   )r   r   lessr    r   r   r   rL  L  r-   rL  c                 C   r   r   )r   r   
less_equalr    r   r   r   rM  R  r-   rM  2   c              	   C      t j| ||||||dS )N)numendpointretsteprX   r   )r   linspace)r   r   rP  rQ  rR  rX   r   r   r   r   rS  X  s   rS  c                 C   .   t | } t| jdkrt| t } t| S r   )r   r   rX   r   r   r&   r   logr'   r   r   r   rU  f     
rU  c                 C   rT  r   )r   r   rX   r   r   r&   r   log10r'   r   r   r   rW  n  rV  rW  c                 C   rT  r   )r   r   rX   r   r   r&   r   log1pr'   r   r   r   rX  v  rV  rX  c                 C   rT  r   )r   r   rX   r   r   r&   r   log2r'   r   r   r   rY  ~  rV  rY  c                 C   r   r   )r   r   r   rX   r   r   r   	logaddexpr   r   r   r   rZ    r   rZ  c                 C   r   r   )r   r   r   rX   r   r   r   
logaddexp2r   r   r   r   r[    r   r[  c                 C   r   r   )r   r   logical_andr    r   r   r   r\    r-   r\  c                 C   r   r   )r   r   logical_notr'   r   r   r   r]    r   r]  c                 C   r   r   )r   r   
logical_orr    r   r   r   r^    r-   r^  
   c              	   C   rO  )N)rP  rQ  baserX   r   )r   logspace)r   r   rP  rQ  r`  rX   r   r   r   r   ra    s   ra  c                 C   r   r   )r   r   rD   r    r   r   r   rD     r#   rD   c                 C   s   t |tr	t|}t| } t| jdkrt| t } t	j
| ||d}|du r>|d u r>|j| jk r>t	j|dd}|j| jk s1|S )Nr   r   Tr   r   )r<   rI   r   r   r   rX   r   r   r&   r   medianr   rG   )r(   r   r   resultr   r   r   rb    s   
rb  xy)indexingc                 G   s   t j|d| iS )Nre  )r   meshgrid)re  r(   r   r   r   rf    r   rf  c                 C   r   r   )r   r   minr   r   r   r   rg    r   rg  c                 C   r   r   )r   r   minimumr    r   r   r   rh    r#   rh  c                 C   r   r   )r   r   modr    r   r   r   ri    r-   ri  c                 C   r   )N)sourcedestination)r   moveaxis)r(   rj  rk  r   r   r   rl    r   rl  r   c                 C   r   )N)nanposinfneginf)r   r   
nan_to_num)r(   rm  rn  ro  r   r   r   rp    r   rp  c                 C   r6  r   )r   r   r'   r   r   r   r     r   r   c                 C   r6  r   )r   nonzeror'   r   r   r   rq    r   rq  c                 C   r   r   )r   r   	not_equalr    r   r   r   rr    r-   rr  c                 C   r   r   )r   	ones_liker   r   r   r   rs    r8   rs  c                 C   r   r   )r   
zeros_liker   r   r   r   rt    r8   rt  c                 C      t | |S r   )r   outerr    r   r   r   rv       rv  constantc                 C   sJ   t | } i }|d ur|dkrtd| ||d< tj| |fd|i|S )Nrx  zZArgument `constant_values` can only be provided when `mode == 'constant'`. Received: mode=constant_valuesmode)r   r   r   pad)r(   	pad_widthrz  ry  rb   r   r   r   r{    s   r{  c                 C   r   )Nr   )r   r   r   )r(   r   r   rX   r   r   r   r     r   r   r   c                 C   s   t | } t |}t| jdkrt| t } tj| ||||d}|du rG|d u rG| jt	|j
dkr3dnd }|j|k rGtj|dd}|j|k s;|S )Nr   )r   methodr   Tr   r   r   r   )r   r   rX   r   r   r&   r   quantiler   r   rC   rG   )r(   qr   r}  r   rc  result_ndimr   r   r   r~    s   

r~  c                 C   r   r   )r   r   ravelr'   r   r   r   r  )  r   r  c                 C   r   r   )r   r   unravel_index)r?   rC   r   r   r   r  .  r   r  c                 C   r   r   )r   r   realr'   r   r   r   r  3  r   r  c                 C   r   r   )r   r   
reciprocalr'   r   r   r   r  9  r   r  c                 C   r  r   )r   r   repeat)r(   repeatsr   r   r   r   r  ?  r  r  c                 C   sV   t | tjr!ddlm} || j|d}d |vr|}tj| |dS t| } t	
| |S )Nr   )operation_utils	new_shape)	new_sizes)r<   r=   r>   keras.src.opsr  compute_reshape_output_shaperC   bcoo_reshaper   r   reshape)r(   newshaper  output_shaper   r   r   r  D  s   r  c                 C   r   r   )r   roll)r(   shiftr   r   r   r   r  S  r   r  leftc                 C   s,   t | dkrtd| j tj| ||dS )Nr   z`searchsorted` only supports 1-D sorted sequences. You can use `keras.ops.vectorized_map` to extend it to N-D sequences. Received: sorted_sequence.shape=)side)r   r   rC   r   searchsorted)sorted_sequencevaluesr  r   r   r   r  W  s   r  c                 C   r   r   )r   r   signr'   r   r   r   r  b  r   r  c                 C   r   r   )r   r   r   r'   r   r   r   r   h  r   r   c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   sinr   r   r   r   r  n  r   r  c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   sinhr   r   r   r   r  y  r   r  c                 C   r6  r   )r   sizer'   r   r   r   r    r   r  c                 C   r  r   )r   r   sortr   r   r   r   r    r  r  c                 C   r  r   )r   r   split)r(   indices_or_sectionsr   r   r   r   r    r  r  c                 C   s   dd | D } t j| |dS )Nc                 S   rS   r   r   )rU   tr   r   r   rV     rW   zstack.<locals>.<listcomp>r   )r   rL   r   r   r   r   rL     s   rL   c                 C   s4   t | } t| jdkrt| t } tj| ||dS )Nr   r   )r   r   rX   r   r   r&   r   stdr   r   r   r   r    s   r  c                 C   r  )N)r  r  )r   r   swapaxes)r(   r  r  r   r   r   r    r  r  c                 C   s$   t | } t |dd}tj| ||dS )NFr	   r   )r   r   taker(   r?   r   r   r   r   r    s   r  c                 C   r   r   )r   take_along_axisr  r   r   r   r    r   r  c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   tanr   r   r   r   r    r   r  c                 C   r   r   )r   r   rX   r   r&   r   r   r   r   r   tanhr   r   r   r   r    r   r  r   c                 C   r   )Nr1   )r   r   	tensordot)r!   r"   r   r   r   r   r    r   r  c                 C   s   t | } t| j}d|v r9|dk r9ttd|t }t| t } t	| |} t
| } t| |} t| |S tj
| |dS )Nrw   r   r_  )decimals)r   r   rX   r   r   powr   r&   r   rr   rounddivide)r(   r  x_dtypefactorr   r   r   r    s   


r  c                 C   ru  r   )r   tile)r(   r  r   r   r   r    rw  r  c                 C   r   r  )r   r   tracer  r   r   r   r    r   r  c                 C      |pt  }tj| |||dS N)Mr   rX   )r   r&   r   triNr  r   rX   r   r   r   r       r  c                 C   r  r  )r   r   trilr  r   r   r   r    r  r  c                 C   r  r  )r   r   triur  r   r   r   r    r  r  c                 C   s0   t | } t| j}d|v sd|kr| S t| S r&  )r   r   rX   r   truncr   r   r   r   r    s
   

r  c                 C   r   r   )r   r   vdotr    r   r   r   r    r-   r  c                 C   r   r   )r   r   innerr    r   r   r   r     r-   r  c                 C   r6  r   )r   vstackr8  r   r   r   r    r   r  excluded	signaturec                C   s   |d u rt  }tj| ||dS )Nr  )r^   r   	vectorize)pyfuncr  r  r   r   r   r  
  s   r  c                 C      t | ||S r   )r   r   )	conditionr!   r"   r   r   r   r     r8   r   c                 C   r   r   )r   r   r  r    r   r   r   r    r#   r  c                 C   s<   t | } t |}t|dkd|}t|dkdt| |S )Nr   r   )r   r   r   r  )r!   r"   safe_x2r   r   r   divide_no_nan  s   r  c                 C   r   r   )r  r    r   r   r   true_divide"  r   r  c                 C   r   r   )r   r   powerr    r   r   r   r  &  r-   r  c                 C   r   r   )r   r   negativer'   r   r   r   r  ,  r   r  c                 C   r   r   )r   r   squarer'   r   r   r   r  2  r   r  c                 C   rT  r   )r   r   rX   r   r   r&   r   sqrtr'   r   r   r   r  8  rV  r  c                 C   sX   t | tjr!|d u rtdd t| jD }t|}tj| |dS t| } t	j
| |dS )Nc                 s   s     | ]\}}|d kr|V  qdS )r   Nr   )rU   r|   dr   r   r   rY   C  s    zsqueeze.<locals>.<genexpr>)
dimensionsr   )r<   r=   r>   r   	enumeraterC   r   bcoo_squeezer   r   squeezer   r   r   r   r  @  s   r  c                 C   s|   t | } t| tjr7t| j}|d u rtt|d d d }ng }|D ]}t||}|	| q#tj
| |dS tj| |dS )Nr   )permutationr1   )r   r<   r=   r>   r   rC   r   r   r   r   bcoo_transposer   	transpose)r(   r   num_dimsr  r   r   r   r   r  J  s   

r        ?c                 C   s2   t | } |d urt |}t |}tj| |||dS )N)dxr   )r   r   	trapezoid)r   r(   r  r   r   r   r   r  Y  s
   r  c                 C   s<   t | } t| jd}t| jt}ttj| |||d|S )Nrv   r   )r   r   r   rX   r   r   r   var)r(   r   r   r   r   r   r   r   r  a  s   r  c                 C   s|   t | } t| tjr6|d u rttt| j}tj	|| jdd\}}}tj
| |d}|r4tj|||d}|S tj| ||dS )NFry   r1   r}   r   )r   r<   r=   r>   r   r   r   rC   r
   r   rH   r   r   r   )r(   r   r   r   r   r~   r   r   r   r   r   m  s(   r   c                 C   r  r  )r   r&   r   eyer  r   r   r   r    r  r  c                 C   r   r   )r   r   floor_divider    r   r   r   r    r-   r  c                 C   r   r   )r   r   logical_xorr    r   r   r   r    r-   r  c                 C   r   r   )r   r   corrcoefr'   r   r   r   r    r   r  validc                 C   s   t | } t |}t| ||S r   )r   r   	correlate)r!   r"   rz  r   r   r   r    s   r  c                 C   r   )N)default)r   select)condlist
choicelistr  r   r   r   r    r   r  c                 C   s   t | } ttj| S r   )r   r   r   linalgslogdetr'   r   r   r   r    r  r  c                 C   r  r   )r   argpartition)r(   kthr   r   r   r   r    r8   r  c                 C   r   )N)r"  r   )r   	histogram)r(   r"  r   r   r   r   r    r   r  )r   r   )Nr   F)NF)NFNr   )NNN)r   )NN)r   )r   r   r   N)r   r   r   )r   r   )r;  r<  F)FF)rN  TFNr   )rN  Tr_  Nr   )r   NN)rx  N)Nr   F)r  )r   )Nr   N)Nr  r   )r  )r_  N)r   r   jax.experimental.sparseexperimentalr
   r=   	jax.numpynumpyr   jaxr   r   keras.src.backendr   keras.src.backend.commonr   &keras.src.backend.common.backend_utilsr   r   "keras.src.backend.common.variablesr   keras.src.backend.jaxr   keras.src.backend.jax.corer   r   r   elementwise_binary_unionr   r%   r*   r+   r,   r.   r/   r5   r_   rc   rj   rr   r   rE   r   r   elementwise_unaryr   r   r@   r   r   r   r   r   r   densifying_unaryr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r!  r#  r$  rA   r'  r*  rG   r-  r.  r/  r0  r2  r3  r4  r5  r7  r9  r:  r=  rB  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rS  rU  rW  rX  rY  rZ  r[  r\  r]  r^  ra  rD   rb  rf  rg  rh  ri  rl  rp  r   rq  rr  rs  rt  rv  r{  r   r~  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  rL   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   elementwise_divisionr  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s   
0
)(
















	




































		


















