
    2Vhk                        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 ddZ ej0                  dd      d        Zd Zd ZddZd Z ej0                  dd      d        Zd Zd Z ddZ!ddZ"ddZ#ddZ$ ejJ                  d      d        Z&d Z'ddZ(d Z)dd Z*dd!Z+dd"Z,dd#Z-dd$Z.ej^                  d%        Z0ej^                  d&        Z1 ejJ                  d      d'        Z2 ejJ                  d      d(        Z3 ejJ                  d      d)        Z4d* Z5 ejJ                  d      d+        Z6dd,Z7dd-Z8dd.Z9dd/Z:dd0Z;d1 Z<d2 Z=d3 Z>d4 Z?d5 Z@d6 ZAd7 ZBd8 ZCd9 ZDd: ZEd; ZF ejJ                  d      d<        ZGd= ZHdd>ZI ejJ                  d      d?        ZJ ejJ                  d      d@        ZK ejJ                  d      dA        ZLej^                  dB        ZMej^                  dC        ZNddDZOddEZPddFZQddGZRddHZSddIZTddJZUddKZV ejJ                  d      dL        ZWdM ZXddNZYdO ZZej^                  dP        Z[ej^                  dQ        Z\dR Z] ejJ                  d      dS        Z^ddTZ_ ejJ                  d      dU        Z`ddVZaddWZbdX ZcdY ZddZ Zedd[Zf ejJ                  d      d\        Zgdd]Zhej^                  d^        Zi ejJ                  d      d_        Zj ejJ                  d      d`        Zkda Zldb Zm	 ddcZnej^                  dd        Zoej^                  de        Zp ejJ                  d      df        Zqej^                  dg        Zrdh Zsdi Ztdj Zudk ZvddlZw ej0                  dd      dm        ZxddnZydodpdqZzddrZ{ ej0                  dd      ds        Z|dt Z}du Z~ddvZdw Zdx Zdy ZddzZdd{Zd| Zdd}Zdd~ZddZd Zd Z ejJ                  d      d        Zej^                  d        ZddZd ZddZddZ ejJ                  d      d        Z ejJ                  d      d        Z ejJ                  d      d        Z ejJ                  d      d        Zd ZddZddZddZddZd ZddZddZ ejJ                  d      d        Z ejJ                  d      d        ZddZ ejJ                  d      dd       Zd ZddZddZddZddZd Zd Zd Zd ZddddZd ZejX                  d        Zd Zd Zd Z ejJ                  d      d        Z ejJ                  d      d        Z ejJ                  d      d        ZddZddZddZddZddZd Zd ZddZddZd ZddZd Zy)    N)config)dtypes)canonicalize_axis)to_tuple_or_list)standardize_dtype)nnsparse)cast)convert_to_tensorc                     | j                   dk  rt        d| j                          t        |      dk7  s|d   |d   k(  rt        d| d      t        j                  | ||      S )z5Rotate an array by 90 degrees in the specified plane.   zBInput array must have at least 2 dimensions. Received: array.ndim=r      zInvalid axes: z3. Axes must be a tuple of two different dimensions.)kaxes)ndim
ValueErrorlenjnprot90)arrayr   r   s      K/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/backend/jax/numpy.pyr   r      s|    zzA~$$)JJ<1
 	
 4yA~aDG+TF #( (
 	
 99Uad++    T)linearuse_sparsifyc                 Z    t        |       } t        |      }t        j                  | |      S N)r   r   addx1x2s     r   r   r   !   s&    	2	B	2	B772r?r   c                 B    t        |       } t        j                  |       S r   )r   r   bartlettxs    r   r#   r#   (       !A<<?r   c                 B    t        |       } t        j                  |       S r   )r   r   hammingr$   s    r   r(   r(   -   s    !A;;q>r   Fc           	         |st        | t        j                        rSt        | t        j                        r|t        |t        j                        st        d      | j                  |j                  urHt        j                  t        j                  | j                  |j                              st        d      |j                  }| j                  } t        | j                        dkD  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(  rV|fd	}	t#        t%        |	|             }
