
    &Vfx                        d dl Z d dlZd dlmc 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  ej        dd          d             ZddZd Z ej        dd          d             Zd Zd ZddZddZddZ ddZ! ej"        d          d             Z#d Z$ddZ%ddZ&ddZ'ddZ(ddZ)dd!Z*ej+        d"             Z,ej+        d#             Z- ej"        d          d$             Z. ej"        d          d%             Z/ ej"        d          d&             Z0d' Z1 ej"        d          d(             Z2dd)Z3dd*Z4dd,Z5dd-Z6dd.Z7d/ Z8 ej"        d          d0             Z9d1 Z:dd2Z; ej"        d          d3             Z< ej"        d          d4             Z= ej"        d          d5             Z>ej+        d6             Z?ej+        d7             Z@dd8ZAdd9ZBdd:ZCdd;ZDdd<ZEdd=ZFdd>ZG ej"        d          d?             ZHd@ ZIddAZJdB ZKej+        dC             ZLdD ZM ej"        d          dE             ZNddFZO ej"        d          dG             ZPddHZQddIZRdJ ZSdK ZTdL ZUddMZV ej"        d          dN             ZWdO ZXej+        dP             ZY ej"        d          dQ             ZZ ej"        d          dR             Z[dS Z\dT Z]	 ddVZ^ej+        dW             Z_ej+        dX             Z` ej"        d          dY             Zaej+        dZ             Zbd[ Zcd\ Zdd] Zed^ Zfdd`Zg ej        dd          da             ZhddbZidcdddeZjddfZk ej        dd          dg             Zldh Zmdi ZnddkZodl Zpdm Zqdn ZrddoZsddpZtdq ZuddsZvddtZwddvZxdw Zy ej"        d          dx             Zzej+        dy             Z{ddzZ|d{ Z}dd|Z~ ej"        d          d}             Z ej"        d          d~             Z ej"        d          d             Zd ZddZddZddZddZd ZddZddZ ej"        d          d             Z ej"        d          d             ZddZ ej"        d          dd            Zd ZddZddZddZddZd Zd ZddddZd Zej        d             Zd Zd Zd Z ej"        d          d             Z ej"        d          d             Z ej"        d          d             ZddZddZddZddZddZd Zd ZddZddZd ZdS )    N)config)dtypes)canonicalize_axis)to_tuple_or_list)standardize_dtype)nnsparse)castconvert_to_tensorT)linearuse_sparsifyc                 h    t          |           } t          |          }t          j        | |          S N)r   jnpaddx1x2s     X/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/backend/jax/numpy.pyr   r      s,    	2		B	2		B72r??    Fc           	         |st          | t          j                  r6t          | t          j                  r|~t          |t          j                  st          d          | j        |j        ur@t          j        t          j        | j        |j                            st          d          |j        }| j        } t          | j
                  dk    rdnd}t          j        t          j        |           dz             }t          j        | |d          }|t          j        ||dz             }||z  }t          j        ||f          }|S t          | j
                  dk    ri|#fd	}	t#          t%          |	|                     }
n0fd
}	t#          t%          |	t'          | |                              }
t          j        |
          S t          j        | |          S )Nz$`x` and `weights` must both be BCOOsz2`x` and `weights` BCOOs must have the same indices   r   Tr	   axes   c                 0    t          j        |           S )N)	minlengthr   bincount)arrr   s    r   bincount_fnzbincount.<locals>.bincount_fn8   s    |C9====r   c                 J    t          j        | d         | d                   S )Nr   r   weightsr   r    )arr_wr   s    r   r#   zbincount.<locals>.bincount_fn>   s+    |!HeAh)   r   r%   )
isinstance
jax_sparseBCOO
ValueErrorindicesr   allequaldatalenshapemaximummaxr   one_hotexpand_dimsbcoo_reduce_sumlistmapzipstackr!   )xr&   r   r
   reduction_axis	maxlengthone_hot_encodingexpanded_weightsoutputsr#   	bincountss     `        r   r!   r!      s      Az// a)) 	"!':?;; M$%KLLL9GO33739QY#H#HII (P   ",A!!'llQ..AK

Q	::	:a4@@@"w8JKK/2BB, "
 
 
 
