o
    biЎ                     @   s.  d dl 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dd Zdd Zdd Zdd Zdd ZdddZdddZdddZdddZdd  Zd!d" Zdd#d$Zd%d& Zdd'd(Zdd)d*Zdd+d,Zdd-d.Zdd/d0Zd1d2 Z d3d4 Z!d5d6 Z"d7d8 Z#d9d: Z$d;d< Z%d=d> Z&dd?d@Z'ddAdBZ(ddDdEZ)ddFdGZ*ddHdIZ+ddJdKZ,dLdM Z-dNdO Z.dPdQ Z/dRdS Z0dTdU Z1ddVdWZ2dXdY Z3dZd[ Z4d\d] Z5d^d_ Z6d`da Z7dbdc Z8ddde Z9dfdg Z:dhdi Z;djdk Z<dldm Z=dndo Z>dpdq Z?drds Z@ddtduZAdvdw ZBdxdy ZCdzd{ ZDd|d} ZEd~d ZFdddZGdddZHdddZIdddZJdd ZKdddZLdddZMdddZNdddZOdd ZPdd ZQdddZRdd ZSdd ZTdd ZUdd ZVdd ZWdddZXdd ZYdddZZdddZ[dd Z\dd Z]dd Z^dd Z_dd Z`dddZadd ZbdddZcdd ZddddZedd ZfddÄ Zgddń ZhddǄ ZiddɄ Zjdd˄ Zkdd̈́ Zlddτ Zmddф Zn	 dddՄZoddׄ Zpddل Zqddۄ Zrdd݄ Zsdd߄ Ztdd Zudd Zvdd Zwdd ZxdddZydd ZzdddZ{ddddZ|dddZ}dd Z~dd Zdd ZdddZdd 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 Zdd Zdd ZdddZdd ZdddZdd!d"Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zdd-d.Zdd/d0Zdd1d2Zdd3d4Zd5d6 Zdd7d8Zdd9d:Zd;d< Zd=d> Zdd@dAZddBdCZdDdE ZddFdGZddHdIZddJdKZddLdMZdNdO ZdPdQ ZdRdS ZdTdU ZdddVdWdXZddYdZZd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh ZddidjZddkdlZddndoZddpdqZddrdsZddtduZdvdw Zdxdy Zdzd{ Zdd}d~ZdddZdd ZdddZdddZdS (      N)tree)config)standardize_dtype)dtypes)standardize_axis_for_numpy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nprot90)arrayr   r    r   Q/home/ubuntu/.local/lib/python3.10/site-packages/keras/src/backend/numpy/numpy.pyr      s   

r   c                 C   p   t | ttfst| } t |ttfst|}tt| dt| t|dt|}t| |} t||}t	| |S Ndtype)

isinstanceintfloatr   r   result_typegetattrtyper   addx1x2r   r   r   r   r         

r   c                    s   t t|}ttdd |D }t|dkr"|d dkr"d d}ntj| }|  dkr/d t  fd	d
|}tj	| g|R i |
|S )Nc                 s   s    | ]}t |jV  qd S N)r   r   .0xr   r   r   	<genexpr>*       zeinsum.<locals>.<genexpr>r	   r   int8int32bfloat16float32c                    s
   |   S r$   astyper'   compute_dtyper   r   <lambda>6   s   
 zeinsum.<locals>.<lambda>)r   map_structurer   listsetr   r   r   r   einsumr/   )
subscriptsoperandskwargsdtypes_to_resolveresult_dtyper   r1   r   r7   (   s   
r7   c                 C   r   r   )
r   r   r   r   r   r   r   r   r   subtractr    r   r   r   r=   :   r#   r=   c                 C   sp   t | } t |}t| j}t|j}|dkr|dkrd}nt| j|j}| |} ||}t| ||S )Nr*   r+   )r   r   r   r   r   r/   r   matmul)r!   r"   x1_dtypex2_dtyper   r   r   r   r>   H   s   