n$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 indicesr   r   Tr	   r   r   c                 2    t        j                  |       S )N)	minlengthr   bincount)arrr,   s    r   bincount_fnzbincount.<locals>.bincount_fnQ   s    ||C9==r   c                 @    t        j                  | d   | d         S )Nr   r   weightsr,   r-   )arr_wr,   s    r   r0   zbincount.<locals>.bincount_fnW   s#    ||!HeAh) r   r2   )
isinstance
jax_sparseBCOOr   indicesr   allequaldatar   shapemaximummaxr   one_hotexpand_dimsbcoo_reduce_sumlistmapzipstackr.   )r%   r3   r,   r
   reduction_axis	maxlengthone_hot_encodingexpanded_weightsoutputsr0   	bincountss     `        r   r.   r.   2   s    Az/a)"!':??;$%KLL99GOO377399QYY#HI(P  ",,A!!''lQ.AKK
Q	:	::a4@"w8JK/2BB,, "
 
177|q?> Sa01I
 Sc!Wo>?Iyy##<<7i@@r   c                     |D cg c]  }t        |       }}t        t        d |D                    }t        |      dk(  r|d   dk(  rd}nd }||d<   t	        j
                  | g|i |S c c}w )Nc              3   F   K   | ]  }t        |j                          y wr   )r   dtype.0r%   s     r   	<genexpr>zeinsum.<locals>.<genexpr>f   s     CQ'0Cs   !r   r   int8int32preferred_element_type)r   rB   setr   r   einsum)
subscriptsoperandskwargsr%   r   rT   s         r   rV   rV   b   s~    .67!!$7H7 #C(CCDF
6{aF1I/!(!%'=F#$::j686v66 8s   A-c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   subtractr   s     r   r[   r[   o   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        j                  | ||      S t        j                  | ||      S )NrR   rS   sparse_matmulr   warn)n_batchon_inefficient)rT   )r   r   rN   r5   r6   	JAXSparsehasattrmatmulsparsifyr   r]   r7   bcoo_update_layoutr   r<   )r    r!   x1_dtypex2_dtyperT   s        r   rc   rc   v   s2   	2	B	2	B !*H *H6h&0!(!%"j**+z
J  0 v/#-#6#6szz#BF b*//*..CMA-fB b*//*..CMA-fB ##+A $ 
 	
 ::b"5KLLr   c                    t        |       } t        |      }t        | t        j                        r.t        |t        j                        r| j                  |j                  u r| 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                        rYt        j                  ||       }t        j                  ||j                  f|j                  |j                  |j
                        S t        j                  | |      S )NT)r<   indices_sortedunique_indices)r   r5   r6   r7   r8   rj   bcoo_sum_duplicatesr   multiplyr;   r<   bcoo_multiply_sparsebcoo_multiply_denseri   )r    r!   out_datas      r   rl   rl      st   	2	B	2	B"joo&b*//*zzRZZ' ((#77;B#77;B!\\"''2773RZZ@((#'#'	  "66r2>> "55b"=H??2::&hh!00!00	  
B
	(11"b9rzz"((,,,,	
 	
 <<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"                  j%                  |      |	z  |
j&                  f|
j                        }
|rt        j(                  |
||	      }
|
S t+        j,                   |||
      }
t/        |
|      S )Nfloat32intboolFinsert_dimsc              3   <   K   | ]  }j                   |     y wr   r<   )rP   ir%   s     r   rQ   zmean.<locals>.<genexpr>   s     ?1AGGAJ?s   r*   rw   r<   broadcast_dimensionsaxiskeepdimsrN   )r   r   rN   r   result_typer5   r6   r7   tupleranger   r<   r
   $axis_shape_dims_for_broadcast_in_dimmathprodrA   r;   astyper8   bcoo_broadcast_in_dimr   meanr   )r%   r|   r}   	ori_dtypecompute_dtyperesult_dtypecanonical_axiskeep_dims_shaperz   divisoroutputs   `          r   r   r      sD   !A!!''*I &&qww	:M	Y&0$ !Z__%<s177|,-D
 77!''u
		
  ))???++ANC[[-7H,,
   55%%9F
 !$OFL))r   c                 J    t        |       } t        j                  | |||      S N)r|   r}   initial)r   r   r>   r%   r|   r}   r   s       r   r>   r>      !    !A7714(GDDr   c                 `    |xs t        j                         }t        j                  | |      S N)rN   )r   floatxr   onesr<   rN   s     r   r   r      s#    $V]]_E88E''r   c                 `    |xs t        j                         }t        j                  | |      S r   )r   r   r   zerosr   s     r   r   r      #    $V]]_E99U%((r   )r   c                 B    t        |       } t        j                  |       S r   )r   r   absoluter$   s    r   r   r          !A<<?r   c                     t        |       S r   )r   r$   s    r   absr      s    A;r   c                 2    t        j                  | ||      S Nr|   r}   )r   r9   r%   r|   r}   s      r   r9   r9          7714(33r   c                     t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        | |      } t        j                  |       S Nint64)r   r   rN   r   r   r   r~   floatr   r   angler%   rN   s     r   r   r     sW    !A!W,""177E2QA99Q<r   c                 2    t        j                  | ||      S r   )r   anyr   s      r   r   r     r   r   c                 2    t        j                  | ||      S r   )r   amaxr   s      r   r   r         88AD844r   c                 2    t        j                  | ||      S r   )r   aminr   s      r   r   r     r   r   c                 ^    t        |       } t        |      }t        j                  | ||      S Nr|   )r   r   append)r    r!   r|   s      r   r   r     s)    	2	B	2	B::b"4((r   c           	         |et        | dt        |             t        |dt        |            g}|%|j                  t        |dt        |                   t        j                  | }t        |      }t        j                  | |||      S )NrN   )steprN   )getattrtyper   r   r~   r   r   arange)startstopr   rN   dtypes_to_resolves        r   r   r     s    }E7DK0D'4:.
 $$WT7DJ%G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 r   )r   r   rN   r   r   r   r~   r   r   r   arccosr   s     r   r   r   ,  W    !A!W,""177E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   rN   r   r   r   r~   r   r   r   arccoshr   s     r   r   r   7  W    !A!W,""177E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   rN   r   r   r   r~   r   r   r   arcsinr   s     r   r   r   B  r   r   c                     t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        | |      } t        j                  |       S r   )r   r   rN   r   r   r   r~   r   r   r   arcsinhr   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   rN   r   r   r   r~   r   r   r   arctanr   s     r   r   r   X  r   r   c                     t        |       } t        |      }t        j                  | j                  |j                  t              }t        | |      } t        ||      }t        j                  | |      S r   )r   r   r~   rN   r   r   r   arctan2r    r!   rN   s      r   r   r   c  sY    	2	B	2	Brxx5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   rN   r   r   r   r~   r   r   r   arctanhr   s     r   r   r   l  r   r   c                    ddl m} t        |       } t        | j                        }d|vs |       r| j
                  dk(  rt        j                  | ||      S t        j                  |d      }t        | |      } | dk(  t        j                  |       z  }t        j                  |t        j                  | j                        j                   |       } t        j                  | ||      S Nr   )uses_cpur   r   rq           )keras.src.testing.test_caser   r   r   rN   r   r   argmaxr   r~   r   signbitwherefinfotinyr%   r|   r}   r   rN   is_negative_zeros         r   r   r   w      4!Aagg&Ee8:1zz!$:: ui0EQASCKKN2		"SYYqww%7%<%<$<a@A::adX66r   c                    ddl m} t        |       } t        | j                        }d|vs |       r| j
                  dk(  rt        j                  | ||      S t        j                  |d      }t        | |      } | dk(  t        j                  |       z  }t        j                  |t        j                  | j                        j                   |       } t        j                  | ||      S r   )r   r   r   r   rN   r   r   argminr   r~   r   r   r   r   r   r   s         r   r   r     r   r   c                     t        |       } | j                  dk(  rt        j                  | d       S t        j                  | |      S )Nr   r   )r   r   r   argsortr%   r|   s     r   r   r     s9    !Avv{{{14((;;qt$$r   c                 0    t        j                  | |      S r   )r   r   r   s     r   r   r     s    99Qe$$r   c                    t        |       } | j                  t        g}|&t        |      }|j                  |j                         t	        j
                  | }t        | |      } |t        ||      }t        j                  | ||      S )N)r3   r|   )	r   rN   r   r   r   r~   r   r   average)r%   r|   r3   r   rN   s        r   r   r     s~    !A%(#G,  / 12EQAw&;;q'55r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   bitwise_andr%   ys     r   r   r     '    !A!A??1a  r   c                 B    t        |       } t        j                  |       S r   )r   r   invertr$   s    r   bitwise_invertr     s    !A::a=r   c                     t        |       S r   )r   r$   s    r   bitwise_notr     s    !r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   
bitwise_orr   s     r   r   r     s'    !A!A>>!Qr   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   bitwise_xorr   s     r   r   r     r   r   c                 z    t        |       } t        |t              st        |      }t        j                  | |      S r   )r   r5   rr   r   
left_shiftr   s     r   bitwise_left_shiftr     s1    !Aaa >>!Qr   c                     t        | |      S r   )r   r   s     r   r   r     s    a##r   c                 z    t        |       } t        |t              st        |      }t        j                  | |      S r   )r   r5   rr   r   right_shiftr   s     r   bitwise_right_shiftr     s1    !Aaa ??1a  r   c                     t        | |      S r   )r   r   s     r   r   r     s    q!$$r   c                 B    t        |       } t        j                  |       S r   )r   r   blackmanr$   s    r   r   r     r&   r   c                 D    t        |       } t        j                  | |      S r   )r   r   broadcast_tor%   r<   s     r   r   r     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   rN   r   r   r   r~   r   r   r   ceilr   s     r   r   r     W    !A!W,""177E2QA88A;r   c                     t        |       } t        | j                        dk(  rt        | d      } t	        j
                  | ||      S )Nrs   rS   )r   r   rN   r   r   clip)r%   x_minx_maxs      r   r  r    s<    !A!V+G88Aue$$r   c                 v   t        j                  d | D              }|r|t        |       k(  r9t        |t        | d   j                              }t        j                  | |      S | D cg c].  }t        |t
        j                        r|j                         n|0 } }t        j                  | |      S c c}w )Nc              3   P   K   | ]  }t        |t        j                           y wr   )r5   r6   r7   rO   s     r   rQ   zconcatenate.<locals>.<genexpr>  s     IjJOO<Is   $&r   )	dimensionr   )builtinssumr   r   r<   r6   bcoo_concatenater5   ra   todenser   concatenate)xsr|   