17||q?> > > > > Sa0011II    
 Sc!Woo>>??Iy###<7i@@@@r   c                     d |D             }t          t          d |D                                 }t          |          dk    r|d         dk    rd}nd }||d<   t          j        | g|R i |S )Nc                 ,    g | ]}t          |          S  r   .0r;   s     r   
<listcomp>zeinsum.<locals>.<listcomp>J   s!    777!!$$777r   c              3   >   K   | ]}t          |j                  V  d S r   )r   dtyperE   s     r   	<genexpr>zeinsum.<locals>.<genexpr>M   s-      CCQ'00CCCCCCr   r   r   int8int32preferred_element_type)r7   setr0   r   einsum)
subscriptsoperandskwargsr   rM   s        r   rO   rO   I   s    77h777H #CC(CCCCCDDF
6{{aF1I//!(!%'=F#$:j68666v666r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   subtractr   s     r   rT   rT   V   s.    	2		B	2		B<Br   c                    t          |           } t          |          }t          | j                  }t          |j                  }|dk    r	|dk    rd}nd }t          | t          j                  st          |t          j                  rt          t          d          s(t	          j        t          j                  t          _
        t          | t          j                  r,t	          j        | t          | j                  dz
  d          } t          |t          j                  r,t	          j        |t          |j                  dz
  d          }t          
                    | ||          S t          j        | ||          S )NrK   rL   sparse_matmulr   warn)n_batchon_inefficient)rM   )r   r   rI   r(   r)   	JAXSparsehasattrmatmulsparsifyr   rV   r*   bcoo_update_layoutr0   r1   )r   r   x1_dtypex2_dtyperM   s        r   r\   r\   ]   sy   	2		B	2		B !**H **H6h&00!(!%"j*++ 
z
J 0 0 
 v// 	C#-#6sz#B#BF b*/** 	.CMMA-f  B b*/** 	.CMMA-f  B ##+A $ 
 
 	
 :b"5KLLLLr   c                 6   t          |           } t          |          }t          | t          j                  rt          |t          j                  r| j        |j        u rp| j        s(t          j        |           } t          j        |          }t          j        t          j        | j	        |j	                  | j        f| j
        dd          S t          j        | |          S t          j        | |          }t          j        || j        f| j
        | j        | j                  S t          |t          j                  rCt          j        ||           }t          j        ||j        f|j
        |j        |j                  S t          j        | |          S )NT)r1   indices_sortedunique_indices)r   r(   r)   r*   r,   rc   bcoo_sum_duplicatesr   multiplyr/   r1   bcoo_multiply_sparsebcoo_multiply_denserb   )r   r   out_datas      r   re   re   |   s   	2		B	2		B"jo&& "