r>   c                 C   r   r   )
r   r   r   r   r   r   r   r   r   multiplyr    r   r   r   rA   X   r#   rA   Fc                 C   sT   t |}t| } t| j}d|v s|dkrt| jd}n|}tj| ||d|S )Nr   boolr-   axiskeepdims)	r   r   r   r   r   r   r   meanr/   )r'   rD   rE   	ori_dtyper<   r   r   r   rF   f   s   
rF   c                 C      t |}tj| |||dS N)rD   rE   initial)r   r   maxr'   rD   rE   rJ   r   r   r   rK   q      rK   c                 C      |pt  }tj| |dS Nr   )r   floatxr   onesshaper   r   r   r   rR   v      rR   c                 C   rN   rO   )r   rQ   r   zerosrS   r   r   r   rV   {   rU   rV   c                 C   
   t | S r$   )r   absoluter0   r   r   r   rX         
rX   c                 C      t | S r$   )rX   r0   r   r   r   abs      r[   c                 C      t |}tj| ||dS NrC   )r   r   allr'   rD   rE   r   r   r   r_         r_   c                 C   B   t | } t| jdkrt }nt| jt}| |} t	
| S Nint64)r   r   r   r   rQ   r   r   r   r/   r   angler'   r   r   r   r   re         


re   c                 C   r]   r^   )r   r   anyr`   r   r   r   rh      ra   rh   c                 C   r]   r^   )r   r   amaxr`   r   r   r   ri      ra   ri   c                 C   r]   r^   )r   r   aminr`   r   r   r   rj      ra   rj   c                 C   sL   t |}t| } t|}t| j|j}| |} ||}tj| ||dS NrD   )r   r   r   r   r   r/   r   append)r!   r"   rD   r   r   r   r   rm      s   

rm   c                 C   s   |d u r0t | dt| g}|d ur|t |dt| |d ur+|t |dt| tj| }|d u r9d| } }|d u r?d}tj| |||dS )Nr   r   r	   )stepr   )r   r   rm   r   r   r   arange)startstoprn   r   r;   r   r   r   ro      s   

ro   c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   arccosrf   r   r   r   rr      rg   rr   c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   arccoshrf   r   r   r   rs      rg   rs   c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   arcsinrf   r   r   r   rt      rg   rt   c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   arcsinhrf   r   r   r   ru      rg   ru   c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   arctanrf   r   r   r   rv      rg   rv   c                 C   B   t | } t |}t| j|jt}| |} ||}t| |S r$   )r   r   r   r   r   r/   r   arctan2r    r   r   r   rx         

rx   c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   arctanhrf   r   r   r   rz      rg   rz   c                 C      t | } t|}t| j}d|vs| jdkr!tj| ||ddS t	|d}| |} | dkt
| @ }t|t| jj | } tj| ||ddS Nr   r   rC   r+   r-           )r   r   r   r   r   r   argmaxr/   r   r   signbitwherefinfotinyr'   rD   rE   r   is_negative_zeror   r   r   r~        

r~   c                 C   r{   r|   )r   r   r   r   r   r   argminr/   r   r   r   r   r   r   r   r   r   r   r     r   r   c                 C   s   t |}tj| |ddS Nrl   r+   )r   r   argsortr/   r'   rD   r   r   r   r         r   c                 C   s   t | |dS rO   r   rf   r   r   r   r   %     r   c                 C   s   t | } | j|dS rO   )r   viewrf   r   r   r   r   )     r   c                 C   sl   t |}t| } | jtg}|d urt|}||j tj| }| |} |d ur.||}tj	| ||dS )N)weightsrD   )
r   r   r   r   rm   r   r   r/   r   average)r'   rD   r   r;   r   r   r   r   r   .  s   



r   c                 C      t | } t| t S r$   )r   r   bartlettr/   r   rQ   r0   r   r   r   r   <  r   r   c                 C   r   r$   )r   r   hammingr/   r   rQ   r0   r   r   r   r   A  r   r   c                 C   r   r$   )r   r   hanningr/   r   rQ   r0   r   r   r   r   F  r   r   c                 C   P   t | } t |}t| j|j}|dv rt }n|dv rd}t| ||S N)r*   int16r+   uint8uint16uint32)rd   float64)	r   r   r   r   r   rQ   r   	heavisider/   r    r   r   r   r   K     
r   c                 C   s   t | } t| |t S r$   )r   r   kaiserr/   r   rQ   )r'   betar   r   r   r   X  s   r   c                    s   |rt dt| } | jg}|d ur"t|}||j tj| }nd}t| jdkrU|d u r= fdd}tt	|| }n fdd}tt	|t
| |}t||S t| | |S )Nz2Unsupported value `sparse=True` with numpy backendr+   r   c                    s   t j|  dS )N	minlengthr   bincount)arrr   r   r   bincount_fnk     zbincount.<locals>.bincount_fnc                    s   t j| d | d  dS )Nr   r	   )r   r   r   )arr_wr   r   r   r   q  s   )r   r   r   rm   r   r   r   rT   r5   mapzipr   stackr/   r   )r'   r   r   sparser;   r   r   	bincountsr   r   r   r   ]  s"   r   c                 C   @   t | } t |}t| j|j}| |} ||}t| |S r$   )r   r   r   r   r/   r   bitwise_andr'   yr   r   r   r   r   |     

r   c                 C      t | } t| S r$   )r   r   bitwise_notr0   r   r   r   bitwise_invert     
r   c                 C   rZ   r$   )r   r0   r   r   r   r     r\   r   c                 C   r   r$   )r   r   r   r   r/   r   
bitwise_orr   r   r   r   r     r   r   c                 C   r   r$   )r   r   r   r   r/   r   bitwise_xorr   r   r   r   r     r   r   c                 C   J   t | } t|tst |}t| j|j}| |} ||}t| |S r$   )	r   r   r   r   r   r   r/   r   
left_shiftr   r   r   r   bitwise_left_shift     


r   c                 C   
   t | |S r$   )r   r'   r   r   r   r   r     rY   r   c                 C   r   r$   )	r   r   r   r   r   r   r/   r   right_shiftr   r   r   r   bitwise_right_shift  r   r   c                 C   r   r$   )r   r   r   r   r   r     rY   r   c                 C   r   r$   )r   r   blackmanr/   r   rQ   r0   r   r   r   r     r   r   c                 C      t | |S r$   )r   broadcast_to)r'   rT   r   r   r   r     r   r   c                 C   s@   t | } t| j}|dv rt }n|dkrd}t| |S )N)rB   r*   r   r+   r   r   r   rd   r   )r   r   r   r   rQ   r   cbrtr/   rf   r   r   r   r     s   

r   c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   ceilrf   r   r   r   r     rg   r   c                 C   s2   t | } t| j}|dkrd}t| |||S NrB   r+   )r   r   r   r   clipr/   )r'   x_minx_maxr   r   r   r   r     s
   
r   c                    R   t |}tdd | D }t|dkr"tj|  t fdd| } tj| |dS )Nc                 S      g | ]
}t |d t|qS rP   r   r   r%   r   r   r   
<listcomp>      zconcatenate.<locals>.<listcomp>r	   c                       t |  S r$   r   r/   r0   rP   r   r   r3         zconcatenate.<locals>.<lambda>rl   )	r   r6   r   r   r   r   r4   r   concatenate)xsrD   	dtype_setr   rP   r   r     s   
r   c                 C   rW   r$   )r   	conjugater0   r   r   r   r     rY   r   c                 C   rZ   r$   )r   r0   r   r   r   conj  r\   r   c                 C   rW   r$   )r   copyr0   r   r   r   r     rY   r   c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   cosrf   r   r   r   r     rg   r   c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   coshrf   r   r   r   r     rg   r   c                 C   s    t |}ttj| |ddS r   )r   r   r   count_nonzeror/   r   r   r   r   r     s   r   c                 C   sR   t |}t| } t|}t| j|j}| |} ||}tj| |||||dS )N)axisaaxisbaxiscrD   )r   r   r   r   r   r/   r   cross)r!   r"   r   r   r   rD   r   r   r   r   r     s   

r   c                 C   4   t |}t|p
| j}|dkrd}tj| ||dS NrB   r+   )rD   r   )r   r   r   r   r   cumprodr'   rD   r   r   r   r   r   &  
   r   c                 C   r   r   )r   r   r   r   r   cumsumr   r   r   r   r   .  r   r   c                 C   sB   t | } | jdv rd}n| jdv r| j}nt }t| |S N)rd   r   r   )r,   float16)r   r   r   rQ   r   deg2radr/   rf   r   r   r   r   6  s   

r   c                 C      t j| |dS N)r   )r   diagr'   r   r   r   r   r   C  r   r   c                 C   r   r   )r   diagflatr   r   r   r   r   G  r   r   c                 C   s"   t |}t |}tj| |||dS )N)offsetaxis1axis2)r   r   diagonal)r'   r   r   r   r   r   r   r   K     r   c                 C      t j| ||dS )N)nrD   )r   diff)ar   rD   r   r   r   r   Q     r   c                 C   s   t | |t jS r$   )r   digitizer/   r+   )r'   binsr   r   r   r   U     r   c                 C   r   r$   )r   r   r   r   r/   r   dotr    r   r   r   r   Y  r   r   c                 C   rN   rO   )r   rQ   r   emptyrS   r   r   r   r   b  rU   r   c                 C   r   r$   )r   equalr!   r"   r   r   r   r   g  r   r   c                 C   :   t | } t| j}d|v s|dkr| t } t| S Nr   rB   )r   r   r   r/   r   rQ   r   expr'   rG   r   r   r   r   k  
   

r   c                 C   r   r   )r   r   r   r/   r   rQ   r   exp2r   r   r   r   r  s  r  r  c                 C   s   t |}t| |S r$   )r   r   expand_dimsr   r   r   r   r  {  r   r  c                 C   r   r   )r   r   r   r/   r   rQ   r   expm1r   r   r   r   r    r  r  c                 C      t |}tj| |dS rk   )r   r   flipr   r   r   r   r       r  c                 C   s@   t | } t| jdkrt nt| jt}| |} t	
| S rc   )r   r   r   r   rQ   r   r   r   r/   r   floorrf   r   r   r   r    s   

r  c                 C   s   |pt  }tj| ||dS rO   )r   rQ   r   full)rT   
fill_valuer   r   r   r   r	    s   r	  c                 C   r   rO   )r   	full_like)r'   r
  r   r   r   r   r    r   r  c                 C   2   t | } t |}t| j|j}t| ||S r$   )r   r   r   r   r   gcdr/   r    r   r   r   r    s   r  c                 C   r   r$   )r   greaterr   r   r   r   r    r   r  c                 C   r   r$   )r   greater_equalr   r   r   r   r    r   r  c                    F   t dd | D }t|dkrtj|  t fdd| } t| S )Nc                 S   r   rP   r   r%   r   r   r   r     r   zhstack.<locals>.<listcomp>r	   c                    r   r$   r   r0   rP   r   r   r3     r   zhstack.<locals>.<lambda>)r6   r   r   r   r   r4   r   hstackr   r   r   rP   r   r       

r  c                 C   r   r   )	r   r   r   r   r   rQ   r   hypotr/   r    r   r   r   r    r   r  c                 C   rN   rO   )r   rQ   r   identity)r   r   r   r   r   r    rU   r  c                 C   rW   r$   )r   imagr0   r   r   r   r    rY   r  h㈵>:0yE>c                 C   s   t | ||||S r$   )r   isclose)r!   r"   rtolatol	equal_nanr   r   r   r       r  c                 C   rW   r$   )r   isfiniter0   r   r   r   r    rY   r  c                 C   s"   t | } t |}tj| |||dS )N)assume_uniqueinvert)r   r   isin)r!   r"   r  r   r   r   r   r!    r   r!  c                 C   rW   r$   )r   isinfr0   r   r   r   r"    rY   r"  c                 C   rW   r$   )r   isnanr0   r   r   r   r#    rY   r#  c                 C   r   r$   )r   r   isneginfr0   r   r   r   r$    r   r$  c                 C   r   r$   )r   r   isposinfr0   r   r   r   r%    r   r%  c                 C   r   r$   )r   r   isrealr0   r   r   r   r&    r   r&  c                 C   r  r$   )r   r   r   r   r   kronr/   r    r   r   r   r'       r'  c                 C   r  r$   )r   r   r   r   r   lcmr/   r    r   r   r   r)    r(  r)  c                 C   r   r$   )r   lessr   r   r   r   r*    r   r*  c                 C   r   r$   )r   
less_equalr   r   r   r   r+    r   r+  2   Tc              	   C   sT   t |}|d u rt| dt| t|dt|tg}tj| }tj| ||||||dS )Nr   )numendpointretstepr   rD   )r   r   r   r   r   r   r   linspace)rp   rq   r-  r.  r/  r   rD   r;   r   r   r   r0    s    
r0  c                 C   :   t | } t| jdkrt nt| jt}tj	| |dS Nrd   rP   )
r   r   r   r   rQ   r   r   r   r   logrf   r   r   r   r3  "     r3  c                 C   r1  r2  )
r   r   r   r   rQ   r   r   r   r   log10rf   r   r   r   r5  ,  r4  r5  c                 C   r1  r2  )
r   r   r   r   rQ   r   r   r   r   log1prf   r   r   r   r6  6  r4  r6  c                 C   r1  r2  )
r   r   r   r   rQ   r   r   r   r   log2rf   r   r   r   r7  @  r4  r7  c                 C   rw   r$   )r   r   r   r   r   r/   r   	logaddexpr    r   r   r   r8  J  ry   r8  c                 C   s4   t | } t |}t| j|jt}t| ||S r$   )r   r   r   r   r   r   
logaddexp2r/   r    r   r   r   r9  S  s   r9  c                 C   r   r$   )r   logical_andr   r   r   r   r:  Z  r   r:  c                 C   rW   r$   )r   logical_notr0   r   r   r   r;  ^  rY   r;  c                 C   r   r$   )r   
logical_orr   r   r   r   r<  b  r   r<  
   c              	   C   sL   |d u rt | dt| t |dt|tg}tj| }tj| ||||||dS )Nr   )r-  r.  baser   rD   )r   r   r   r   r   r   logspace)rp   rq   r-  r.  r>  r   rD   r;   r   r   r   r?  f  s   
r?  c                 C   r   r   )
r   r   r   r   r   r   r   r   r   maximumr    r   r   r   r@  y  r#   r@  c                 C   s$   t | jt}tj| ||d|S r^   )r   r   r   r   r   medianr/   r'   rD   rE   r   r   r   r   rA    s   rA  xy)indexingc                 G   s   t j|d| iS )NrD  )r   meshgrid)rD  r'   r   r   r   rE    r   rE  c                 C   rH   rI   )r   r   minrL   r   r   r   rF    rM   rF  c                 C   r   r   )
r   r   r   r   r   r   r   r   r   minimumr    r   r   r   rG    r#   rG  c                 C   sL   t | } t |}t| j|j}|dkrd}| |} ||}t| |S r   )r   r   r   r   r/   r   modr    r   r   r   rH    s   

rH  c                 C   r   )N)sourcedestination)r   moveaxis)r'   rI  rJ  r   r   r   rK    r   rK  r}   c                 C   s   t j| |||dS )N)nanposinfneginf)r   
nan_to_num)r'   rL  rM  rN  r   r   r   rO    r  rO  c                 C   rW   r$   )r   r   r0   r   r   r   r     rY   r   c                 C   s   t dd t| D S )Nc                 s   s    | ]}| d V  qdS )r+   Nr.   r&   indicesr   r   r   r(     r)   znonzero.<locals>.<genexpr>)tupler   nonzeror0   r   r   r   rS    s   rS  c                 C   r   r$   )r   	not_equalr   r   r   r   rT    r   rT  c                 C   r   rO   )r   
zeros_likerf   r   r   r   rU    r   rU  c                 C   r   rO   )r   	ones_likerf   r   r   r   rV    r   rV  c                 C   r   r$   )r   r   r   r   r/   r   outerr    r   r   r   rW    r   rW  constantc                 C   sB   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   pad)r'   	pad_widthrZ  rY  r:   r   r   r   r[    s   r[  c                 C   sP   t |}t| } |d u rt| j}|dv rd}n|dv rd}tj| |||dS )NrB   r*   r   r+   r   r   r   rD   rE   r   )r   r   r   r   r   r   prodrB  r   r   r   r`    s   r`  linearc                 C   sj   t |}t| } t| j}|dkr| t } |dkr!t }nt| jt	}t
j| ||||d|S )NrB   rd   )rD   methodrE   )r   r   r   r   r/   r   rQ   r   r   r   r   quantile)r'   qrD   rb  rE   rG   r   r   r   r   rc    s   


rc  c                 C   rW   r$   )r   ravelr0   r   r   r   re    rY   re  c                    s*   t | j t fddt| |D S )Nc                 3   s    | ]}|  V  qd S r$   r.   rP  rP   r   r   r(     s    

z unravel_index.<locals>.<genexpr>)r   r   r   rR  r   unravel_index)rQ  rT   r   rP   r   rf    s   
rf  c                 C   rW   r$   )r   realr0   r   r   r   rg    rY   rg  c                 C   rW   r$   )r   
reciprocalr0   r   r   r   rh    rY   rh  c                 C   r   rk   )r   repeat)r'   repeatsrD   r   r   r   ri    r   ri  c                 C   r   r$   )r   reshape)r'   newshaper   r   r   rk    r   rk  c                 C   r   rk   )r   roll)r'   shiftrD   r   r   r   rm    r   rm  leftc                 C   sR   t | dkrtd| j | jd ttjjkrdnd}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=r   r+   rd   )side)	r   r   rT   r   iinfor+   rK   searchsortedr/   )sorted_sequencevaluesrp  out_typer   r   r   rr    s   rr  c                 C   rW   r$   )r   signr0   r   r   r   rv  ,  rY   rv  c                 C   rW   r$   )r   r   r0   r   r   r   r   0  rY   r   c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   sinrf   r   r   r   rw  4  rg   rw  c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   sinhrf   r   r   r   rx  >  rg   rx  c                 C   rW   r$   )r   sizer0   r   r   r   ry  H  rY   ry  c                 C   r  rk   )r   r   sortr   r   r   r   rz  L  r  rz  c                 C      t |}tj| ||dS rk   )r   r   split)r'   indices_or_sectionsrD   r   r   r   r|  Q  ra   r|  c                    r   )Nc                 S   r   rP   r   )r&   r   r   r   r   r   X  r   zstack.<locals>.<listcomp>r	   c                    r   r$   r   )r   rP   r   r   r3   [  r   zstack.<locals>.<lambda>rl   )	r   r6   r   r   r   r   r4   r   r   )r'   rD   r   r   rP   r   r   V  s   
r   c                 C   sH   t |}t| } t| j}d|v s|dkr| t } tj| ||dS )Nr   rB   rC   )	r   r   r   r   r/   r   rQ   r   std)r'   rD   rE   rG   r   r   r   r~  _  s   
r~  c                 C   r   )N)r   r   )r   swapaxes)r'   r   r   r   r   r   r  h  r   r  c                 C   r{  rk   )r   r   taker'   rQ  rD   r   r   r   r  l  ra   r  c                 C   r{  rk   )r   r   take_along_axisr  r   r   r   r  q  ra   r  c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   tanrf   r   r   r   r  v  rg   r  c                 C   rb   rc   )r   r   r   r   rQ   r   r   r   r/   r   tanhrf   r   r   r   r    rg   r  r   c                 C   sZ   t |tr	t|n|}t| } t|}t| j|j}| |} ||}tj	| ||dS N)r   )
r   r5   rR  r   r   r   r   r/   r   	tensordot)r!   r"   r   r   r   r   r   r    s   

r  c                 C   r   )N)decimals)r   round)r'   r  r   r   r   r    r   r  c                 C   r   r$   )r   tile)r'   rj  r   r   r   r    r   r  c                 C   sP   t |}t |}t| } t| j}|dv rd}n|dv rd}tj| ||||dS )Nr]  r+   r^  r   )r   r   r   r   )r   r   r   r   r   trace)r'   r   r   r   r   r   r   r   r    s   
r  c                 C      |pt  }tj| |||dS N)Mr   r   )r   rQ   r   triNr  r   r   r   r   r   r       r  c                 C   r   r   )r   trilr   r   r   r   r    r   r  c                 C   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   r   r   truncrf   r   r   r   r    s
   

r  c                 C   r   r$   )r   r   r   r   r/   r   vdotr    r   r   r   r    r   r  c                 C   r   r$   )r   r   r   r   r/   r   innerr    r   r   r   r    r   r  c                    r  )Nc                 S   r   rP   r   r%   r   r   r   r     r   zvstack.<locals>.<listcomp>r	   c                    r   r$   r   r0   rP   r   r   r3     r   zvstack.<locals>.<lambda>)r6   r   r   r   r   r4   r   vstackr  r   rP   r   r    r  r  excluded	signaturec                C   r   )Nr  )r   	vectorize)pyfuncr  r  r   r   r   r    r   r  c                 C   s   |d urA|d urAt |ttfst|}t |ttfst|}tt|dt|t|dt|}t||}t||}t	| ||S t	| S r   )
r   r   r   r   r   r   r   r   r   r   )	conditionr!   r"   r   r   r   r   r     s   


r   c                 C   sr   t | ttfst| } t |ttfst|}tt| dt| t|dt|t}t| |} t||}t	| |S r   )
r   r   r   r   r   r   r   r   r   divider    r   r   r   r    s   

r  c                 C   s   t | ttfst| } t |ttfst|}tt| dt| t|dt|t}t| |} t||}t	|dktj
d|dt| |S )Nr   r   rP   )r   r   r   r   r   r   r   r   r   r   r   r  r    r   r   r   divide_no_nan  s   

$r  c                 C   r   r$   )r  r   r   r   r   true_divide  rY   r  c                 C   r   r   )
r   r   r   r   r   r   r   r   r   powerr    r   r   r   r    r#   r  c                 C   rW   r$   )r   negativer0   r   r   r   r     rY   r  c                 C   s*   t | } t| jdkr| d} t| S r   )r   r   r   r/   r   squarer0   r   r   r   r  $  s   

r  c                 C   r1  r2  )
r   r   r   r   rQ   r   r   r   r   sqrtrf   r   r   r   r  +  s   r  c                 C   r  rk   )r   r   squeezer   r   r   r   r  6  r  r  c                 C   s$   t |tr	t|n|}tj| |dS r  )r   r5   rR  r   	transpose)r'   r   r   r   r   r  ;  s   r        ?c                 C   sF   t | } t| jt}|d urt |}t |}tj| |||d|S )N)dxrD   )r   r   r   r   r   r   	trapezoidr/   )r   r'   r  rD   r<   r   r   r   r  @  s   r  c                 C   sD   t |}t| } t| jd}t| jt}tj| |||d|S )Nr-   r_  )	r   r   r   r   r   r   r   varr/   )r'   rD   rE   r2   r<   r   r   r   r  I  s   r  c                 C   sB   t |}t| j}|dv rd}n|dv rd}tj| ||d|S )Nr]  r+   r^  r   rC   )r   r   r   r   sumr/   rB  r   r   r   r  S  s   
r  c                 C   r  r  )r   rQ   r   eyer  r   r   r   r  ^  r  r  c                 C   r   r   )
r   r   r   r   r   r   r   r   r   floor_divider    r   r   r   r  c  s   

r  c                 C   r   r$   )r   logical_xorr   r   r   r   r  p  r   r  c                 C   sB   | j dv rd}n| j dv r| j }nt }t| } t| |S r   )r   r   rQ   r   r   corrcoefr/   rf   r   r   r   r  t  s   

r  validc                 C   s`   t t| dt| t|dt|}|dkrd}n|dvrd}t| |} t||}t| ||S )Nr   rd   r   )r,   r   r   r-   )r   r   r   r   r   r   	correlate)r!   r"   rZ  r   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j| S r$   )rR  r   linalgslogdetr0   r   r   r   r    r   r  c                 C   s   t | ||dS )Nr+   )r   argpartitionr/   )r'   kthrD   r   r   r   r    r   r  c                 C   r   )N)r   range)r   	histogram)r'   r   r  r   r   r   r    r   r  )r	   r
   )NF)NFNr$   )NNN)r   )NN)Nr   F)r   )r   r   r   N)r   r   r	   )r	   r   )r  r  F)FF)r,  TFNr   )r,  Tr=  Nr   )r}   NN)rX  N)Nra  F)ro  )r   )Nr   N)Nr  r   )r  )r=  N)numpyr   	keras.srcr   keras.src.backendr   r   keras.src.backend.commonr   &keras.src.backend.common.backend_utilsr   keras.src.backend.numpy.corer   r   r   r7   r=   r>   rA   rF   rK   rR   rV   rX   r[   r_   re   rh   ri   rj   rm   ro   rr   rs   rt   ru   rv   rx   rz   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   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+  r0  r3  r5  r6  r7  r8  r9  r:  r;  r<  r?  r@  rA  rE  rF  rG  rH  rK  rO  r   rS  rT  rU  rV  rW  r[  r`  rc  re  rf  rg  rh  ri  rk  rm  rr  rv  r   rw  rx  ry  rz  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   r   r   <module>   s|   






	
			




	




		

		


		
	