bcoo_countr%   s       r   r  r    s    IbIIJR $T3r!u{{+;<D..rTBB   *!Z-A-AB		IB  ??2D))	s   *3B6c                 B    t        |       } t        j                  |       S r   r   r   	conjugater$   s    r   r  r        !A==r   c                 B    t        |       } t        j                  |       S r   r  r$   s    r   conjr    r  r   c                 B    t        |       } t        j                  |       S r   )r   r   copyr$   s    r   r  r        !A88A;r   c                     t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        | |      } t        j                  |       S r   )r   r   rN   r   r   r   r~   r   r   r   cosr   s     r   r  r    W    !A!W,""177E2QA771:r   c                     t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        | |      } t        j                  |       S r   )r   r   rN   r   r   r   r~   r   r   r   coshr   s     r   r  r  )  r  r   c                 D    t        t        j                  | |      d      S )Nr   rS   )r   r   count_nonzeror   s     r   r  r  4  s    !!!$/99r   c                 d    t        |       } t        |      }t        j                  | |||||      S )N)axisaaxisbaxiscr|   )r   r   cross)r    r!   r!  r"  r#  r|   s         r   r$  r$  8  s9    	2	B	2	B99

 r   c                 H    t        |       } t        j                  | ||      S N)r|   rN   )r   r   cumprodr%   r|   rN   s      r   r'  r'  E  s    !A;;qt511r   c                 H    t        |       } t        j                  | ||      S r&  )r   r   cumsumr(  s      r   r*  r*  J  s    !A::ad%00r   c                 F    t        |       } t        j                  | |      S N)r   )r   r   diagr%   r   s     r   r-  r-  O      !A88Ar   c                 F    t        |       } t        j                  | |      S r,  )r   r   diagflatr.  s     r   r1  r1  T  s    !A<<Qr   c                 J    t        |       } t        j                  | |||      S )N)offsetaxis1axis2)r   r   diagonal)r%   r3  r4  r5  s       r   r6  r6  Y  s)    !A<<		 r   c                 H    t        |       } t        j                  | ||      S )N)nr|   )r   r   diff)ar8  r|   s      r   r9  r9  c  s    !A88A&&r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   digitize)r%   binss     r   r<  r<  h  s'    !AT"D<<4  r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   dotr   s     r   r?  r?  o  s&    !A!A771a=r   c                 `    |xs t        j                         }t        j                  | |      S r   )r   r   r   emptyr   s     r   rA  rA  u  r   r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   r:   r   s     r   r:   r:   z  '    	2	B	2	B99Rr   c                     t        |       } t        | j                        }d|v s|dk(  rt        | t	        j
                               } t        j                  |       S Nrr   rs   )r   r   rN   r   r   r   r   expr%   r   s     r   rF  rF    sI    !A!!''*I	Y&0FMMO$771:r   c                     t        |       } t        | j                        }d|v s|dk(  rt        | t	        j
                               } t        j                  |       S rE  )r   r   rN   r   r   r   r   exp2rG  s     r   rI  rI    sI    !A!!''*I	Y&0FMMO$88A;r   c                     t        |       } t        | t        j                        r>t	        j
                  || j                  d      \  }}}t        j                  | ||      S t        j                  | |      S )NTrt   ry   )