b*/** 	zRZ'' ( <#7;;B#7;;B!\"'2733RZ@(#'#'	    "6r2>>> "5b"==H?2:&h!0!0	    
B
	(	( 
1"b99rz"(,,	
 
 
 	
 <Br   c                     t                      t           j                  }t          j         j        d          }d|v s|dk    r|}n|}t           t          j                  r|.t          t          t           j                                      }t          j        | j        d          \  }}}t          j         fd|D                       }	t          j         |          }
t          j        |
j                            |          |	z  |
j        f|
j                  }
|rt          j        |
||	          }
|
S t+          j         |||
          }
t/          |
|          S )Nfloat32intboolFinsert_dimsc              3   2   K   | ]}j         |         V  d S r   r1   )rF   ir;   s     r   rJ   zmean.<locals>.<genexpr>   s)      ??1AGAJ??????r   r   rp   r1   broadcast_dimensionsaxiskeepdimsrI   )r   r   rI   r   result_typer(   r)   r*   tupleranger0   r1   r
   $axis_shape_dims_for_broadcast_in_dimmathprodr6   r/   astyper,   bcoo_broadcast_in_dimr   meanr   )r;   ru   rv   	ori_dtypecompute_dtyperesult_dtypecanonical_axiskeep_dims_shapers   divisoroutputs   `          r   r   r      s   !A!!'**I &qw	::M	Y&00$ !Z_%% *<s17||,,--D
 7!'u
 
 
		
  )?????????+ANCCC[--7H,
 
 
  	  5%%9  F
 !$OOOFL)))r   c                 P    t          |           } t          j        | |||          S N)ru   rv   initial)r   r   r3   r;   ru   rv   r   s       r   r3   r3      (    !A714(GDDDDr   c                 X    |pt          j                    }t          j        | |          S N)rI   )r   floatxr   onesr1   rI   s     r   r   r      s'    $V]__E8E''''r   c                 X    |pt          j                    }t          j        | |          S r   )r   r   r   zerosr   s     r   r   r      '    $V]__E9U%((((r   )r   c                 H    t          |           } t          j        |           S r   )r   r   absoluter;   s    r   r   r          !A<??r   c                      t          |           S r   )r   r   s    r   absr      s    A;;r   c                 0    t          j        | ||          S Nru   rv   )r   r-   r;   ru   rv   s      r   r-   r-          714(3333r   c                 0    t          j        | ||          S r   )r   anyr   s      r   r   r      r   r   c                 0    t          j        | ||          S r   )r   amaxr   s      r   r   r          8AD84444r   c                 0    t          j        | ||          S r   )r   aminr   s      r   r   r      r   r   c                 l    t          |           } t          |          }t          j        | ||          S Nru   )r   r   append)r   r   ru   s      r   r   r      s3    	2		B	2		B:b"4((((r   r   c           	      N   |}t          | dt          |                     t          |dt          |                    g}|1|                    t          |dt          |                               t          j        | }t          |          }t          j        | |||          S )NrI   )steprI   )getattrtyper   r   rw   r   r   arange)startstopr   rI   dtypes_to_resolves        r   r   r      s    }E7DKK00D'4::..
 $$WT7DJJ%G%GHHH"$56e$$E:eTE::::r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S Nint64)r   r   rI   r   r   r   rw   floatr   r   arccosr;   rI   s     r   r   r   	  `    !A!!W,,"17E22QA:a==r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S r   )r   r   rI   r   r   r   rw   r   r   r   arccoshr   s     r   r   r     `    !A!!W,,"17E22QA;q>>r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S r   )r   r   rI   r   r   r   rw   r   r   r   arcsinr   s     r   r   r     r   r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S r   )r   r   rI   r   r   r   rw   r   r   r   arcsinhr   s     r   r   r   *  r   r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S r   )r   r   rI   r   r   r   rw   r   r   r   arctanr   s     r   r   r   5  r   r   c                     t          |           } t          |          }t          j        | j        |j        t                    }t          | |          } t          ||          }t          j        | |          S r   )r   r   rw   rI   r   r   r   arctan2r   r   rI   s      r   r   r   @  s`    	2		B	2		Brx599E	b%B	b%B;r2r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S r   )r   r   rI   r   r   r   rw   r   r   r   arctanhr   s     r   r   r   I  r   r   c                 0    t          j        | ||          S r   )r   argmaxr   s      r   r   r   T      :adX6666r   c                 0    t          j        | ||          S r   )r   argminr   s      r   r   r   X  r   r   c                     t          |           } | j        dk    rt          j        | d           S t          j        | |          S )Nr   r   )r   ndimr   argsortr;   ru   s     r   r   r   \  sD    !Av{{{14((((;qt$$$$r   c                 .    t          j        | |          S r   )r   arrayr   s     r   r   r   c  s    9Qe$$$$r   c                     t          |           } | j        t          g}|)t          |          }|                    |j                   t	          j        | }t          | |          } |t          ||          }t          j        | ||          S )N)r&   ru   )	r   rI   r   r   r   rw   r   r   average)r;   ru   r&   r   rI   s        r   r   r   g  s    !A%(#G,,  /// 12EQAw&&;q'5555r   c                 J    t          |           } t          j        | |          S r   )r   r   broadcast_to)r;   r1   s     r   r   r   t  s"    !AAu%%%r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          t          j
        |           |          S r   )r   r   rI   r   r   r   rw   r   r   r   ceilr   s     r   r   r   y  s]    !A!!W,,"17E22U###r   c                     t          |           } t          | j                  dk    rt          | d          } t	          j        | ||          S )Nrl   rL   )r   r   rI   r   r   clip)r;   x_minx_maxs      r   r   r     sG    !A!!V++G8Aue$$$r   c                 (   t          j        d | D                       }|r]|t          |           k    r>t          |t          | d         j                            }t          j        | |          S d | D             } t          j        | |          S )Nc              3   J   K   | ]}t          |t          j                  V  d S r   )r(   r)   r*   rE   s     r   rJ   zconcatenate.<locals>.<genexpr>  s.      IIjJO<<IIIIIIr   r   )	dimensionc                 n    g | ]2}t          |t          j                  r|                                n|3S rD   )r(   r)   rZ   todenserE   s     r   rG   zconcatenate.<locals>.<listcomp>  sF         *!Z-ABBI		  r   r   )	builtinssumr0   r   r1   r)   bcoo_concatenater   concatenate)xsru   
bcoo_counts      r   r   r     s    IIbIIIIIJ R  $T3r!u{+;+;<<D.rTBBBB   B ?2D))))r   c                 H    t          |           } t          j        |           S r   r   r   	conjugater   s    r   r   r         !A=r   c                 H    t          |           } t          j        |           S r   r   r   s    r   conjr     r   r   c                 H    t          |           } t          j        |           S r   )r   r   copyr   s    r   r   r         !A8A;;r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S r   )r   r   rI   r   r   r   rw   r   r   r   cosr   s     r   r   r     `    !A!!W,,"17E22QA71::r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S r   )r   r   rI   r   r   r   rw   r   r   r   coshr   s     r   r   r     `    !A!!W,,"17E22QA8A;;r   c                 J    t          t          j        | |          d          S )Nr   rL   )r   r   count_nonzeror   s     r   r   r     s"    !!$///999r   c                 r    t          |           } t          |          }t          j        | |||||          S )N)axisaaxisbaxiscru   )r   r   cross)r   r   r   r   r   ru   s         r   r   r     sG    	2		B	2		B9

   r   c                 N    t          |           } t          j        | ||          S N)ru   rI   )r   r   cumprodr;   ru   rI   s      r   r   r     s&    !A;qt51111r   c                 N    t          |           } t          j        | ||          S r   )r   r   cumsumr  s      r   r  r    s&    !A:ad%0000r   c                 L    t          |           } t          j        | |          S N)k)r   r   diagr;   r  s     r   r  r    $    !A8Ar   c                 P    t          |           } t          j        | |||          S )N)offsetaxis1axis2)r   r   diagonal)r;   r  r  r  s       r   r  r    s4    !A<		   r   c                 N    t          |           } t          j        | ||          S )N)nru   )r   r   diff)ar  ru   s      r   r  r    s&    !A8A&&&&r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   digitize)r;   binss     r   r  r    s.    !AT""D<4   r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   dot)r;   ys     r   r  r    s,    !A!A71a==r   c                 X    |pt          j                    }t          j        | |          S r   )r   r   r   emptyr   s     r   r  r    r   r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   r.   r   s     r   r.   r.     .    	2		B	2		B9Rr   c                     t          |           } t          | j                  }d|v s|dk    r!t          | t	          j                              } t          j        |           S Nrk   rl   )r   r   rI   r   r   r   r   expr;   r   s     r   r  r    sV    !A!!'**I	Y&00FMOO$$71::r   c                     t          |           } t          | t          j                  r7t	          j        || j        d          \  }}}t          j        | ||          S t          j	        | |          S )NTrm   rr   )
r   r(   r)   r*   r
   rz   r1   r~   r   r5   )r;   ru   _result_shapers   s        r   r5   r5     s    !A!Z_%% 


 7!'t
 
 
		
  /\8L
 
 
 	
 ?1d###r   c                     t          |           } t          | j                  }d|v s|dk    r!t          | t	          j                              } t          j        |           S r  )r   r   rI   r   r   r   r   expm1r   s     r   r%  r%     sV    !A!!'**I	Y&00FMOO$$9Q<<r   c                 .    t          j        | |          S r   )r   flipr   s     r   r'  r'  )  s    8AD!!!!r   c                     t          |           } t          | j                  dk    r!t          | t	          j                              } t          j        |           S r   )r   r   rI   r   r   r   r   floorr   s    r   r)  r)  -  G    !A!!W,,FMOO$$9Q<<r   c                 Z    |pt          j                    }t          j        | ||          S r   )r   r   r   full)r1   
fill_valuerI   s      r   r,  r,  5  s)    $V]__E8E:U3333r   c                 0    t          j        | ||          S r   )r   	full_like)r;   r-  rI   s      r   r/  r/  :  s    =Je4444r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   greaterr   s     r   r1  r1  >  .    	2		B	2		B;r2r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   greater_equalr   s     r   r4  r4  D  s/    	2		B	2		BR$$$r   c                 *    t          j        |           S r   )r   hstackr   s    r   r6  r6  J      :b>>r   c                 X    |pt          j                    }t          j        | |          S r   )r   r   r   identity)r  rI   s     r   r:  r:  N  s'    $V]__E<''''r   c                 H    t          |           } t          j        |           S r   )r   r   imagr   s    r   r<  r<  S  r   r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   iscloser   s     r   r>  r>  Y  r2  r   c                 H    t          |           } t          j        |           S r   )r   r   isfiniter   s    r   r@  r@  _  r   r   c                 H    t          |           } t          j        |           S r   )r   r   isinfr   s    r   rB  rB  e      !A9Q<<r   c                 H    t          |           } t          j        |           S r   )r   r   isnanr   s    r   rE  rE  k  rC  r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   lessr   s     r   rG  rG  q  .    	2		B	2		B8Br   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   
less_equalr   s     r   rJ  rJ  w  .    	2		B	2		B>"b!!!r   2   c           	      8    t          j        | ||||||          S )N)numendpointretsteprI   ru   )r   linspace)r   r   rN  rO  rP  rI   ru   s          r   rQ  rQ  }  s2     <   r   c                     t          |           } t          | j                  dk    r!t          | t	          j                              } t          j        |           S r   )r   r   rI   r   r   r   r   logr   s    r   rS  rS    sG    !A!!W,,FMOO$$71::r   c                     t          |           } t          | j                  dk    r!t          | t	          j                              } t          j        |           S r   )r   r   rI   r   r   r   r   log10r   s    r   rU  rU    r*  r   c                     t          |           } t          | j                  dk    r!t          | t	          j                              } t          j        |           S r   )r   r   rI   r   r   r   r   log1pr   s    r   rW  rW    r*  r   c                     t          |           } t          | j                  dk    r!t          | t	          j                              } t          j        |           S r   )r   r   rI   r   r   r   r   log2r   s    r   rY  rY    G    !A!!W,,FMOO$$8A;;r   c                     t          |           } t          |          }t          j        | j        |j        t                    }t          | |          } t          ||          }t          j        | |          S r   )r   r   rw   rI   r   r   r   	logaddexpr   s      r   r\  r\    s`    	2		B	2		Brx599E	b%B	b%B=R   r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   logical_andr   s     r   r^  r^    .    	2		B	2		B?2r"""r   c                 H    t          |           } t          j        |           S r   )r   r   logical_notr   s    r   ra  ra    s    !A?1r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   
logical_orr   s     r   rc  rc    rK  r   
   c           	      8    t          j        | ||||||          S )N)rN  rO  baserI   ru   )r   logspace)r   r   rN  rO  rf  rI   ru   s          r   rg  rg    s0    <   r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   r2   r   s     r   r2   r2     .    	2		B	2		B;r2r   c                    t          |t                    rt          |          }t          |           } t	          | j                  dk    r!t          | t          j                              } t          j
        | ||          }|du r8|6|j        | j        k     r&t          j        |d          }|j        | j        k     &|S )Nr   r   Tr   r   )r(   r7   rx   r   r   rI   r   r   r   r   medianr   r5   )r;   ru   rv   results       r   rk  rk    s    $ T{{!A!!W,,FMOO$$Zx888F 4DLkAF""_V"555F kAF""Mr   xy)indexingc                 $    t          j        |d| iS )Nrn  )r   meshgrid)rn  r;   s     r   rp  rp    s    <.X...r   c                 P    t          |           } t          j        | |||          S r   )r   r   minr   s       r   rr  rr    r   r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   minimumr   s     r   rt  rt    ri  r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   modr   s     r   rv  rv    s,    	2		B	2		B72r??r   c                 0    t          j        | ||          S )N)sourcedestination)r   moveaxis)r;   rx  ry  s      r   rz  rz    s    <&kBBBBr           c                 P    t          |           } t          j        | |||          S )N)nanposinfneginf)r   r   
nan_to_num)r;   r}  r~  r  s       r   r  r    s(    !A>!VFCCCCr   c                 *    t          j        |           S r   )r   r   r   s    r   r   r         8A;;r   c                 *    t          j        |           S r   )r   nonzeror   s    r   r  r    s    ;q>>r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   	not_equalr   s     r   r  r    s.    	2		B	2		B=R   r   c                 .    t          j        | |          S r   )r   	ones_liker   s     r   r  r    s    =%((((r   c                 .    t          j        | |          S r   )r   
zeros_liker   s     r   r  r    s    >!5))))r   c                 ,    t          j        | |          S r   )r   outerr   s     r   r  r    s    9Rr   constantc                     t          |           } i }||dk    rt          d|           ||d<   t          j        | |fd|i|S )Nr  zZArgument `constant_values` can only be provided when `mode == 'constant'`. Received: mode=constant_valuesmode)r   r+   r   pad)r;   	pad_widthr  r  rR   s        r   r  r  "  su    !AF":)"&) )  
 %4 !71i55d5f555r   c                 P    t          |           } t          j        | |||          S )Nrt   )r   r   r|   )r;   ru   rv   rI   s       r   r|   r|   0  s(    !A8AD85AAAAr   r   c                    t          |           } t          |          }t          | j                  dk    r!t          | t	          j                              } t          j        | ||||          }|du rR|P| j        t          |j
                  dk    rdndz   }|j        |k     r!t          j        |d          }|j        |k     !|S )Nr   )ru   methodrv   Tr   r   r   r   )r   r   rI   r   r   r   r   quantiler   r0   r1   r5   )r;   qru   r  rv   rl  result_ndims          r   r  r  5  s    !A!A!!W,,FMOO$$\!QT&8LLLF 4DLfS\\A%5%51=kK''_V"555F kK''Mr   c                 H    t          |           } t          j        |           S r   )r   r   ravelr   s    r   r  r  E  s    !A9Q<<r   c                 H    t          |           } t          j        |           S r   )r   r   realr   s    r   r  r  J  r   r   c                 H    t          |           } t          j        |           S r   )r   r   
reciprocalr   s    r   r  r  P  s    !A>!r   c                 N    t          |           } t          j        | ||          S r   )r   r   repeat)r;   repeatsru   s      r   r  r  V  s&    !A:at,,,,r   c                     t          | t          j                  r>ddlm} |                    | j        |d          }d |vr|}t          j        | |          S t          j	        | |          S )Nr   )operation_utils	new_shape)	new_sizes)
r(   r)   r*   keras.src.opsr  compute_reshape_output_shaper1   bcoo_reshaper   reshape)r;   newshaper  output_shapes       r   r  r  [  s    !Z_%% 	>111111 'CCGX{
 
 |###H&qH====;q(###r   c                 0    t          j        | ||          S r   )r   roll)r;   shiftru   s      r   r  r  i  s    8Au4((((r   c                 H    t          |           } t          j        |           S r   )r   r   signr   s    r   r  r  m  r   r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S r   )r   r   rI   r   r   r   rw   r   r   r   sinr   s     r   r  r  s  r   r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S r   )r   r   rI   r   r   r   rw   r   r   r   sinhr   s     r   r  r  ~  r   r   c                 *    t          j        |           S r   )r   sizer   s    r   r  r    r  r   c                 L    t          |           } t          j        | |          S r   )r   r   sortr   s     r   r  r    s$    !A8AD!!!!r   c                 0    t          j        | ||          S r   )r   split)r;   indices_or_sectionsru   s      r   r  r    s    9Q+$7777r   c                 .    t          j        | |          S r   )r   r:   r   s     r   r:   r:     s    9QT""""r   c                     t          |           } t          | j                  dk    r!t          | t	          j                              } t          j        | ||          S )Nr   r   )r   r   rI   r   r   r   r   stdr   s      r   r  r    sP    !A!!W,,FMOO$$714(3333r   c                 N    t          |           } t          j        | ||          S )N)r  r  )r   r   swapaxes)r;   r  r  s      r   r  r    s&    !A<e4444r   c                 p    t          |           } t          |d          }t          j        | ||          S )NFr	   r   )r   r   taker;   r,   ru   s      r   r  r    s8    !A666G8AwT****r   c                 0    t          j        | ||          S r   )r   take_along_axisr  s      r   r  r    s    q'5555r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S r   )r   r   rI   r   r   r   rw   r   r   r   tanr   s     r   r  r    r   r   c                     t          |           } t          | j                  dk    rt          j                    }nt          j        | j        t                    }t          | |          } t          j
        |           S r   )r   r   rI   r   r   r   rw   r   r   r   tanhr   s     r   r  r    r   r   r   c                 l    t          |           } t          |          }t          j        | ||          S )Nr   )r   r   	tensordot)r   r   r   s      r   r  r    s3    	2		B	2		B=Rd++++r   c                    t          |           } t          | j                  }d|v r|dk     rt          t	          j        d|          t          j                              }t          | t          j                              } t          j	        | |          } t          j
        |           } t          j        | |          } t          | |          S t          j
        | |          S )Nrk   r   rd  )decimals)r   r   rI   r   r{   powr   r   r   re   rounddivide)r;   r  x_dtypefactors       r   r  r    s    !A  ((GHqLLdhr8,,fmoo>>FMOO$$LF##IaLLJq&!!AwyX....r   c                 ,    t          j        | |          S r   )r   tile)r;   r  s     r   r  r    s    8Awr   c                     t          |           } d }t          | j                  dk    rd}t          j        | ||||          S )Nrl   rL   )r  r  r  rI   )r   r   rI   r   trace)r;   r  r  r  rI   s        r   r  r    sI    !AE!!V++9QvU%uMMMMr   c                 \    |pt          j                    }t          j        | |||          S N)Mr  rI   )r   r   r   triNr  r  rI   s       r   r  r    +    $V]__E71Qe,,,,r   c                 L    t          |           } t          j        | |          S r  )r   r   trilr  s     r   r  r    r	  r   c                 L    t          |           } t          j        | |          S r  )r   r   triur  s     r   r  r    r	  r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   vdotr   s     r   r  r    rH  r   c                 *    t          j        |           S r   )r   vstackr7  s    r   r  r    r8  r   excluded	signaturec                P    |t                      }t          j        | ||          S )Nr  )rN   r   	vectorize)pyfuncr  r  s      r   r  r    s(    55=(iHHHHr   c                 .    t          j        | ||          S r   )r   where)	conditionr   r   s      r   r  r    s    9YB'''r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   r  r   s     r   r  r    s.    	2		B	2		B:b"r   c                     t          |           } t          |          }t          j        |dk    dt          j        | |                    S )Nr   )r   r   r  r  r   s     r   divide_no_nanr    s@    	2		B	2		B9R1WaB!3!3444r   c                 "    t          | |          S r   )r  r   s     r   true_divider    s    "b>>r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   powerr   s     r   r  r    r  r   c                 H    t          |           } t          j        |           S r   )r   r   negativer   s    r   r  r  #  r   r   c                 H    t          |           } t          j        |           S r   )r   r   squarer   s    r   r  r  )  s    !A:a==r   c                     t          |           } t          | j                  dk    r!t          | t	          j                              } t          j        |           S r   )r   r   rI   r   r   r   r   sqrtr   s    r   r  r  /  rZ  r   c                    t          | t          j                  rR|+t          d t	          | j                  D                       }t          |          }t          j        | |          S t          j	        | |          S )Nc              3   ,   K   | ]\  }}|d k    |V  dS )r   NrD   )rF   rq   ds      r   rJ   zsqueeze.<locals>.<genexpr>:  s*      DDtq!Q!VVVVVVDDr   )
dimensionsr   )
r(   r)   r*   rx   	enumerater1   r   bcoo_squeezer   squeezer   s     r   r  r  7  sy    !Z_%% ;<DDy'9'9DDDDDD%%&qT::::;qt$$$$r   c                 |   t          |           } t          | t          j                  r~t	          | j                  }|&t          t          |          d d d                   }n,g }|D ]'}t          ||          }|	                    |           (t          j
        | |          S t          j        | |          S )Nr   )permutationr   )r   r(   r)   r*   r0   r1   rx   ry   r   r   bcoo_transposer   	transpose)r;   r   num_dimsr  r  s        r   r  r  @  s    !A!Z_%% 	Eqw<<<h" 566KKK & &%a22""1%%%%(DDDD=&&&&r   c                     t          |           } t          j        | j        d          }t          j        | j        t                    }t          t          j        | |||          |          S )Nrj   rt   )r   r   rw   rI   r   r   r   var)r;   ru   rv   r   r   s        r   r	  r	  O  sd    !A &qw	::M%agu55Lx}EEE  r   c                    t          |           } t          | t          j                  r|.t	          t          t          | j                                      }t          j	        || j        d          \  }}}t          j
        | |          }|rt          j        |||          }|S t          j        | ||          S )NFrm   r   rr   r   )r   r(   r)   r*   rx   ry   r0   r1   r
   rz   r6   r~   r   r   )r;   ru   rv   r   r   rs   r   s          r   r   r   [  s    !A!Z_%% <s17||,,--D
 7!'u
 
 
		
  +ANCCC 	  5%%9  F
 714(3333r   c                 \    |pt          j                    }t          j        | |||          S r  )r   r   r   eyer  s       r   r  r  t  r  r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   floor_divider   s     r   r  r  y  s/    	2		B	2		BB###r   c                 h    t          |           } t          |          }t          j        | |          S r   )r   r   logical_xorr   s     r   r  r    r_  r   validc                 j    t          |           } t          |          }t          j        | ||          S r   )r   r   	correlate)r   r   r  s      r   r  r    s0    	2		B	2		B=R&&&r   c                 0    t          j        | ||          S )N)default)r   select)condlist
choicelistr  s      r   r  r    s    :h
G<<<<r   c                 x    t          |           } t          t          j                            |                     S r   )r   rx   r   linalgslogdetr   s    r   r  r    s-    !A##A&&'''r   )Nr   F)NF)NFNr   )Nr   N)r   )NN)r   )r   r   r   N)r   r   r   )r   r   )rL  TFNr   )rL  Trd  Nr   )r{  NN)r  N)Nr   F)r   )Nr   N)r  )r   r{   jax.experimental.sparseexperimentalr
   r)   	jax.numpynumpyr   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   elementwise_binary_unionr   r!   rO   rT   r\   re   r   r3   r   r   elementwise_unaryr   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  r5   r%  r'  r)  r,  r/  r1  r4  r6  r:  r<  r>  r@  rB  rE  rG  rJ  rQ  rS  rU  rW  rY  r\  r^  ra  rc  rg  r2   rk  rp  rr  rt  rv  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  elementwise_divisionr  r  r  r  r  r  r  r  r  r	  r   r  r  r  r  r  r  rD   r   r   <module>r*     s     , , , , , , , , ,       $ $ $ $ $ $ + + + + + + D D D D D D C C C C C C @ @ @ @ @ @ $ $ $ $ $ $ ( ( ( ( ( ( + + + + + + 8 8 8 8 8 8 ! 4@@@  A@-A -A -A -A`
7 
7 
7 ! 4@@@    A@ M M M>&  &  & R%* %* %* %*PE E E E
( ( ( (
) ) ) )
 '''  ('
  4 4 4 44 4 4 45 5 5 55 5 5 5) ) ) )
; 
; 
; 
;       '''  (' '''  (' '''  ('   '''  ('7 7 7 77 7 7 7% % % %% % % %
6 
6 
6 
6& & &
 '''$ $ ('$% % %* * * * &&&  '&
 &&&  '&
 &&&  '&
      : : : :
 
 
 
2 2 2 2
1 1 1 1
   
   ' ' ' '
 '''! ! ('!  ) ) ) )
     $ $ $  '''  ('" " " " '''  ('4 4 4 4
5 5 5 5  % % %  ( ( ( (
 &&&  '&
     
 '''  ('
 '''  ('
  " " " IJ          '''  ('   ! ! !# # #  
" " "	 	 	 	 ! EBBB  CB   "  / / / / /E E E E
 ! EBBB  CB  C C CD D D D
    ! ! !) ) ) )* * * *  6 6 6 6B B B B
      
 &&&  '&
   
- - - -
$ $ $) ) ) ) '''  ('
 '''  (' '''  ('  " " " "
8 8 8 8# # # #4 4 4 45 5 5
+ + + +6 6 6 6 '''  (' '''  (', , , , '''/ / / ('/      N N N N- - - -
   
   
     #'$ I I I I I( ( (   5 5 5     &&&  '&
 '''  ('
 '''  ('% % % %' ' ' '	 	 	 	4 4 4 42- - - -
$ $ $# # #' ' ' '= = = =( ( ( ( (r   