r   r5   r6   r7   r
   r   r<   r   r   r@   )r%   r|   _result_shaperz   s        r   r@   r@     ss    !A!Z__%
 77!''t
		
  //\8L
 	
 ??1d##r   c                     t        |       } t        | j                        }d|v s|dk(  rt        | t	        j
                               } t        j                  |       S rE  )r   r   rN   r   r   r   r   expm1rG  s     r   rN  rN    sI    !A!!''*I	Y&0FMMO$99Q<r   c                 0    t        j                  | |      S r   )r   flipr   s     r   rP  rP    s    88AD!!r   c                     t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        | |      } t        j                  |       S r   )r   r   rN   r   r   r   r~   r   r   r   floorr   s     r   rR  rR    sW    !A!W,""177E2QA99Q<r   c                 b    |xs t        j                         }t        j                  | ||      S r   )r   r   r   full)r<   
fill_valuerN   s      r   rT  rT    s%    $V]]_E88E:U33r   c                 2    t        j                  | ||      S r   )r   	full_like)r%   rU  rN   s      r   rW  rW    s    ==Je44r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   greaterr   s     r   rY  rY    s'    	2	B	2	B;;r2r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   greater_equalr   s     r   r[  r[    s)    	2	B	2	BR$$r   c                 ,    t        j                  |       S r   )r   hstackr  s    r   r]  r]        ::b>r   c                 `    |xs t        j                         }t        j                  | |      S r   )r   r   r   identity)r8  rN   s     r   ra  ra    s#    $V]]_E<<''r   c                 B    t        |       } t        j                  |       S r   )r   r   imagr$   s    r   rc  rc    r  r   c                 `    t        |       } t        |      }t        j                  | ||||      S r   )r   r   isclose)r    r!   rtolatol	equal_nans        r   re  re    s-    	2	B	2	B;;r2tT955r   c                 B    t        |       } t        j                  |       S r   )r   r   isfiniter$   s    r   rj  rj    r   r   c                 B    t        |       } t        j                  |       S r   )r   r   isinfr$   s    r   rl  rl        !A99Q<r   c                 B    t        |       } t        j                  |       S r   )r   r   isnanr$   s    r   ro  ro    rm  r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   lessr   s     r   rq  rq    '    	2	B	2	B88Br   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   
less_equalr   s     r   rt  rt    '    	2	B	2	B>>"b!!r   c           	      :    t        j                  | ||||||      S )N)numendpointretsteprN   r|   )r   linspace)r   r   rw  rx  ry  rN   r|   s          r   rz  rz    s*     << r   c                     t        |       } t        | j                        dk(  rt        | t	        j
                               } t        j                  |       S r   )r   r   rN   r   r   r   r   logr$   s    r   r|  r|    s=    !A!W,FMMO$771:r   c                     t        |       } t        | j                        dk(  rt        | t	        j
                               } t        j                  |       S r   )r   r   rN   r   r   r   r   log10r$   s    r   r~  r~    =    !A!W,FMMO$99Q<r   c                     t        |       } t        | j                        dk(  rt        | t	        j
                               } t        j                  |       S r   )r   r   rN   r   r   r   r   log1pr$   s    r   r  r     r  r   c                     t        |       } t        | j                        dk(  rt        | t	        j
                               } t        j                  |       S r   )r   r   rN   r   r   r   r   log2r$   s    r   r  r  (  =    !A!W,FMMO$88A;r   c                     t        |       } t        |      }t        j                  | j                  |j                  t              }t        | |      } t        ||      }t        j                  | |      S r   )r   r   r~   rN   r   r   r   	logaddexpr   s      r   r  r  0  sY    	2	B	2	Brxx59E	b%B	b%B==R  r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   logical_andr   s     r   r  r  9  '    	2	B	2	B??2r""r   c                 B    t        |       } t        j                  |       S r   )r   r   logical_notr$   s    r   r  r  ?  s    !A??1r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   
logical_orr   s     r   r  r  D  ru  r   c           	      :    t        j                  | ||||||      S )N)rw  rx  baserN   r|   )r   logspace)r   r   rw  rx  r  rN   r|   s          r   r  r  J  s(    << r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   r=   r   s     r   r=   r=   V  '    	2	B	2	B;;r2r   c                    t        |t              rt        |      }t        |       } t	        | j
                        dk(  rt        | t        j                               } t        j                  | ||      }|du rL|J|j                  | j                  k  r1t        j                  |d      }|j                  | j                  k  r1|S )Nr   r   Tr   )r5   rB   r   r   r   rN   r   r   r   r   medianr   r@   )r%   r|   r}   results       r   r  r  ]  s    $T{!A!W,FMMO$ZZx8F 4DLkkAFF"__V"5F kkAFF"Mr   xy)indexingc                 ,    t        j                  |d| iS )Nr  )r   meshgrid)r  r%   s     r   r  r  n  s    <<.X..r   c                 J    t        |       } t        j                  | |||      S r   )r   r   minr   s       r   r  r  r  r   r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   minimumr   s     r   r  r  w  r  r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   modr   s     r   r  r  ~  s&    	2	B	2	B772r?r   c                 2    t        j                  | ||      S )N)sourcedestination)r   moveaxis)r%   r  r  s      r   r  r    s    <<&kBBr   c                 J    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Cr   c                 ,    t        j                  |       S r   )r   r   r$   s    r   r   r         88A;r   c                 ,    t        j                  |       S r   )r   nonzeror$   s    r   r  r    s    ;;q>r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   	not_equalr   s     r   r  r    s'    	2	B	2	B==R  r   c                 0    t        j                  | |      S r   )r   	ones_liker   s     r   r  r    s    ==%((r   c                 0    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    99Rr   c                     t        |       } i }||dk7  rt        d|       ||d<   t        j                  | |fd|i|S )NconstantzZArgument `constant_values` can only be provided when `mode == 'constant'`. Received: mode=constant_valuesmode)r   r   r   pad)r%   	pad_widthr  r  rY   s        r   r  r    sc    !AF":""&) 
 %4 !771i5d5f55r   c                 J    t        |       } t        j                  | |||      S )Nr{   )r   r   r   )r%   r|   r}   rN   s       r   r   r     s!    !A88AD85AAr   c                    t        |       } t        |      }t        | j                        dk(  rt        | t	        j
                               } t        j                  | ||||      }|du ra|_| j                  t        |j                        dkD  rdndz   }|j                  |k  r't        j                  |d      }|j                  |k  r'|S )Nr   )r|   methodr}   Tr   r   r  r   )r   r   rN   r   r   r   r   quantiler   r   r<   r@   )r%   qr|   r  r}   r  result_ndims          r   r  r    s    !A!A!W,FMMO$\\!QT&8LF 4DLffS\A%51=kkK'__V"5F kkK'Mr   c                 B    t        |       } t        j                  |       S r   )r   r   ravelr$   s    r   r  r    s    !A99Q<r   c                 D    t        |       } t        j                  | |      S r   )r   r   unravel_indexr   s     r   r  r    s    !AQ&&r   c                 B    t        |       } t        j                  |       S r   )r   r   realr$   s    r   r  r    r  r   c                 B    t        |       } t        j                  |       S r   )r   r   
reciprocalr$   s    r   r  r    s    !A>>!r   c                 H    t        |       } t        j                  | ||      S r   )r   r   repeat)r%   repeatsr|   s      r   r  r    s    !A::at,,r   c                     t        | t        j                        r@ddlm} |j                  | j                  |d      }d |vr|}t        j                  | |      S t        j                  | |      S )Nr   )operation_utils	new_shape)	new_sizes)
r5   r6   r7   keras.src.opsr  compute_reshape_output_shaper<   bcoo_reshaper   reshape)r%   newshaper  output_shapes       r   r  r    sc    !Z__%1 'CCGGX{
 |##H&&qH==;;q(##r   c                 2    t        j                  | ||      S r   )r   roll)r%   shiftr|   s      r   r  r    s    88Au4((r   c                 ~    t        |       dk7  rt        d| j                         t        j                  | ||      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   r<   r   searchsorted)sorted_sequencevaluesr  s      r   r  r    sK    O!% &5%:%:$;=
 	
 OV$??r   c                 B    t        |       } t        j                  |       S r   )r   r   signr$   s    r   r  r    r  r   c                 B    t        |       } t        j                  |       S r   )r   r   r   r$   s    r   r   r     s    !A;;q>r   c                     t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        | |      } t        j                  |       S r   )r   r   rN   r   r   r   r~   r   r   r   sinr   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   rN   r   r   r   r~   r   r   r   sinhr   s     r   r  r    r  r   c                 ,    t        j                  |       S r   )r   sizer$   s    r   r  r  $  r  r   c                 F    t        |       } t        j                  | |      S r   )r   r   sortr   s     r   r  r  (  s    !A88AD!!r   c                 2    t        j                  | ||      S r   )r   split)r%   indices_or_sectionsr|   s      r   r  r  -  s    99Q+$77r   c                 0    t        j                  | |      S r   )r   rE   r   s     r   rE   rE   1  s    99QT""r   c                     t        |       } t        | j                        dk(  rt        | t	        j
                               } t        j                  | ||      S )Nr   r   )r   r   rN   r   r   r   r   stdr   s      r   r  r  5  sB    !A!W,FMMO$7714(33r   c                 H    t        |       } t        j                  | ||      S )N)r4  r5  )r   r   swapaxes)r%   r4  r5  s      r   r  r  <  s    !A<<e44r   c                 b    t        |       } t        |d      }t        j                  | ||      S )NFr	   r   )r   r   taker%   r8   r|   s      r   r  r  A  s+    !A6G88AwT**r   c                 2    t        j                  | ||      S r   )r   take_along_axisr  s      r   r  r  G  s    q'55r   c                     t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        | |      } t        j                  |       S r   )r   r   rN   r   r   r   r~   r   r   r   tanr   s     r   r  r  K  r  r   c                     t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        | |      } t        j                  |       S r   )r   r   rN   r   r   r   r~   r   r   r   tanhr   s     r   r  r  V  r  r   c                 ^    t        |       } t        |      }t        j                  | ||      S )Nr*   )r   r   	tensordot)r    r!   r   s      r   r  r  a  s)    	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 )Nrr   r   
   )decimals)r   r   rN   r   r   powr   r   r   rl   rounddivide)r%   r  x_dtypefactors       r   r  r  g  s    !A  (GHqLdhhr8,fmmo>FMMO$LLF#IIaLJJq&!AwyyX..r   c                 .    t        j                  | |      S r   )r   tile)r%   r  s     r   r  r  x  s    88Awr   c                     t        |       } d }t        | j                        dv rd}t        j                  | ||||      S )N)rs   uint8uint16rS   )r3  r4  r5  rN   )r   r   rN   r   trace)r%   r3  r4  r5  rN   s        r   r
  r
  |  sA    !AE
 !%@@99QvU%uMMr   c                 d    |xs t        j                         }t        j                  | |||      S N)Mr   rN   )r   r   r   triNr  r   rN   s       r   r  r    '    $V]]_E771Qe,,r   c                 F    t        |       } t        j                  | |      S r,  )r   r   trilr.  s     r   r  r    r/  r   c                 F    t        |       } t        j                  | |      S r,  )r   r   triur.  s     r   r  r    r/  r   c                     t        |       } t        | j                        }d|v sd|k(  r| S t        j                  |       S rE  )r   r   rN   r   truncr   s     r   r  r    s:    !Aagg&E~599Q<r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   vdotr   s     r   r  r    rr  r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   innerr   s     r   r  r    rC  r   c                 ,    t        j                  |       S r   )r   vstackr^  s    r   r  r    r_  r   excluded	signaturec                J    |
t               }t        j                  | ||      S )Nr  )rU   r   	vectorize)pyfuncr  r   s      r   r"  r"    s"    5==(iHHr   c                 0    t        j                  | ||      S r   )r   r   )	conditionr    r!   s      r   r   r     s    99YB''r   c                 Z    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                  |dk(  dt        j                  | |            S )Nr   r   )r   r   r   r  )r    r!   safe_x2s      r   divide_no_nanr)    sN    	2	B	2	BiiaB'G99R1WaB!899r   c                     t        | |      S r   )r  r   s     r   true_divider+    s    "b>r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   powerr   s     r   r-  r-    rC  r   c                 B    t        |       } t        j                  |       S r   )r   r   negativer$   s    r   r/  r/    r   r   c                 B    t        |       } t        j                  |       S r   )r   r   squarer$   s    r   r1  r1    s    !A::a=r   c                     t        |       } t        | j                        dk(  rt        | t	        j
                               } t        j                  |       S r   )r   r   rN   r   r   r   r   sqrtr$   s    r   r3  r3    r  r   c                     t        | t        j                        rI|%t        d t	        | j
                        D              }t        |      }t        j                  | |      S t        j                  | |      S )Nc              3   2   K   | ]  \  }}|d k(  s|  yw)r   N )rP   rx   ds      r   rQ   zsqueeze.<locals>.<genexpr>  s     Dtq!Q!VDs   )
dimensionsr   )
r5   r6   r7   r   	enumerater<   r   bcoo_squeezer   squeezer   s     r   r;  r;    s\    !Z__%<Dy'9DDD%&&qT::;;qt$$r   c                 X   t        |       } t        | t        j                        rot	        | j
                        }|t        t        |      d d d         }n&g }|D ]  }t        ||      }|j                  |       ! t        j                  | |      S t        j                  | |      S )Nr  )permutationr*   )r   r5   r6   r7   r   r<   r   r   r   r   bcoo_transposer   	transpose)r%   r   num_dimsr=  r:  s        r   r?  r?    s    !A!Z__%qww<<h" 56KK &%a2""1%& ((DD==&&r   c                     t        |       } t        j                  | j                  d      }t        j                  | j                  t              }t        t        j                  | |||      |      S )Nrq   r{   )r   r   r~   rN   r   r   r   var)r%   r|   r}   r   r   s        r   rB  rB    s\    !A &&qww	:M%%aggu5Lx}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 )NFrt   r*   ry   r   )r   r5   r6   r7   r   r   r   r<   r
   r   rA   r   r   r
  )r%   r|   r}   r   r   rz   r   s          r   r
  r
  	  s    !A!Z__%<s177|,-D
 77!''u
		
  ++ANC  55%%9F
 7714(33r   c                 d    |xs t        j                         }t        j                  | |||      S r  )r   r   r   eyer  s       r   rE  rE  "  r  r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   floor_divider   s     r   rG  rG  '  s)    	2	B	2	BB##r   c                 Z    t        |       } t        |      }t        j                  | |      S r   )r   r   logical_xorr   s     r   rI  rI  -  r  r   c                 \    t        |       } t        |      }t        j                  | ||      S r   )r   r   	correlate)r    r!   r  s      r   rK  rK  3  s)    	2	B	2	B==R&&r   c                 2    t        j                  | ||      S )N)default)r   select)condlist
choicelistrM  s      r   rN  rN  9  s    ::h
G<<r   c                 h    t        |       } t        t        j                  j	                  |             S r   )r   r   r   linalgslogdetr$   s    r   rS  rS  =  s&    !A##A&''r   c                 0    t        j                  | ||      S r   )r   argpartition)r%   kthr|   s      r   rU  rU  B  s    AsD))r   c                 2    t        j                  | ||      S )N)r=  r   )r   	histogram)r%   r=  r   s      r   rX  rX  F  s    ==U33r   )r   )r   r   )Nr   F)NF)NFNr   )Nr   N)r  )NN)r   )r  r  r  N)r   r   r   )r   r  )gh㈵>g:0yE>F)2   TFNr   )rY  Tr  Nr   )r   NN)r  N)Nr   F)left)r   )Nr   N)valid)r	  r   jax.experimental.sparseexperimentalr
   r6   	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   r   elementwise_binary_unionr   r#   r(   r.   rV   r[   rc   rl   r   r>   r   r   elementwise_unaryr   r   r9   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-  r1  r6  r9  r<  r?  rA  r:   rF  rI  r@   rN  rP  rR  rT  rW  rY  r[  r]  ra  rc  re  rj  rl  ro  rq  rt  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  rE   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/  r1  r3  r;  r?  rB  r
  rE  rG  rI  rK  rN  rS  rU  rX  r6  r   r   <module>rj     s     , ,  $ + D C @ $ ( + 8, !  4@ A

-A`
7 !  4@  A M>& R%*PE
(
)
 ' (
4455)
;     ' ( ' ( ' ( ' (7"7"%%
6!
 ! $!%
&
 ' (%* & '
 & '
 & '
    :
2
1

 
'
 '! (!)
    $  ' (" ' (4
5%(
 & '
6  
 ' (
 ' (
" IJ     ' (  !#
"	 !  EB C"  /E
 !  EB CCD
!)*6B
 
'
 & '
  
-
$)@ ' (
 ' (
 ' ( ' ("
8#45
+6 ' ( ' (, '/ (/  	N-


 #'$ I(  : & '
 ' (
 ' (%'	42-
$#'=(
*4r   