
    2Vha                    6   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZ	d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ 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jB                  e	j4                  jD                        d        Z"d Z#d Z$ddZ% ejL                  d      d        Z'd Z( ejB                  ejR                        d        Z*d Z+ejX                  d        Z-ddZ.ddZ/ddZ0ddZ1ejd                  d        Z3d  Z4dd!Z5d" Z6dd#Z7dd$Z8dd%Z9dd&Z:dd'Z; ejx                  d(ejz                  z        d)        Z> ejx                  ej~                        d*        Z@ejd                  d+        ZAejd                  d,        ZBejd                  d-        ZCd. ZDejd                  d/        ZEd0 ZFdd1ZGdd2ZHdd3ZIdd4ZJdd5ZKd6 ZLd7 ZMd8 ZNd9 ZOd: ZPd; ZQd< ZRd= ZSd> ZTd? ZUd@ ZVejd                  dA        ZWdB ZXddCZYejd                  dD        ZZejd                  dE        Z[ejd                  dF        Z\ ejx                  d      dG        Z] ejx                  d      dH        Z^ddIZ_ddJZ`ddKZaddLZbddMZcddNZdddOZeddPZfdQ ZgdR ZhddSZidT Zj ejx                  d      dU        Zk ejx                  d      dV        ZldW Zmejd                  dX        ZnddYZoejd                  dZ        Zpdd[Zqdd\Zrd] Zsd^ Ztd_ Zudd`Zvejd                  da        ZwddbZx ejx                  dc      dd        Zyde Zzdf Z{dg Z|dh Z}	 ddiZ~ ejx                  ej                         dj        Z ejx                  ej                         dk        Zejd                  dl        Z ejx                  ej                         dm        Zdn Zdo Zdp Zdq ZddrZ ejB                  e	j4                  j                  dcs      dt        ZdduZdvdwdxZddyZ ejB                  e	j4                  j                  dcs      dz        Zd{ Zd| Zdd}Zd~ Zd Zd ZddZddZd ZddZddZddZddZd Zd Zejd                  d        Z ejx                  ej                        d        ZddZd ZddZddZejd                  d        Zejd                  d        Zejd                  d        Zejd                  d        Zd ZddZddZddZddZd ZddZddZejd                  d        Zejd                  d        ZddZejd                  dd       Zd ZddZddZddZddZd Zd Zd Zd ZddZddddZd Zej~                  d        Zd Zd Zd Zejd                  d        Zejd                  d        Zejd                  d        ZddZddZddZddZddZd Zd ZddZddZd ZddZd Zy)    N)sparse_csr_matrix_ops)is_nan)tree)config)standardize_dtype)dtypes)canonicalize_axis)to_tuple_or_list)vectorize_implsparse)castconvert_to_tensorshape   c                     t                 j                  j                  dk  r"t        d j                  j                         t	        |      dk7  s|d   |d   k(  rt        d| d      |dz  }|dk(  r S t         fd|D              }t         j                  j                        D cg c]	  }||vs| }}|j                  |       t        j                   |       t        j                         }|d	d
 }|d
   |d   }}t        j                   t        j                  dg||ggd             t        j                   dg       t        j                   g d       |dz  dk(  r||}
}	n||}
}	|dkD  rst        j                   t        j                  dg|	|
ggd             t        |dz
        D ]2  }t        j                   dg       t        j                   g d       4 t        j                  ||	|
ggd      }t        j                   |       dgt	        |      z  }t        |      D ]
  \  }}|||<    t        j                   |        S c c}w )a<  Rotate an array by 90 degrees in the specified plane.

    Args:
        array: Input tensor
        k: Number of 90-degree rotations (default=1)
        axes: Tuple of two axes that define the plane of rotation.
        Defaults to (0, 1).

    Returns:
        Rotated tensor with correct shape transformation
       zBInput array must have at least 2 dimensions. Received: array.ndim=r   r   zInvalid axes: z3. Axes must be a tuple of two different dimensions.   c              3   ^   K   | ]$  }|d k\  r|nj                   j                  |z    & yw)r   N)r   rank).0axisarrays     R/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/backend/tensorflow/numpy.py	<genexpr>zrot90.<locals>.<genexpr>8   s0      ;?	u{{//$66s   *-Nr   r   r   r   )r   r   r   
ValueErrorlentuplerangeextendtf	transposereshapeconcatreverse	enumerate)r   kaxesipermr   non_rot_shapehwfinal_hfinal_w_final_shapeinv_permps   `              r   rot90r:      sa    e$E{{!$$)KK$4$4#57
 	

 4yA~aDG+TF #( (
 	

 	
AAAv CG D U[[--.@!!4-A@D@KKLL%EHHUOE#2JM9eBiqAJJubii"1vQ?@EJJuA3'ELL	*E1uzaa1u

5"))bTGW3E,FQ"OPq1u 	3AJJuA3/ELL	2E	3 ))]Wg,>?aHKJJuk*EsSYH$ 1LL)ELA As   1	I%;I%c           
      l   t        | t        t        f      st        |       } t        |t        t        f      st        |      }t	        j
                  t        | dt        |             t        |dt        |                  }t        | |      } t        ||      }|j                  j                         D cg c]  }||dkD  s| }}dt        |      k(  rt        | j                        dkD  r|d   |d   | j                  j                         d   | j                  j                         d   hv ri| j                  d   |d   k(  rd}nd}t        |j                        dkD  rt        j                  |      }t        j                  j                  | ||      S t        j                  | |      S c c}w )Ndtyper   r   r   NHWCNCHW)data_format)
isinstanceintfloatr   r   result_typegetattrtyper   as_listr#   r'   squeezennbias_addadd)x1x2r<   dx2_squeeze_shaper?   s         r   rJ   rJ   _   s{   b3,'r"b3,'r"GT"X&GT"X&E 
2u	%B	2u	%B
 $&88#3#3#5Laa!eLL 	
S!""MAQ+QHHq!288#3#3#5b#9:; 88B<+A.. K Krxx=1BBuu~~b"+~>>66"b>) Ms   5F1F1c                 F   t        | t        j                               } | dk(  rt        j                  g       S | dk(  rt        j
                  dg      S t        j                  |       }| dz
  dz  }t        j                  ||k  d|z  | dz
  z  dd|z  | dz
  z  z
        }|S )Nr<   r   r   r          @)r   r   floatxr'   constantonesr%   where)xnhalfwindows       r   bartlettrZ      s    !6==?3AAv{{2Avwws|
AEQ;DXXa4iqAE!2C#'QU:K4KLFM    c                 z    t        | t        j                        } t        j                  j	                  | d      S )NrP   F)periodic)r   r'   int32signalhamming_windowrV   s    r   hammingrb      s,    !288,A99##A#66r[   c                 R   t        |       } | j                  g}t        | j                        dvr$t        j                  | t        j
                        } |t        |      }|j                  |j                         t        j                  | }t        |j                        dvrcdt        |j                        v r%t        j                  |t        j
                        }n't        j                  |t        j                        }nd}|st        | t        j                        rt        j                  j                  | ||d      }|j                  d   }|t        j                  |      d   }t	        ||      }| j                  j                  dk(  r|f}n-|j                  d   }	|	t        j                  |      d   }	|	|f}t        j                  |j                   |j"                  |	      S t        j                  t        j$                  j                  | ||d      |      S )
N)r^   int64)r^   rd   float32float64rA   r^   r   )weights	minlengthr   r   r   indicesvaluesdense_shape)r   r<   r   r'   r   r^   appendr   rC   re   r@   SparseTensorr   bincountr   r   rj   rk   math)
rV   rg   rh   r   dtypes_to_resolver<   outputactual_lengthoutput_shape
batch_sizes
             r   ro   ro      s   !A	!);;GGArxx #G,  /""$56W]]+ 4
 
 )'--88'''2884'''2::6Ar/##	 $ 
 R( HHV,R0Mfe$77<<1)+LaJ!XXf-a0
&6LNN==$
 	

 77
GyrJ r[   i   c                     i }d}| D ]E  }|t         j                  v r,||vrt         j                  t        |         ||<   |||   z  }A||z  }G |S )N )stringascii_lettersr#   )
subscriptsmappingnormalized_subscriptscs       r   _normalize_einsum_subscriptsr~      sn     G '$$$#11#g,?
!WQZ/!!Q&!' ! r[   c                 L  	 t        j                  t        |      }t        |       } d }d }t	        t        d |D                    }t        |      dk(  r|d   dk(  rd	d}d}nt        j                  | }|	d } || g| rB|s@d	v r|t        j                         	t        j                  	fd	|      } || g|d
|i}nJd	v rt        j                         	t        j                  	fd|      }t        j                  | g|i |}t        j                  ||      S )Nc                    | dv ry| dk(  r?|d   j                   \  }}}|d   j                   \  }}}||xs |||f\  }}	}
}d ||	|
|fv ryy| dk(  r?|d   j                   \  }}}|d   j                   \  }}}||xs |||f\  }}	}
}d ||	|
|fv ryy| dk(  r?|d   j                   \  }}}|d   j                   \  }}}||xs |||f\  }}	}
}d ||	|
|fv ryy| d	k(  rD|d   j                   \  }}}}|d   j                   \  }}}||xs ||xs ||f\  }}	}
}d ||	|
|fv ryy| d
k(  rD|d   j                   \  }}}}|d   j                   \  }}}||xs ||xs ||f\  }}	}
}d ||	|
|fv ryy| dk(  rD|d   j                   \  }}}}|d   j                   \  }}}||xs ||xs ||f\  }}	}
}d ||	|
|fv ryy| dk(  rI|d   j                   \  }}}}}|d   j                   \  }}}}|xs ||||xs ||f\  }}	}
}}d ||	|
||fv ryy| dk(  rI|d   j                   \  }}}}}|d   j                   \  }}}}||xs |||xs ||f\  }}	}
}}d ||	|
||fv ryyy)N)a,b->abab,b->a	ab,bc->ac	ab,cb->acabc,cd->abdabc,dc->abdabcd,abde->abceabcd,abed->abceabcd,acbe->adbeabcd,adbe->acbeabcd,aecd->acbeabcd,aecd->acebTabc,cde->abder   r   Fabc,dce->abdeabc,dec->abdeabcd,cde->abeabcd,ced->abeabcd,ecd->abeabcde,aebf->adbcfabcde,afce->acdbfr   )rz   operandsr6   b1c1c2d2e2br}   rM   ed1e1b2f2fs                    r   is_valid_for_custom_opsz'einsum.<locals>.is_valid_for_custom_ops   sa     
 
 ?* ))IAr2!!**JBBRX2r2-JAq!Q1a|#?* ))IAr2!!**JBBRX2r2-JAq!Q1a|#?* ))IAr2!!**JBBRX2r2-JAq!Q1a|#?*$QK--MAr2r!!**JBBRX2rxR3JAq!Q1a|#?*$QK--MAr2r!!**JBBRX2rxR3JAq!Q1a|#?*$QK--MAr2r!!**JBBRX2rxR3JAq!Q1a|#.. ( 1 1Ar2r2$QK--MAr2rH"b"bhB:MAq!Q1aA&.. ( 1 1Ar2r2$QK--MAr2rb"bhB:MAq!Q1aA& r[   c                   |d   |d   }}| dk(  rFt        j                  |d      }t        j                  |d      }t        j                  |||      S | dk(  rFt        j                  |d      }t        j                  |||      }t        j                  |d      S | dk(  rt        j                  |||      S | d	k(  r0t        j                  |ddg      }t        j                  |||      S | d
k(  rt        j                  |||      S | dk(  ry|j
                  \  }}}|j
                  \  }	}
}||xs |	|
|f\  }}}}t        j                  ||dg      }t        j                  |||      }t        j                  |d|||g      S | dk(  r0t        j                  |ddg      }t        j                  |||      S | dk(  r|j
                  \  }}}|j
                  \  }
}	}||xs |	|
|f\  }}}}t        j                  |g d      }t        j                  ||dg      }t        j                  |||      }t        j                  |d|||g      S | dk(  r|j
                  \  }}}|j
                  \  }
}}	||xs |	|
|f\  }}}}t        j                  |g d      }t        j                  ||dg      }t        j                  |||      }t        j                  |d|||g      S | dk(  rt        j                  |||      S | dk(  r0t        j                  |g d      }t        j                  |||      S | dk(  r`t        j                  |g d      }t        j                  |g d      }t        j                  |||      }t        j                  |g d      S | dk(  rHt        j                  |g d      }t        j                  |||      }t        j                  |g d      S | dk(  rHt        j                  |g d      }t        j                  |g d      }t        j                  |||      S | dk(  r`t        j                  |g d      }t        j                  |g d      }t        j                  |||      }t        j                  |g d      S | dk(  r|j
                  \  }}}}|j
                  \  }	}
}||xs |	|xs |
|f\  }}}}t        j                  |d|||z  g      }t        j                  |d|g      }t        j                  |||      S | dk(  r|j
                  \  }}}}|j
                  \  }	}}
||xs |	|xs |
|f\  }}}}t        j                  |d|||z  g      }t        j                  |g d      }t        j                  |d|g      }t        j                  |||      S | dk(  r|j
                  \  }}}}|j
                  \  }}	}
||xs |	|xs |
|f\  }}}}t        j                  |d|||z  g      }t        j                  |g d      }t        j                  |d|g      }t        j                  |||      S | dk(  r|j
                  \  }}}}}|j
                  \  }}}}|xs ||||xs ||f\  }}}}}t        j                  |d|||z  |g      }t        j                  |g d      }t        j                  |||      }t        j                  |d||||g      }t        j                  |g d       S | d!k(  r|j
                  \  }}}}}|j
                  \  }}}	}||xs |	||xs ||f\  }}}}}t        j                  |g d"      }t        j                  |d|||z  |g      }t        j                  |g d      }t        j                  |||      }t        j                  |d||||g      S t        )#Nr   r   r   r   r    output_typer   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r      r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r!   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   )r'   expand_dimsmatmulrG   r(   r   r)   NotImplementedError)rz   r   r   rV   yresultr6   r   r   r   r   r   r   r}   rM   r   r   r   r   r   r   s                        r   use_custom_opszeinsum.<locals>.use_custom_ops.  sE    {HQK1"qr*Aqq)A99Q{;;9$qr*AYYq!=F::f2..;&99Q{;;;&QA'A99Q{;;=(99Q{;;?*IAr2JBBRX2r2-JAq!Q

1q"g&AYYq!=F::fr1am44=(QA'A99Q{;;?*IAr2JBBRX2r2-JAq!QQ	*A

1q"g&AYYq!=F::fr1am44?*IAr2JBBRX2r2-JAq!QQ	*A

1q"g&AYYq!=F::fr1am44,,99Q{;;,,Q-A99Q{;;,,Q-AQ-AYYq!=F<<55,,Q-AYYq!=F<<55,,Q-AQ-A99Q{;;,,Q-AQ-AYYq!=F<<55?*GGMAr2rJBBRX2rxR3JAq!Q

1r1a!en-A

1r1g&A99Q{;;?*GGMAr2rJBBRX2rxR3JAq!Q

1r1a!en-AQ	*A

1r1g&A99Q{;;?*GGMAr2rJBBRX2rxR3JAq!Q

1r1a!en-AQ	*A

1r1g&A99Q{;;.. !Ar2r2GGMAr2rH"b"bhB:MAq!Q

1r1a!eQ/0AQ-AYYq!=FZZQ1a(89F<<88.. !Ar2r2GGMAr2rb"bhB:MAq!QQ0A

1r1a!eQ/0AQ-AYYq!=F::fr1aA&677%%r[   c              3   F   K   | ]  }t        |j                          y wN)r   r<   r   rV   s     r   r   zeinsum.<locals>.<genexpr>  s      N!2177!; Ns   !r   r   int8r^   rA   c                 0    t        j                  |       S r   r'   r   rV   compute_dtypes    r   <lambda>zeinsum.<locals>.<lambda>      bgga/ r[   r   c                 0    t        j                  |       S r   r   r   s    r   r   zeinsum.<locals>.<lambda>  r   r[   )r   map_structurer   r~   listsetr#   r   rC   r   rR   r'   einsumr   )
rz   r   kwargsr   r   rq   result_dtyper   r   r   s
            @r   r   r      s8   !!"3X>H-j9JM^n&` S NX NNO "'8';v'E))+<=$ z5H5f M!k&9"MMOM%%/
  
OXO;O M!"MMOM%%/
 :;;F;776<((r[   c           
      ^   t        | t        t        f      st        |       } t        |t        t        f      st        |      }t	        j
                  t        | dt        |             t        |dt        |                  }t        | |      } t        ||      }t        j                  | |      S Nr<   )
r@   rA   rB   r   r   rC   rD   rE   r'   subtractrK   rL   r<   s      r   r   r         b3,'r"b3,'r"GT"X&GT"X&E 
2u	%B	2u	%B;;r2r[   c                    t        |       } t        |      }| j                  }|j                  }t        | t        j                        }t        |t        j                        }t        | j                        }t        |j                        }|dk(  r.|dk(  r)|s'|s%|j                  dk7  r|j                  dk7  rd}d}	|	}
n[t        j                  | j                  |j                  t              }t        j                  | j                  |j                        }	d }
t        j                  | |      } t        j                  ||      }d }d }d }d }|s|rdd	lm}  |||      }|r'|r%|j                  d
k  r
 || |      }nw || |||      }nk|r|j                  n|j                  }|r|dk(  r
 || |      }n@|dk(  r!t        j                  j                  | |      }n|d
k(  r
 || |      }n || |||      }t        j                  ||	      }|j!                  |       |S |j                  dk(  r(|j                  dk(  rt        j"                  | ||
      }nl|j                  dk(  rt        j$                  | |d      }nD|j                  dk(  rt        j$                  | |dgdgg      }nt        j"                  | ||
      }t        j                  ||	      S )Nr   r   r^   c                    t        | t        j                        }t        |t        j                        }|r|j                  d d n| j                  d d }t	        j
                  |      }|g| j                  dd  z   }|r t        j                  j                  | |      nt        j                  | |      }	|g|j                  dd  z   }
|r t        j                  j                  ||
      nt        j                  ||
      } ||	|      }t        |t        j                        r t        j                  j                  ||      S t        j                  ||      S )Nr   )r@   r'   rn   r   rp   prodr   r)   )ar   rt   fn_3da_sparseb_sparsebatch_shaperu   	a3d_shapea_3d	b3d_shapeb_3d	result_3ds                r   with_combined_batch_dimensionsz.matmul.<locals>.with_combined_batch_dimensions  s%   a1a1&.aggcrlAGGCRLYY{+
L17723</	  IIa+Ay) 	
  L17723</	  IIa+Ay) 	
 $%	 )R__5 IIi6	
 I|4	
r[   c                    | j                   j                  }t        j                  | j                  | j                   | j
                        }t        j                  |j                  |j                   |j
                        }t        j                  |||      }t        j                  ||      }t        j                  |j                  |j                   |j
                        S r   )
rk   r<   r   "sparse_tensor_to_csr_sparse_matrixrj   rl   sparse_matrix_sparse_mat_mul"csr_sparse_matrix_to_sparse_tensorr'   rn   )r   r   r<   a_csrb_csr
result_csrress          r   sparse_sparse_matmulz$matmul.<locals>.sparse_sparse_matmul  s    %HHIIqxx
 &HHIIqxx
 +GG5%

 $FF
 s{{CJJHHr[   c                    t         j                  j                  | d      \  } }t        j                  | j                  | j                  d d df   | j
                        }t         j                  j                  ||| d      S )Nr   r   ri   sum)combiner)r'   r   fill_empty_rowsrn   rj   rl   rH   embedding_lookup_sparse)r   r   r6   idss       r   $embedding_lookup_sparse_dense_matmulz4matmul.<locals>.embedding_lookup_sparse_dense_matmul  sk     yy((A.1 ooII99QT?

 uu,,QQ,GGr[   c                 L    t        j                  d | |f| j                        S )Nc                 N    t         j                  j                  | d   | d         S )Nr   r   )r'   r   sparse_dense_matmulra   s    r   r   z8matmul.<locals>.sparse_dense_matmul_3d.<locals>.<lambda>*  s    bii33AaD!A$? r[   )elemsfn_output_signature)r'   map_fnr<   )r   r   s     r   sparse_dense_matmul_3dz&matmul.<locals>.sparse_dense_matmul_3d(  s$    yy?a& !
 	
r[   r   )compute_matmul_output_shaper   r   r   r.   r   )r   r   r@   r'   rn   r   r<   r   r   rC   rB   r   keras.src.ops.operation_utilsr   r   r   	set_shaper   	tensordot)rK   rL   x1_shapex2_shape	x1_sparse	x2_sparsex1_dtypex2_dtyper   r   r   r   r   r   r   r   rt   rr   sparse_ranks                      r   r   r     s   	2	B	2	BxxHxxH2r/I2r/I !*H *HFMMQMMQ" **288RXXuE))"((BHH=	]	#B	]	#B
0I&H"
 IM28XF}}!-b"57L*>
 ,5(--(--K [A-=b"E!66r2>!/B77L*@ .&==A(--1"4YYr2;?F]]a\\"bq1F]]a\\"bbT{;FYYr2;?Fwwv|,,r[   c           
      ^   t        | t        t        f      st        |       } t        |t        t        f      st        |      }t	        j
                  t        | dt        |             t        |dt        |                  }t        | |      } t        ||      }t        j                  | |      S r   )
r@   rA   rB   r   r   rC   rD   rE   r'   multiplyr   s      r   r   r   X  r   r[   c           	      ,   t        | t        j                        r|bt        j                  | j                  |      }|t        j
                  t        j                  | j                        |j                        z  S t        |      }|s| S t        j                  | j                        }t        j                  |      d   }|D cg c]  }t        ||       }}|j                          |dgk(  rIt        j                  | j                  d|      }|t        j
                  |d   |j                        z  S |d   dk(  rat        j                  | j                  dd      }|t        j
                  |d   |j                        z  }t        j                  |||      S |rlt        j                  | j                  |d      }t        j                  |dd |j                  dd  gd      }	t        j                  || j                   |	      S |t#        |      dz   k(  rYt        j$                  t        j&                  | j                   d      t        j                  | j                  |      |d   g      S t)        |      D 
cg c]	  }
|
|vs|
 }}
t        j                  t        j                  | j                  |      | j                   t        j*                  | j                  |d            S t        |       } t-        | j                        }t/        j0                  | j                  d      }d	|v s|d
k(  r|}n|}t        j                  t        j
                  | |      ||      }t        j
                  ||      S c c}w c c}
w )N)keepdimsrP   r   r   r   Tr   r    re   rA   bool)r@   r'   IndexedSlices
reduce_sumrk   r   reduce_prodrl   r<   r
   r   r   r	   sortreduce_meanr*   rj   r#   
scatter_ndr   r%   gatherr   r   rC   )rV   r   r   r   rl   r   r   axis_0_mean
new_valuesnew_dense_shaper/   gather_indices	ori_dtyper   r   rr   s                   r   meanr  g  s   !R%%&< --8<C!>ciiPPP%H**1==9xx$Q'489q!!T*99		A3; --q8DCQsyyAAA!W\ --q4@CAcii HHK>>+D8LL tdKJ iiQq!:#3#3AB#78qO ##J		?KKSY]" ==qyyq1qxxd3Q   */tFAaFNF##qxxd3				!--a@ 
 	!A!!''*I&&qww	:M 	Y&0$ ^^
=!xF 776<((u :P Gs   
N	NNc                    t        |       } |t        | j                        dk(  rvt        j                  | ||      } t        j
                  j                  t        j                  | d      t        j                  |d            } t        j                  | d      S t        j                  | ||      } t        j
                  j                  | |      S t        j                         rBt        |       }t        j                  |t        j                  d|j                        d       t        | j                        dk(  rt        j                  | ||      S t        j                  | ||      S )Nr   r   r^   r   rP   z*Cannot compute the max of an empty tensor.message)r   r   r<   r'   
reduce_anyrp   maximumr   
reduce_maxexecuting_eagerlysizeassert_greaterrS   rV   r   r   initialsize_xs        r   maxr    s   !A QWW%/adX>A7 3RWWWg5NOA771f%%adX>A77??1g.. 
a
KK.@	
 !V+}}QTH==}}QTH==r[   c                 `    |xs t        j                         }t        j                  | |      S NrP   )r   rR   r'   rT   r   r<   s     r   rT   rT     s#    $V]]_E775&&r[   c                 `    |xs t        j                         }t        j                  | |      S r  r   rR   r'   zerosr  s     r   r  r    #    $V]]_E88E''r[   c                     t        |       } t        | j                        }d|v s|dk(  r| S t        j                  |       S )Nuintr   )r   r   r<   r'   absrV   r<   s     r   absoluter    s:    !Aagg&E%6/66!9r[   c                     t        |       S r   )r  ra   s    r   r  r    s    A;r[   c                 ^    t        j                  | d      } t        j                  | ||      S Nr   r   )r'   r   
reduce_allrV   r   r   s      r   allr%    %    
6A==99r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S Nrd   )r   r   r<   r   rR   r   rC   rB   r'   r   rp   angler  s     r   r)  r)    sa    !A!W,""177E2
5A77==r[   c                 ^    t        j                  | d      } t        j                  | ||      S r"  )r'   r   r
  r$  s      r   anyr+    r&  r[   c                     t        | ||      S Nr   )r  r$  s      r   amaxr.        qth//r[   c                     t        | ||      S r-  )minr$  s      r   aminr2    r/  r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }|Ct	        j                  t	        j                  | dg      t	        j                  |dg      gd      S t	        j                  | |g|      S )Nr   r   r    )r   r   rC   r<   r'   r   r*   r)   )rK   rL   r   r<   s       r   rm   rm     s    	2	B	2	Brxx2E	U	B	U	B|yy"**R".

2t0DEANNyy"b--r[   c           	         |et        | dt        |             t        |dt        |            g}|%|j                  t        |dt        |                   t        j                  | }t        |      }	 t        j                  | |||      }|S # t        j                  j                  $ r3 t        j                  | ||d      }t        j                  ||      }Y |S w xY w)Nr<   )deltar<   re   )rD   rE   rm   r   rC   r   r'   r%   errorsNotFoundErrorr   )startstopstepr<   rq   outs         r   aranger<    s    }E7DK0D'4:.
 $$WT7DJ%GH""$56e$E"hhud$e<
 J	 99"" "hhud$i@ggc5!J	"s   4B ACC      ?c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   acosr  s     r   arccosr@  %  `    !A!W,""177E2
5A77<<?r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   acoshr  s     r   arccoshrD  0  a    !A!W,""177E2
5A77==r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   asinr  s     r   arcsinrH  ;  rA  r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   asinhr  s     r   arcsinhrK  F  rE  r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   atanr  s     r   arctanrN  Q  rA  r[   c                 $   t        |       } t        |      }t        j                  | j                  |j                  t              }t        j                  | |      } t        j                  ||      }t
        j                  j                  | |      S r   )	r   r   rC   r<   rB   r'   r   rp   atan2r   s      r   arctan2rQ  \  sg    	2	B	2	Brxx59E	U	B	U	B77==R  r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   atanhr  s     r   arctanhrT  e  rE  r[   c                     |,t        t        | j                              D cg c]  }d }}n3t        t	        |             }t        j                  |      D ]  }d||<   	 t        j                  ||      }|S c c}w )Nr   )	r%   r#   r   r   shape_opr   flattenr'   r)   )rV   r   r   r6   r   s        r   	_keepdimsrX  p  sp    |!#agg,/0q00Xa[!LL& 	DE$K	


1eAH 1s   	A:c                    t        |       } t        | j                        }d|vs| j                  dk(  rD| }|t	        j
                  | dg      } t	        j                  | |d      }|rt        |||      }|S t        j                  |d      }t        | |      } t	        j                  t	        j                  | d      t        |             }t	        j                  |t        j                   t        | j                              j"                   |       } | }|t	        j
                  | dg      } t	        j                  | |d      }|rt        |||      }|S )NrB   r   r   r^   r   r   re           )r   r   r<   ndimr'   r)   argmaxrX  r   rC   r   logical_andequalsignbitrU   npfinfotiny)rV   r   r   r<   _xr   is_negative_zeros          r   r]  r]  {  s&   !Aagg&Eeqvv{<

1rd#AIIad8"a&A ui0EQA~~bhhq#&6
C
288$5agg$>?DDDa	A 
B|JJq2$
		!$G4Ab!T"Hr[   c                    ddl m} t        |       } t        | j                        }d|vs |       r| j
                  dk(  rD| }|t        j                  | dg      } t        j                  | |d      }|rt        |||      }|S t        j                  |d      }t        | |      } t        j                  t        j                  | d      t        |             }t        j                   |t#        j$                  t        | j                              j&                   |       } | }|t        j                  | dg      } t        j                  | |d      }|rt        |||      }|S )	Nr   )uses_cpurB   r   r^   rZ  re   r[  )keras.src.testing.test_caserg  r   r   r<   r\  r'   r)   argminrX  r   rC   r   r^  r_  r`  rU   ra  rb  rc  )rV   r   r   rg  r<   rd  r   re  s           r   ri  ri    s-   4!Aagg&Ee8:1<

1rd#AIIad8"a&A ui0EQA~~bhhq#&6
C
288$5agg$>?DDDa	A 
B|JJq2$
		!$G4Ab!T"Hr[   c                 <   t        |       } t        | j                        dk(  rt        j                  | d      } | j
                  }|j                  dk(  rt        j                  dgd      S |t        j                  | dg      } d}t        j                  | |      S )Nr   uint8r   r^   r   r    )	r   r   r<   r'   r   r   r   r)   argsort)rV   r   x_shapes      r   rl  rl    s    !A!V+GGAwggG||qwwsG$$|JJq2$::ad##r[   c                     t        | |      S r  r   r  s     r   r   r     s    Qe,,r[   c                 @    t                St        j                   j                  t              }t        j                   |       t        j                         }|S t              t        j                   j                  j                  t              }t        j                   |       t        j                  |       fd} fd}	 |       }|S t         j                        t        j                        k(  r	 |       }|S  |       }|S )Nr    c                  l    t        j                        } t        j                  z        | z  S )Nr    )r'   r   )weights_sumr   rg   rV   s    r   _rank_equal_casez!average.<locals>._rank_equal_case  s-    --d;K==W48;FFr[   c                      t        j                        } t        j                  gdgg      }t        j                  |      | z  S Nr   )r'   r   r   r   )rq  r.   r   rg   rV   s     r   _rank_not_equal_casez%average.<locals>._rank_not_equal_case  sA    --0K''$!6D<<7D1K??r[   )
r   r   rC   r<   rB   r'   r   r   r#   r   )rV   r   rg   r<   avgrr  ru  s   ```    r   averagerw    s    !A""177E2GGAunnQT*. J+ $G,""177GMM5AGGAu'''5)	G	@
 <"$C J	 177|s7==11&( J +,Jr[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t        j                  j                  | |      S r   )r   r   rC   r<   r'   r   bitwisebitwise_andrV   r   r<   s      r   rz  rz    g    !A!Aqww0E
5A
5A::!!!Q''r[   c                 V    t        |       } t        j                  j                  |       S r   )r   r'   ry  invertra   s    r   bitwise_invertr    s!    !A::Qr[   c                     t        |       S r   )r  ra   s    r   bitwise_notr    s    !r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t        j                  j                  | |      S r   )r   r   rC   r<   r'   r   ry  
bitwise_orr{  s      r   r  r    sg    !A!Aqww0E
5A
5A::  A&&r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t        j                  j                  | |      S r   )r   r   rC   r<   r'   r   ry  bitwise_xorr{  s      r   r  r    r|  r[   c                 :   t        |       } t        |t              sat        |      }t        j                  | j
                  |j
                        }t        j                  | |      } t        j                  ||      }t        j                  j                  | |      S r   )
r   r@   rA   r   rC   r<   r'   r   ry  
left_shiftr{  s      r   bitwise_left_shiftr    sq    !Aaa ""177AGG4GGAuGGAu::  A&&r[   c                     t        | |      S r   )r  rV   r   s     r   r  r    s    a##r[   c                 :   t        |       } t        |t              sat        |      }t        j                  | j
                  |j
                        }t        j                  | |      } t        j                  ||      }t        j                  j                  | |      S r   )
r   r@   rA   r   rC   r<   r'   r   ry  right_shiftr{  s      r   bitwise_right_shiftr    sq    !Aaa ""177AGG4GGAuGGAu::!!!Q''r[   c                     t        | |      S r   )r  r  s     r   r  r  &  s    q!$$r[   c                    t        j                         }t        j                  | |      } t        j                  | |      }t        j                  | dz
  |      }d}dt        j
                  dt        j                  z  |z  |z        z  }dt        j
                  dt        j                  z  |z  |z        z  }||z   |z   }|S )NrP   r   gzG?g      r   g{Gz?r   )r   rR   r'   r   r%   cosra  pi)rV   r<   rW   	n_minus_1term1term2term3rY   s           r   blackmanr  *  s    MMOE
5A
% AAu%IE266!bee)a-)344E266!bee)a-)344EU]U"FMr[   c                 .    t        j                  | |      S r   )r'   broadcast_to)rV   r   s     r   r  r  6  s    ??1e$$r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   ceilr  s     r   r  r  :  rA  r[   c                     t        | j                        }|dk(  rt        j                  | d      } t        j                  | ||      S Nr   r^   )r   r<   r'   r   clip_by_value)rV   x_minx_maxr<   s       r   clipr  E  s<    agg&EGGAwAue,,r[   c                 8   t        j                  d | D              }|re|t        |       k(  r!t        j                  j                  ||       S | D cg c]+  }t        |t        j                        rt        |d      n|- } }t        j                  t        |       } t        | D cg c]  }|j                   c}      }t        |      dkD  r+t        j                  | t        j                  fd|       } t        j
                  | |      S c c}w c c}w )Nc              3   P   K   | ]  }t        |t        j                           y wr   )r@   r'   rn   r   s     r   r   zconcatenate.<locals>.<genexpr>M  s     K1
1boo >Ks   $&)r   	sp_inputsFr   r   c                 0    t        j                  |       S r   r   r  s    r   r   zconcatenate.<locals>.<lambda>^  s    "''!U*; r[   r    )builtinsr   r#   r'   r   r*   r@   rn   r   r   r   r   r<   r   rC   )xsr   sparse_countrV   	dtype_setr<   s        @r   concatenater  L  s    <<KKKL3r7"99###<<   "!R__5 &a6B  
		-r	2Bb)QWW)*I
9~""I. ;R@99Rd## *s   0D(Dc                 @    t         j                  j                  |       S r   r'   rp   conjra   s    r   	conjugater  b      77<<?r[   c                 @    t         j                  j                  |       S r   r  ra   s    r   r  r  g  r  r[   c                 B    t        |       } t        j                  |       S r   )r   r'   identityra   s    r   copyr  l  s    !A;;q>r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   r  r  s     r   r  r  r  `    !A!W,""177E2
5A77;;q>r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   coshr  s     r   r  r  }  rA  r[   c                 F    t         j                  j                  | |d      S )Nr^   )r   r<   )r'   rp   count_nonzerorV   r   s     r   r  r    s    77  W ==r[   c                 8   t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }||}|}|t        | |d      } t        ||d      }d }t        |       d   }t        |      d   }	 || |      }  |||	      }t        |       }
t	        j                  |
t        |            }
t	        j                  | |
      } t	        j                  ||
      }t        j                  j                  | |      t        |t              r-t        |	t              r|dk(  |	dk(  z  rd   S t        d      S t	        j                  |dk(  |	dk(  z  fdfd      S )Nr   c                      d t        |t              r|dk(  r        S  S t        j                  t        j                  |d       fd fd      S )Nc           
          t        j                  | t        j                  t        j                  t        j                  |       dz
  dgd      t        j
                  ddggd      gd            S )Nr   r   r^   r   r    )r'   padr*   r  r   rS   ra   s    r   	pad_zerosz1cross.<locals>.maybe_pad_zeros.<locals>.pad_zeros  s_    66		"''!*q.!!4g>aVHg6 	 	r[   r   c                              S r    )r  rV   s   r   r   z0cross.<locals>.maybe_pad_zeros.<locals>.<lambda>  s    9Q< r[   c                       S r   r  ra   s   r   r   z0cross.<locals>.maybe_pad_zeros.<locals>.<lambda>  s     r[   )r@   rA   r'   condr_  )rV   size_of_last_dimr  s   ` @r   maybe_pad_zeroszcross.<locals>.maybe_pad_zeros  sQ    
	 &,1$ |#HwwHH%q)+?
 	
r[   r   .r   c                       d   S )Nr  r  )r}   s   r   r   zcross.<locals>.<lambda>  s    &	 r[   c                      t        d       S Nr   )moveaxis)axiscr}   s   r   r   zcross.<locals>.<lambda>  s    B& r[   )r   r   rC   r<   r'   r   r  rV  broadcast_dynamic_shaper  linalgcrossr@   rA   r  )rK   rL   axisaaxisbr  r   r<   r  x1_dimx2_dimr   r}   s       `      @r   r  r    su   	2	B	2	Brxx2E	U	B	U	B	"eR	 B	"eR	 B
, b\"Fb\"F	V	$B	V	$B RLE&&uhrl;E	U	#B	U	#B
		BA&#:fc#:aKFaK(V92u%%77	11%& r[   c                     t        | |      } t        | j                        dk(  rt        j                  | d      } |t        j
                  | dg      } d}t        j                  j                  | |      S NrP   r   r^   r   r   r    )r   r   r<   r'   r   r)   rp   cumprodrV   r   r<   s      r   r  r    sb    !5)A!V+GGAw|JJq2$77??14?((r[   c                     t        | |      } t        | j                        dk(  rt        j                  | d      } |t        j
                  | dg      } d}t        j                  j                  | |      S r  )r   r   r<   r'   r   r)   rp   cumsumr  s      r   r  r    sb    !5)A!V+GGAw|JJq2$77>>!$>''r[   c                 R    t                t         j                        dk(  rFt        j                  t        j
                  t        j                         d       fd fd      S t         j                        dk(  rt               S t        d j                         )Nr   r   c                      t        j                  t        j                         t        j                         gj                        S r  )r'   r  r  r  r<   r-   rV   s   r   r   zdiag.<locals>.<lambda>  s+    BHHhll1ox||A?qwwO r[   c                  F    t         j                  j                         S )Nr-   )r'   r  diagr  s   r   r   zdiag.<locals>.<lambda>  s    BIINN1N* r[   r   )offsetz(`x` must be 1d or 2d. Received: x.shape=)	r   r#   r   r'   r  r_  r  diagonalr"   rV   r-   s   ``r   r  r    s    !A
177|qwwHHRWWQZ#O*
 	

 
QWW	!$$CAGG9MNNr[   c                 Z    t        |       } t        t        j                  | dg      |      S r  )r   r  r'   r)   r  s     r   diagflatr    s&    !A

1rd#Q''r[   c           
      z    t                 j                  }|dk(  r9||dz
  k(  s|dk(  r,||dz
  k(  s|dk(  rt        j                  j	                         S t         ||fd       t                fdt        d   t              r.t        d   t              r|dd   z  k  s|d   k\  rj         nbt        j                  t        j                  t        j                  |dd   z        t        j                  |d               fd fd	       t        j                  j	                   |
      S )Nr   r   r   r   r   r   r   c                  z    t        j                  t        j                  d d dggd       j                        S )Nr   r   rP   )r'   r  r*   r<   )rV   rm  s   r   _zeroszdiagonal.<locals>._zeros  s0    xx		73B<!"5q9IIr[   c                               S r   r  )r  s   r   r   zdiagonal.<locals>.<lambda>  s	    FH r[   c                       S r   r  ra   s   r   r   zdiagonal.<locals>.<lambda>  s    A r[   r  )r   r\  r'   r  	diag_partr  rV  r@   rA   r  
logical_or
less_equalgreater_equal)rV   r  axis1axis2x_rankr  rm  s   `    @@r   r  r    s    !AVVF!fqj ERKfqj ERKyy""1%%UENH-AqkGJ '"+s#
72;(DR'"+%%72;)>AGGMMfb72;&67  5 
 99qF++r[   c                 D   t        |       } |dk(  r| S |dk  rt        d|       | j                  dk(  rt        d|        t        || j                        }t	        d       g| j                  z  }t	        d       g| j                  z  }t	        dd       ||<   t	        d d      ||<   t        |      }t        |      }t        |      D ]S  }t        | j                        dk(  rt        j                  | |   | |         } 8t        j                  | |   | |         } U | S )Nr   z+Order `n` must be non-negative. Received n=zD`diff` requires input that is at least one dimensional. Received: a=r   r   r   )r   r"   r\  r	   slicer$   r%   r   r<   r'   	not_equalr   )r   rW   r   slice1slice2slice1_tupleslice2_tupler6   s           r   diffr    s   !AAv	
QFqcJKK	
1#
 	
 T166*DDk]QVV#FDk]QVV#FD>F4Lr?F4L=L=L1X >QWW%/Q|_ao>AAlOQ|_=A	>
 Hr[   c                    t        |       } t              t        j                  d       t	        | j
                        }|dv rt        | d      } n"|dk(  rt        | d      } n|dv rt        | d      } t        | t        j                        r#t        j                  j                  fd|       S t        | t        j                        rt        j                  t        j                  | j                        t        j                  j!                  | j"                  	      t        j                  | j$                        
      }|j'                  | j(                         |S t        j                  j!                  | 	      S )Nc                     t        |       S r   )rB   ra   s    r   r   zdigitize.<locals>.<lambda>2  s
    a r[   )r   r   int16rk  uint16r^   uint32rd   )bfloat16float16re   c                 F    t         j                  j                  |       S )Ninput
boundaries)r'   raw_ops	Bucketize)r   binss    r   r   zdigitize.<locals>.<lambda>@  s    bjj**t*D r[   r   ri   )r   r   r   r   r   r<   r   r@   r'   RaggedTensorraggedmap_flat_valuesrn   r  rj   r  r  rk   rl   r   r   )rV   r  r  rr   s    `  r   digitizer	  -  s/   !A:D 0$7D "!''*I@@G	h	G	-	-I!R__%yy((Da
 	
 
Ar	'KK		*::''ahh4'HAMM2

 	!::aD99r[   c                 B   t        |       } t        |      }t        j                  | j                  |j                        }t        j                  |t              }t        j                  | |      } t        j                  ||      }| j                  }|j                  }|j                  dk(  s|j                  dk(  r| |z  }nH|j                  dk(  rt        j                  | |dgdgg      }nt        j                  | |dgdgg      }t        j                  ||      S )Nr   r   r   r   r   )
r   r   rC   r<   rB   r'   r   r   r   r   )rV   r   r   r   rm  y_shaperr   s          r   dotr  M  s    !A!A%%aggqww7L&&|U;M
=!A
=!AggGggG||qGLLA-Q		a2$6a2$6776<((r[   c                 `    |xs t        j                         }t        j                  | |      S r  r  r  s     r   emptyr  a  r  r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t	        j                  | |      S r   )r   r   rC   r<   r'   r   r_  r   s      r   r_  r_  f  sa    	2	B	2	Brxx2E	U	B	U	B88Br[   c                     t        |       } t        | j                        }d|v s|dk(  r(t        j                  | t        j                               } t        j                  |       S NrA   r   )r   r   r<   r'   r   r   rR   exprV   r  s     r   r  r  o  sM    !A!!''*I	Y&0GGAv}}'66!9r[   c                     t        |       } t        | j                        }d|v s|dk(  r(t        j                  | t        j                               } t        j                  j                  d|       S )NrA   r   rQ   )	r   r   r<   r'   r   r   rR   rp   powr  s     r   exp2r  x  sT    !A!!''*I	Y&0GGAv}}'77;;sAr[   c           	         t        |       } t        |      }t        | j                        t        |      z   }t	        |D cg c]  }t        ||       c}      }t        | t        j                        rSddl	m
}  || j                  |      }|D ]"  }t        j                  j                  | |      } $ | j                  |       | S |D ]  }t        j                  | |      }  | S c c}w )Nr   ) compute_expand_dims_output_shape)r   r
   r#   r   sortedr	   r@   r'   rn   r   r  r   r   r   )rV   r   out_ndimr   r  rt   s         r   r   r     s    !AD!D177|c$i'H4@a$Q1@AD!R__%	
 8F 	,A		%%a+A	,	L! !NN1a !H As   C'c                     t        |       } t        | j                        }d|v s|dk(  r(t        j                  | t        j                               } t        j                  j                  |       S r  )	r   r   r<   r'   r   r   rR   rp   expm1r  s     r   r  r    sR    !A!!''*I	Y&0GGAv}}'77==r[   c                     t        |       } |<t        j                  | t        j                  t        j                  |                   S t        j                  | |g      S r   )r   r'   r+   r%   r   r  s     r   flipr    sF    !A|zz!RXXbggaj122::a$  r[   c                    t        |       } t        | j                        dk(  rt        j                         n#t        j                  | j                  t              }t        j                  | |      } t        j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   floorr  s     r   r   r     sc    !A QWW%0 	/ 

 	5A88A;r[   c                 v    |xs t        j                         }t        ||      }t        j                  ||       S r   )r   rR   r   r'   r  )r   
fill_valuer<   s      r   fullr#    s/    $V]]_E":u5J??:u--r[   c                     t        |       } t        j                  |xs | j                        }t        ||      }t	        j
                  |t	        j                  |             S r   )r   r   rC   r<   r'   r  r   )rV   r"  r<   s      r   	full_liker%    sJ    !Au/0E":u5J??:rxx{33r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t	        j                  | |      S r   )r   r   rC   r<   r'   r   greaterr   s      r   r'  r'    sa    	2	B	2	Brxx2E	U	B	U	B::b"r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t	        j                  | |      S r   )r   r   rC   r<   r'   r   r  r   s      r   r  r    sc    	2	B	2	Brxx2E	U	B	U	BB##r[   c                 l   t        | D cg c]  }t        |dt        |             c}      }t        |      dkD  r+t	        j
                  | t        j                  fd|       } t        | d   j                        dk(  rt        j                  | d      S t        j                  | d      S c c}w )Nr<   r   c                     t        |       S r   r   r  s    r   r   zhstack.<locals>.<lambda>      *;Au*E r[   r   r    )r   rD   rE   r#   r   rC   r   r   r   r'   r*   r  rV   r  r<   s      @r   hstackr-    s    2>aWQa1>?I
9~""I. ErJ
2a5;;1yy!$$99Ra   ?s   B1c                     t        | | |      S )N)NMr<   )eye)rW   r<   s     r   r  r    s    au%%r[   c                 @    t         j                  j                  |       S r   )r'   rp   imagra   s    r   r3  r3    r  r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }d|v rRt	        j                  | |z
        ||t	        j                  |      z  z   k  }|r|t        |       t        |      z  z  }|S t	        j                  | |      S )NrB   )	r   r   rC   r<   r'   r   r  r   r_  )rK   rL   rtolatol	equal_nanr<   r   s          r   iscloser8    s    	2	B	2	Brxx2E	U	B	U	B%RTD266":,=%=>vbzF2J67FxxBr[   Tc                     t        |       } t        j                  | j                        }|j                  s|j
                  s.t        j                  | j                  t        j                        S t        j                  j                  |       S r   )r   r'   as_dtyper<   
is_integer
is_numericrT   r   r   rp   	is_finiterV   dtype_as_dtypes     r   isfiniter@    s]    !A[[)N  (A(Awwqww((77Qr[   c                     t        |       } t        j                  | j                        }|j                  s|j
                  s.t        j                  | j                  t        j                        S t        j                  j                  |       S r   )r   r'   r:  r<   r;  r<  r  r   r   rp   is_infr>  s     r   isinfrC    [    !A[[)N  (A(Axx))77>>!r[   c                     t        |       } t        j                  | j                        }|j                  s|j
                  s.t        j                  | j                  t        j                        S t        j                  j                  |       S r   )r   r'   r:  r<   r;  r<  r  r   r   rp   r   r>  s     r   isnanrF    rD  r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t	        j                  | |      S r   )r   r   rC   r<   r'   r   lessr   s      r   rH  rH    s`    	2	B	2	Brxx2E	U	B	U	B772r?r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t	        j                  | |      S r   )r   r   rC   r<   r'   r   r  r   s      r   r  r    sa    	2	B	2	Brxx2E	U	B	U	B==R  r[   c                 Z   |dk  rt        d|       |Dt        | dt        |             t        |dt        |            t        g}t	        j
                  | }nt        |      }t        | |      } t        ||      }t        t        j                        }|r>t        j                  | |||      }	|dkD  r|| z
  t        j                  ||      dz
  z  }n|dkD  r|| z
  t        j                  ||      z  }|dkD  r]t        j                  ||j                        |z
  }
t        j                  | |
j                        } t        j                  | |
||      }	nt        j                  | |||      }	|/d|v rt        j                  |	      }	t        j                  |	|      }	|r|	|fS |	S )Nr   z4`num` must be a non-negative integer. Received: num=r<   rP   r    r   rA   )r"   rD   rE   rB   r   rC   r   r   ra  nanr'   linspacer   r<   r   )r8  r9  numendpointretstepr<   r   rq   r:  r   new_stops              r   rL  rL    s    QwB3%H
 	
 }E7DK0D'4:.

 ""$56!%(e51ET/DRVV$DUD#D975LRWWS%%81%<=D 75LBGGC$77D7wwtTZZ047HGGE8>>2E[[#DAF[[c=FE>XXf%F'~r[   c                 "   t        |       } t        | j                        dk(  rt        j                         n#t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   logr  s     r   rR  rR  H  sg    !A QWW%0 	/ 

 	5A77;;q>r[   c                    t        |       } t        | j                        dk(  rt        j                         n#t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       t        j                  j                  t        j                  d| j                              z  S )Nrd   
   r   r   r<   r   rR   r   rC   rB   r'   r   rp   rR  rS   r  s     r   log10rV  T  s    !A QWW%0 	/ 

 	5A77;;q>BGGKKB(@AAAr[   c                 "   t        |       } t        | j                        dk(  rt        j                         n#t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   log1pr  s     r   rX  rX  `  sh    !A QWW%0 	/ 

 	5A77==r[   c                    t        |       } t        | j                        dk(  rt        j                         n#t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       t        j                  j                  t        j                  d| j                              z  S )Nrd   r   rU  r  s     r   log2rZ  l  s    !A QWW%0 	/ 

 	5A77;;q>BGGKKAqww(?@@@r[   c                 &   t        |       } t        |      }t        j                  | j                  |j                  t              }t        j                  | |      } t        j                  ||      }| |z
  }t        j                  t
        j                  j                  |      | |z   t        j                  | |      t
        j                  j                  t
        j                  j                  t        j                  |                   z         S r   )r   r   rC   r<   rB   r'   r   rU   rp   r   r  rX  r  r  )rK   rL   r<   r5  s       r   	logaddexpr\  x  s    	2	B	2	Brxx59E	U	B	U	BGE88
u
R


2rRWW]]277;;u~+FGG r[   c                     t        j                  | d      } t        j                  |d      }t        j                  | |      S Nr   )r'   r   r^  rK   rL   s     r   r^  r^    s3    	V	B	V	B>>"b!!r[   c                 X    t        j                  | d      } t        j                  |       S r^  )r'   r   logical_notra   s    r   ra  ra    s!    
6A>>!r[   c                     t        j                  | d      } t        j                  |d      }t        j                  | |      S r^  )r'   r   r  r_  s     r   r  r    s3    	V	B	V	B==R  r[   c                     t        | |||||      }t        j                  t        j                  ||j                        |      S )N)r8  r9  rM  rN  r<   r   )rL  r'   r  r   r<   )r8  r9  rM  rN  baser<   r   r   s           r   logspacere    s@    F 66"''$-v66r[   )densify_mixedc           
      ^   t        | t        t        f      st        |       } t        |t        t        f      st        |      }t	        j
                  t        | dt        |             t        |dt        |                  }t        | |      } t        ||      }t        j                  | |      S r   )
r@   rA   rB   r   r   rC   rD   rE   r'   r  r   s      r   r  r        b3,'r"b3,'r"GT"X&GT"X&E 
2u	%B	2u	%B::b"r[   c                      t        | d||      S )Nr=  r   )quantiler$  s      r   medianrk    s    As99r[   xyindexingc                 ,    t        j                  |d| iS )Nrn  )r'   meshgrid)rn  rV   s     r   rp  rp    s    ;;-H--r[   c                    t        |       } |t        | j                        dk(  rvt        j                  | ||      } t        j
                  j                  t        j                  | d      t        j                  |d            } t        j                  | d      S t        j                  | ||      } t        j
                  j                  | |      S t        j                         rBt        |       }t        j                  |t        j                  d|j                        d       t        | j                        dk(  rt        j                  | ||      S t        j                  | ||      S )Nr   r   r^   r   rP   z*Cannot compute the min of an empty tensor.r  )r   r   r<   r'   r#  rp   minimumr   
reduce_minr  r  r  rS   r  s        r   r1  r1    s   !A QWW%/adX>A7 3RWWWg5NOA771f%%adX>Awwq'** 
a
KK.@	
 !V+}}QTH==}}QTH==r[   c           
      ^   t        | t        t        f      st        |       } t        |t        t        f      st        |      }t	        j
                  t        | dt        |             t        |dt        |                  }t        | |      } t        ||      }t        j                  | |      S r   )
r@   rA   rB   r   r   rC   rD   rE   r'   rr  r   s      r   rr  rr    rh  r[   c                 (   t        |       } t        |      }t        j                  | j                  |j                        }|dk(  rd}t	        j
                  | |      } t	        j
                  ||      }t        j                  j                  | |      S r  )r   r   rC   r<   r'   r   rp   modr   s      r   rv  rv    sq    	2	B	2	Brxx2E	U	B	U	B77;;r2r[   c                     t                t        |      }t        |      }t         fd|D              }t         fd|D              }t        |      t        |      k7  rt	        d| d|       ||k(  r S t         j                        D cg c]	  }||vs| }}t        t        ||            D ]  \  }}|j                  ||        t        j                   |      S c c}w )Nc              3   J   K   | ]  }t        |j                          y wr   r	   r\  r   r/   rV   s     r   r   zmoveaxis.<locals>.<genexpr>  s     BQ%a0B    #c              3   J   K   | ]  }t        |j                          y wr   ry  rz  s     r   r   zmoveaxis.<locals>.<genexpr>  s     L!*1aff5Lr{  zDInconsistent number of `source` and `destination`. Received: source=z, destination=)r   r
   r$   r#   r"   r%   r\  r  zipinsertr'   r(   )	rV   sourcedestination_source_destinationr/   r0   destsrcs	   `        r   r  r    s    !Av&G#K0LB'BBGL|LLL
7|s<((  &x~k]D
 	

 ,QVV}9!(8A9D9Cg67 	cD#<<4   :s   	C&C&c                    t        |       } | j                  }t        j                  |      }|j                  s|j
                  s| S t        j                  t        j                  j                  |       t        j                  ||      |       } ||j                  }t        j                  t        j                  j                  |       | dkD  z  t        j                  ||      |       } ||j                  }t        j                  t        j                  j                  |       | dk  z  t        j                  ||      |       } | S rt  )r   r<   r'   r:  r;  r<  rU   rp   r   rS   r  rB  r1  )rV   rK  posinfneginfr<   r?  s         r   
nan_to_numr    s    !AGGE[['N  (A(A 	"BKKU$;Q?A ~
"a!e,bkk&%.H!LA ~
"a!e,bkk&%.H!LAHr[   c                 0    t        |       } | j                  S r   )r   r\  ra   s    r   r\  r\    s    !A66Mr[   c                     t        |       } t        j                  t        j                  t        j                  | d            | j
                  j                  d      }t        j                  d |      S )Nr   r   r    c                 .    t        j                  | d      S )Nr^   r   )rj   s    r   r   znonzero.<locals>.<lambda>'  s    bgggw.G r[   )	r   r'   unstackrU   r   r   r   r   r   )rV   r   s     r   nonzeror  $  sN    !AZZF!34aggllKFGPPr[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t	        j                  | |      S r   )r   r   rC   r<   r'   r   r  r   s      r   r  r  *  sa    	2	B	2	Brxx2E	U	B	U	B<<Br[   c                 0    t        j                  | |      S r  )r'   	ones_liker  s     r   r  r  3  s    <<''r[   c                 0    t        j                  | |      S r  )r'   
zeros_liker  s     r   r  r  7  s    ==%((r[   c                 :   t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t	        j                  | ddg      t	        j                  |dg      z  S )Nr   r   )r   r   rC   r<   r'   r   r)   r   s      r   outerr  ;  sw    	2	B	2	Brxx2E	U	B	U	B::b2q'"RZZRD%999r[   c                     t        |       } i }||dk7  rt        d|       ||d<   t        |d      }t        j                  | ||j	                         fi |S )NrS   zZArgument `constant_values` can only be provided when `mode == 'constant'`. Received: mode=constant_valuesr^   )r   r"   r'   r  upper)rV   	pad_widthmoder  r   s        r   r  r  D  sr    !AF":""&) 
 %4 !!)W5I66!Y

777r[   c                     t        |       } |Jt        j                  | j                        }|dk(  rd}n|dv rd}n|dv rd}t	        j
                  | |      } t	        j                  | ||      S )Nr   r^   )r   r  rk  r  r  r   )r   r   rC   r<   r'   r   r   rV   r   r   r<   s       r   r   r   S  sp    !A}""177+F?E''E))EGGAu>>!$::r[   c                 x   t        j                  d      |t        j                  | dg      n]t        | j                        }|D cg c]  }t        ||       }}t        t        t        |            j                  |            }|t        |      z   }t        j                  | |      }	d | j                  vrTt        | j                        }
|D cg c]  }|
|   	 }}t        j                  |D cg c]  }|
|   	 c}      g}||z   }net        j                  t        j                  |       t        j                  |t         j                              }t        j                   |dggd      }t        j                  |	|      t        j"                  dd      }t        j                  t        j                        d   d      fd	}|d
v r t        j                  | ||      d      }n'|dk(  rAdt        j                  | |d      d      t        j                  | |d      d      z   z  }n|dk(  r |d      }dz
  z  }t        j$                  |dz
  d      }t        j&                  |dz   t        j                        d   dz
        }t        j                  |t         j(                        |z
  }t        j                  |j*                        }t        j                  ||d      d|z
  z  t        j                  ||d      |z  z   }| j*                  t         j,                  t         j.                  t         j0                  t         j(                  fv rt        j2                  t         j                  j5                  |       |      }t        j6                  t        j                  |      dt        j8                        ggd      }t        j                  ||      }t        j:                  t=        d      | j*                        }t        j>                  ||      }|r|ft        j@                  t        j8                  |       t        j8                        z   gd      }t        j@                  ||j*                        z  }n't        |      D ]  }t        jB                  |      } t        jD                  t        j8                              }t        jF                  j                        j8                  }|dk  r|S tI        t        jJ                  d|      tM        jN                  |      |z  z        }|dk(  r|S tQ        jR                  t        |            }|jU                  |       t        j                  ||      S c c}w c c}w c c}w )Nrf   r   )r   r0   r   r    r   	ASCENDING)r   	directionc                 x   | dk(  r&t         j                  j                  dz
  z        }nK| dk(  r&t         j                  j                  dz
  z        }n | dk(  rt        j                  dz
  z        }t        j
                  t        j                  d      dt        j                        d   dz
        S )z1Get values of y at the indices implied by method.lowerr   highernearestr^   r   r   )r'   rp   r   r  roundr  r   r   )methodrj   rM   qr   s     r   _get_indicesz_quantile.<locals>._get_indices  s    WggmmQUaK0GxggllAEQ;/Gy hhA{+G GGGW%q"((1+b/A*=
 	
r[   )r  r  r  midpointr=  r  r  linearr   )paddingsr  NaNrP   r^   r  r   )+r'   r   r)   r#   r   r	   r  r   r%   
differencer   r(   rp   r   r   rd   r*   r   r  rr  rf   r<   r  r  re   r
  r   r  r   rS   rB   rU   rT   r   get_static_valueTensorShaperA   copysignr  r  collectionsdequerotate)rV   r  r   r  r   x_ndimsr   
other_dimsr0   x_permedrm  r/   other_shape	end_shape
full_shapesorted_yr  
gathered_ylarger_y_idx	exact_idxsmaller_y_idxfractionnan_batch_membersright_rank_matched_shape	nan_valueones_vecshift_value_staticndimsrM   r   s    `                          @@r   	_quantiler  a  s    	9A |JJq2$agg,7;<!!!W-<< Cg/::4@A
DJ&<<!$/qww177mG/9:!71::K:#=1GAJ#=>?I$y0J))BHHQKRXX1NOKK"#6Q?JJJxz2 wwqr[9H
B+A
 //YYxf)=BG
	:	IIhW 5B?ii,x"8rBC

 
8	#H-UaK	

<!#3Q7zz-!"3RXXa[_q5HI77<4y@778QWW-IIh26!h,Gii-b9HDE 	 	ww2;;

BJJ

CCMM"''..*;$G#%66HH&'"''!*o&$
 
 JJ%=
 KKeAGG<	XX/JG
 <wwbggaj2771:&=%>gNH"''(*2B2BCCJD\ @^^JQ?
@ ,,RWWQZ8NN:++,11Eqya+,<<*+e3	5 QU5\*DKK"#<<*400{ = ;#=s   V-V2<V7c                     t        |       } t        |      }t        |      }t        j                  | j                  t
              }t        j                  | |      } t        | ||||      S )N)r   r  r   )	r   r
   r   rC   r<   rB   r'   r   r  )rV   r  r   r  r   r   s         r   rj  rj    sY    !A!AD!D&&qww6M
=!AQVhGGr[   c                 F    t        |       } t        j                  | dg      S r  )r   r'   r)   ra   s    r   ravelr    s    !A::a"r[   c           	          t        j                  |       } | j                  }d |v rt        d|       | j                  dk(  rSg }t        |      D ]/  }|j                  t        j                  | |z  |             | |z  } 1 t        t        |            S | j                  }g }|D ]C  }|j                  t        j                  t        j                  | |z  |      |             | |z  } E t        t        |            S )Nz8`shape` argument cannot contain `None`. Received: shape=r   )r'   r   r<   r"   r\  reversedrm   r   r$   r   r)   )rV   r   input_dtypecoordsdimrm  s         r   unravel_indexr    s    
QA''Ku}FugN
 	
 	vv{E? 	CMM"''!c';78SA	 Xf%&&ggGF bjjS+!>HIH &!""r[   c                 V    t        |       } t        j                  j                  |       S r   )r   r'   rp   realra   s    r   r  r    s    !A77<<?r[   c                 V    t        |       } t        j                  j                  |       S r   )r   r'   rp   
reciprocalra   s    r   r  r    s!    !A77a  r[   c                     t        |       } t        | j                        dk(  rBt        j                  | d      } t        j                  t        j
                  | ||      d      S t        j
                  | ||      S )Nr  r  r    )r   r   r<   r'   r   repeat)rV   repeatsr   s      r   r  r     s^    !A!X-GGAx wwryyG$7BB99Qd++r[   c                    t        |       } t        | t        j                        rMddlm}  || j                  |d      }t        j                  j                  | |      }|j                  |       |S t        j                  | |      S )Nr   )compute_reshape_output_shapenewshape)
r   r@   r'   rn   r   r  r   r   r)   r   )rV   r  r  rt   rr   s        r   r)   r)   	  sn    !A!R__%N3GGXz
 ""1h/&::a""r[   c                     t        |       } |t        j                  | ||      S t        j                  |       }t        j                  t        j                  | dg      |d      } t        j                  | |      S )N)shiftr   r   r   )r   r'   rollr   r)   )rV   r  r   original_shapes       r   r  r    sd    !AwwqD11 XXa[N


1rd#UA.A::a((r[   c                     t        |       dk7  rt        d| j                         t        |       t	        j
                  t        j                        j                  k  rdnd}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=r^   rd   )sideout_type)
r\  r"   r   r#   ra  iinfor^   r  r'   searchsorted)sorted_sequencerk   r  r  s       r   r  r  "  s{    O!% &5%:%:$;=
 	
 '288BHH+=+A+AAw  ??dX r[   c                     t        |       } t        | j                        }|dv r?t        j                  | d      } t        j                  t        j
                  |       |      S t        j
                  |       S )N)rk  r  r  r^   )r   r   r<   r'   r   signr  s     r   r  r  2  sZ    !A!!''*I11GGAwwwrwwqz9--771:r[   c           	         t        |       } t        | j                        }|dk(  r)t        j                  t        j
                  |       d      S d|v r| dk  S t        | d      } t        j                  t        j                  j                  t        j                  | t        j                        t        j                  t        j                  j                  t        j                              d      S )Nr   FrA   r   re   rP   )r   r   r<   r'   fillr   r   rH  ry  rz  bitcastr^   rS   r1  r  s     r   r`  r`  =  s    !A!!''*IFwwrxx{E**	)	1uIwwJJ""

1bhh'BHHLL9
 
 	
r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   sinr  s     r   r  r  Q  r  r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   sinhr  s     r   r  r  \  rA  r[   c                 B    t        |       } t        j                  |       S r   )r   r'   r  ra   s    r   r  r  g  s    !A771:r[   c                     t        |       } t        | j                        }|dk(  rAt        j                  | d      } t        j                  t        j
                  | |      |      S t        j
                  | |      S )Nr   r   r    )r   r   r<   r'   r   r   )rV   r   r  s      r   r   r   l  s_    !A!!''*IFGGAvwwrwwqt,i887714  r[   c                     t        |t              sK| j                  |   }t        |      }|dd }||dd  z
  }t	        j
                  |t        |      |gd      }n|}t	        j                  | ||      S )Nr   r   r   r    )r@   rA   r   r   r'   r*   r  split)rV   indices_or_sectionsr   
total_size
start_sizeend_sizenum_or_size_splitss          r   r  r  v  s    )3/ WWT]
/0CD(1-
 3BC 88YY12H=A
 188A)55r[   c                    t        | D cg c]  }t        |dt        |             c}      }t        |      dkD  r+t	        j
                  | t        j                  fd|       } t        j                  | |      S c c}w )Nr<   r   c                     t        |       S r   r   )r   r<   s    r   r   zstack.<locals>.<lambda>  s    ):1e)D r[   r    )
r   rD   rE   r#   r   rC   r   r   r'   stack)rV   r   r   r  r<   s       @r   r  r    sj    1=aWQa1=>I
9~""I.DaH88AD!!	 >   A?c                     t        |       } t        | j                        }d|v s|dk(  r(t        j                  | t        j                               } t        j                  j                  | ||      S )NrA   r   r   )	r   r   r<   r'   r   r   rR   rp   
reduce_std)rV   r   r   r  s       r   stdr    s[    !A!!''*I	Y&0GGAv}}'77adX>>r[   c                    t        |       } | j                  j                  |t        |t              rlt        |t              r\t        || j                        }t        || j                        }||k(  r| S t        t        | j                              }|||<   |||<   nt        j                  |       }t        j                  |dk  t        j                  ||      |      }t        j                  |dk  t        j                  ||      |      }t        j                  |      }t        j                  ||g|gg||g      }t        j                  | |      S rt  )r   r   r   r@   rA   r	   r\  r   r%   r'   rU   rJ   tensor_scatter_nd_updater(   )rV   r  r  r0   r  s        r   swapaxesr    s   !A 	
 uc"uc" "%0!%0 E>HE!&&M"UUBFF5&$95ABFF5&$95Axx**E7UG$uen
 <<4  r[   c                     t                t        j                   d       d fd}t        |t        j                        rc j
                  t        j                  t        j                  t        j                  t        j                  fvr2t        j                  d j
                   d       t        |d      }n_dk7  r(t        j                  d d       t        |d      }n2t        j                  | ||j                              }t        j                  j!                  t        j                          t        j                  j#                  |d	
      d      }|j%                  |j&                  |j&                  t)        |j&                        d  z          |S t        |t        j*                        r^|j-                   ||j                              }dk(  r t        j                  j/                   |      S t        j0                   |
      S  |t        |            }t        j0                   |
      S )Nr   r   c           	          t        j                  | dk  | t        j                  t        j                           | j                        z   |       S rt  )r'   rU   r   r   r<   )r/   r   rV   s    r   fix_negative_indicesz"take.<locals>.fix_negative_indices  s;    xxAq277288A;t+<agg#FFJJr[   z=`take` with the TensorFlow backend does not support `x.dtype=z:` when `indices` is a sparse tensor; densifying `indices`.Fr   z:`take` with the TensorFlow backend does not support `axis=r   r    )embedding_weights
sparse_ids
default_id)r   r'   r)   r@   rn   r<   r  re   rf   r  warningswarnr   sparse_with_valuesrk   rH   safe_embedding_lookup_sparser   r   r   r#   r  with_valuesembedding_lookupr   )rV   rj   r   r  rr   s   ` `  r   taker    s   !A|JJq% K '2??+772::rzz2::r{{KKMMGG9 %((
 (>GQYMM ((
 (>G//-gnn=G UU77"$"6"6q"99900r0B 8 F
 W]]V\\#gmm:L:N-OOPM	GR__	-%%&:7>>&JK1955))!W5599Qd33"#4W#=>G99Qd++r[   c           	      t   ddl m} t        |       } t        |d      }|I|j                  dk7  rt	        d|j
                         t        t        j                  | dg      |d      S |j                  | j
                  |j
                  |      }| j                  }|}|dk  r||z   n|}||k\  rt	        d| d|       t        |       }t        |      }t        | j
                        }	t        |j
                        }
d|	|<   d|
|<   |j                  |	|
      }d |v r;t        |      D cg c]%  \  }}|t        j                  ||   ||         n|' }}}t        |      }||   ||<   t        |      }||   ||<   t        j                  | |      } t        j                  ||      }t        j                   |dk  |t        j"                  ||   |j$                  	      z   |      }t'        | |d      } t'        ||d      }t        j
                  |       }t        j                  | d|d   g      } t        j
                  |      }t        j                  |d|d   g      }t        j(                  | |d
      }t        j                  ||      }t'        ||d      }|j+                  |       |S c c}}w )Nr   )operation_utilsrd   r   z;`indices` must be 1D if axis=None. Received: indices.shape=r   zInvalid axis: z for input rank: rP   )
batch_dims)keras.src.opsr  r   r\  r"   r   take_along_axisr'   r)   $compute_take_along_axis_output_shaperV  r   broadcast_shapesr,   r  r  rU   r   r<   r  r   r   )rV   rj   r   r  static_output_shaper   static_axisx_original_shapeindices_original_shapex_static_shapeindices_static_shapebroadcast_shaper/   r  rm  indices_shaper   s                    r   r  r    s   -!A1G|<<1++2==/;  rzz!bT2GQ?? *NN	 66DK(4$;Dt|>+6GvNOO{%g. !'']N.N4!"%66,O  $O4	
 3 { JJ'*,B1,EF
 
 ?#G$T*GDM)M06M$
7#Aoog}5G hh!"'''+.gmmDDG 	K$AwR0GhhqkG


1r72;'(AHHW%Mjj2}R'8"9:GYYq'a0FZZ.Ffk2.F
()MC
s   .*J4c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   tanr  s     r   r  r  5	  r  r[   c                 $   t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   tanhr  s     r   r  r  @	  rA  r[   c                 h   t        |       } t        |      }t        j                  | j                  |j                        }t        j                  |t              }t        j                  | |      } t        j                  ||      }t        j                  t        j                  | ||      |      S )Nr   rP   )r   r   rC   r<   rB   r'   r   r   )rK   rL   r.   r   r   s        r   r   r   K	  s    	2	B	2	B%%bhh9L&&|U;M	]	#B	]	#B772<<BT2,GGr[   c                 z   |dk(  rt        j                  |       S | j                  }t        j                  |      j                  rl|dkD  r| S t        j
                  t        j                  d|      t        j                               }t        j
                  | t        j                               } n4t        j
                  t        j                  d|      | j                        }t        j                  | |      } t        j                  |       } t        j                  | |      } t        j
                  | |      S )Nr   rT  )r'   r  r<   r:  r;  r   rp   r  r   rR   r   divide)rV   decimalsx_dtypefactors       r   r  r  V	  s    1}xx{ggG	{{7&&a<H"h/AGGAv}}' "h/9
AvA
A
		!VA771gr[   c                    t        |       } t        j                  t        |d      dg      }t        j                  |      }t        j                  |t        j
                  | j                  j                  |z
  d      dggd      }t        j                  t        j                  |       t        j
                  || j                  j                  z
  d      dggd      }t        j                  | |      } t        j                  | |      S )Nr^   rP   r   r   r   )r  )	r   r'   r)   r  r  r  r   r   tile)rV   r  repeats_sizerm  s       r   r'  r'  k	  s    !Ajj*7'BRDIG777#Lff
**QWW\\L0!
4a	89G
 ff

**\AGGLL0!
4a	89G
 	

1gA771gr[   c                    t        |       } t        | j                        }|dvrt        j                  |d      }t        j                  |       }t        | ||fd      } t        j                  t        ||   ||   |d      | t        j                  |             } t        | j                        dk(  rt        j                  | d      } t        j                  t        j                  | d      |      S )N)rd   r  uint64r^   r  r   )r-   r<   r    )r   r   r<   r   rC   r'   r   r  rU   r1  r  r   r   )rV   r  r  r  r<   rm  s         r   tracer+  }	  s    !Aagg&E11""5'2hhqkGUENH-A
GENGENfFC	
a	A !V+GGAw772==2E::r[   c           	         ||n| }t        |xs t        j                               }|dk  r| dz
  }|| kD  rt        j                  | |g|      }|S t        j
                  | |gd      }t        j                  t        j                  t        j                  j                  ||d            |      }|S t        j
                  | |g|      }||kD  r|}|S t        j                  j                  |d|      }|S )Nr   r   rP   r   r   )
r   r   rR   r'   r  rT   r   ra  r  	band_part)r/  r0  r-   r<   r  ros          r   trir0  	  s    ]Ae6v}}7E1uQ19!Qu-A H Af-Aryy221eR@AA H GGQF%(q5A H 		##Ar1-AHr[   c                      t                 fd}t        t              r-dk\  r!t        j                  j                   d      S  |       S t        j                  t        j                  d       fd|      S )Nc                  P   t        j                        } | d   | d   }}t        j                  t        j                  |      t        j                  |      d      \  }}||z
  k\  }t        j                  t        j
                  ||       t        j                              S Nr   r   ijrm  r'   r   rp  r%   rU   r  r  r   rowscolsr/   jmaskr-   rV   s         r   _negative_k_branchz tril.<locals>._negative_k_branch	  {    2Yb	d{{288D>288D>DI1AEzxxe4aq9IJJr[   r   r   c                  F    t         j                  j                  d       S r  r'   r  r-  r  s   r   r   ztril.<locals>.<lambda>	  s    		##Ar1- r[   )r   r@   rA   r'   r  r-  r  r  )rV   r-   r;  s   `` r   trilr?  	  sq    !AK !S699&&q"a00!## 77
A- r[   c                     t                 fd}t        t              r.dk  r"t        j                  j                    d      S  |       S t        j                  t        j                  d       fd|      S )Nc                  P   t        j                        } | d   | d   }}t        j                  t        j                  |      t        j                  |      d      \  }}||z
  k  }t        j                  t        j
                  ||       t        j                              S r3  r5  r6  s         r   _positive_k_branchz triu.<locals>._positive_k_branch	  r<  r[   r   r   c                  H    t         j                  j                    d      S r  r>  r  s   r   r   ztriu.<locals>.<lambda>	  s    		##Ar2. r[   )r   r@   rA   r'   r  r-  r  r  )rV   r-   rB  s   `` r   triurD  	  sq    !AK !S699&&q1"b11!## 77
a. r[   c                     t        |       } t        | j                        }|dk(  sd|v r| S t        j                  | dk  t        j
                  j                  |       t        j
                  j                  |             S )Nr   rA   r   )r   r   r<   r'   rU   rp   r  r   r  s     r   truncrF  	  s\    !Aagg&E%5.88AE277<<?BGGMM!,<==r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t        j                  |t              }t        j                  | |      } t        j                  ||      }t        j                  | dg      } t        j                  |dg      }t        j                  t        | |      |      S r  )	r   r   rC   r<   rB   r'   r   r)   r  )rK   rL   r   r   s       r   vdotrH  	  s    	2	B	2	B%%bhh9L&&|U;M	]	#B	]	#B	B	B	B	B773r2;--r[   c           
      |    t                t              t        j                   j                  j                        }t        j                  |t              }t        j                   |       t        j                  |      t        j                  t
        j                  j                  t
        j                  j                  t        j                         d      t
        j                  j                  t        j                        d             fd fd      }t        j                  ||      S )Nr   c                       z  S r   r  r_  s   r   r   zinner.<locals>.<lambda>	  s    R r[   c                  <    t        j                   dgdgg      S )Nr   r   )r'   r   r_  s   r   r   zinner.<locals>.<lambda>	  s    RB4",7 r[   )r   r   rC   r<   rB   r'   r   r  rp   r  r_  r   )rK   rL   r   r   rV   s   ``   r   innerrL  	  s    	2	B	2	B%%bhh9L&&|U;M	]	#B	]	#B

GGMM"''"+q)GGMM"''"+q)	
 	7	A 771l##r[   c                    t        | D cg c]  }t        |dt        |             c}      }t        |      dkD  r+t	        j
                  | t        j                  fd|       } t        j                  | d      S c c}w )Nr<   r   c                     t        |       S r   r   r  s    r   r   zvstack.<locals>.<lambda>	  r+  r[   r   r    )
r   rD   rE   r#   r   rC   r   r   r'   r*   r,  s      @r   vstackrO  	  sj    2>aWQa1>?I
9~""I. ErJ99Ra  	 ?r  c                 b     |dk7  rt        d      t        j                          fd       }|S )Nr   z=Not supported with `vectorize()` with the TensorFlow backend.c                 0    t        j                  |       S r   )r'   vectorized_map)rV   fns    r   wrappedz_vmap_fn.<locals>.wrapped
  s      Q''r[   )r"   	functoolswraps)rS  in_axesrT  s   `  r   _vmap_fnrX  
  s>    !|K
 	
 __R( ( Nr[   excluded	signaturec                (    t        | t        ||      S )NrY  )r   rX  )pyfuncrZ  r[  s      r   	vectorizer^  
  s    8y r[   c           
         t        j                  | d      } ||t        |t        t        f      st        |      }t        |t        t        f      st        |      }t        j                  t        |dt        |            t        |dt        |                  }t        ||      }t        ||      }t        j                  | ||      S ||t        |       S t        d      )Nr   r<   zN`x1` and `x2` either both should be `None` or both should have non-None value.)r'   r   r@   rA   rB   r   r   rC   rD   rE   rU   r  r"   )	conditionrK   rL   r<   s       r   rU   rU   
  s    	6*I	~"."sEl+"2&B"sEl+"2&B""Bb*Bb*
 r5)r5)xx	2r**	zbjy!!
	/ r[   c           
      h   t        | t        t        f      st        |       } t        |t        t        f      st        |      }t	        j
                  t        | dt        |             t        |dt        |            t              }t        | |      } t        ||      }t        j                  | |      S r   )
r@   rA   rB   r   r   rC   rD   rE   r'   r"  r   s      r   r"  r"  *
  s    b3,'r"b3,'r"GT"X&GT"X&E
 
2u	%B	2u	%B99Rr[   c           
      |   t        | t        t        f      st        |       } t        |t        t        f      st        |      }t	        j
                  t        | dt        |             t        |dt        |            t              }t        | |      } t        ||      }t        j                  j                  | |      S r   )r@   rA   rB   r   r   rC   rD   rE   r'   rp   divide_no_nanr   s      r   rc  rc  :
  s    b3,'r"b3,'r"GT"X&GT"X&E
 
2u	%B	2u	%B77  R((r[   c                     t        | |      S r   )r"  r_  s     r   true_dividere  I
  s    "b>r[   c           
         t        | t        t        f      st        |       } t        |t        t        f      st        |      }t	        j
                  t        | dt        |             t        |dt        |                  }d|v rBt        | d      } t        |d      }t        j                  t        j                  | |      |      S t        | |      } t        ||      }t        j                  | |      S )Nr<   r  r^   )r@   rA   rB   r   r   rC   rD   rE   r'   r   r  r   s      r   powerrg  M
  s    b3,'r"b3,'r"GT"X&GT"X&E
 r7+r7+wwrvvb"~u--	2u	%B	2u	%B66"b>r[   c                 ,    t        j                  |       S r   )r'   negativera   s    r   ri  ri  `
  s    ;;q>r[   c                     t        |       } t        | j                        dk(  rt        j                  | d      } t        j
                  |       S r  )r   r   r<   r'   r   squarera   s    r   rk  rk  e
  s;    !A!V+GGAw99Q<r[   c                 "   t        |       } t        | j                        dk(  rt        j                         n#t        j                  | j                  t              }t        j                  | |      } t        j                  j                  |       S r(  )r   r   r<   r   rR   r   rC   rB   r'   r   rp   sqrtr  s     r   rm  rm  m
  sg    !A QWW%0 	/ 

 	5A77<<?r[   c                    t        |       } t        |      }| j                  j                         }|J|D ]  }||   dk7  st	        d| d       t        |D cg c]  }t        |t        |             c}      }t        | t        j                        rt        j                  |       }g }g }t        |      D ]<  \  }}||dk(  rn||v r|j                  ||n||          |j                  |       > t        j                  | j                  |d      }	t        j                  |	| j                  t!        |            S t        j"                  | |      S c c}w )Nr   zCannot squeeze axis=z!, because the dimension is not 1.r    )r   r
   r   rF   r"   r  r	   r#   r@   r'   rn   r,   rm   r   rj   rk   r$   rG   )
rV   r   static_shaper   dynamic_shape	new_shaper  r/   r  new_indicess
             r   rG   rG   y
  sE   !AD!D77??$L 	AA!# *1#-NO 	
 M1(C,=>MN!R__%	- 	)FAs $C1H!t)  ]1=MN%%a(	) ii		>B{AHHeI6FGG::ad## Ns   Ec                     t        | t        j                        rKddlm} t        j
                  j                  | |      }|j                   || j                  |             |S t        j                  | |      S )Nr   )compute_transpose_output_shape)r0   )	r@   r'   rn   r   rt  r   r(   r   r   )rV   r.   rt  rr   s       r   r(   r(   
  s\    !R__%P$$QT$27FG<<%%r[   c                 8   t        |       } t        j                  | j                  d      }t        j                  | j                  t              }t        j                  | |      } t        j                  t
        j                  j                  | ||      |      S )Nre   r   )	r   r   rC   r<   rB   r'   r   rp   reduce_variance)rV   r   r   r   r   s        r   varrw  
  su    !A&&qww	:M%%aggu5L
=!A77
x@ r[   c                    t        |       } t        | j                        }|dv rd}n|dv rd}t        | |      } t	        | t
        j                        r#t
        j                  j                  | ||d      S t        j                  | ||      S )N)r   r   r  r^   r  r  T)r   r   output_is_sparser   )	r   r   r<   r   r@   r'   rn   r   r   r  s       r   r   r   
  s    !Aagg&E))	%	%QA!R__%yy##D8d $ 
 	
 ==99r[   c           	         |xs t        j                         }|| n|}t        |t              r|dk(  rt	        j
                  | ||      S t	        j                  t	        j
                  t	        j                  ||z
  | |z         |      t	        j                  | d      t	        j                  | |z
  |z   d      ft	        j                  |d      t	        j                  || z
  |z
  d      ff      S )Nr   rP   r  )	r   rR   r@   rA   r'   r1  r  rr  r  )r/  r0  r-   r<   s       r   r1  r1  
  s    $V]]_EYAA!Sa1fvva%((66
rzz!a%Q'u5ZZA

1q519a 89ZZ1rzz!a%!)Q78
 r[   c           
      r   t        | t        t        f      st        |       } t        |t        t        f      st        |      }t	        j
                  t        | dt        |             t        |dt        |                  }t        | |      } t        ||      }t        j                  j                  | |      S r   )r@   rA   rB   r   r   rC   rD   rE   r'   rp   floordivr   s      r   floor_divider~  
  s    b3,'r"b3,'r"GT"X&GT"X&E 
2u	%B	2u	%B77B##r[   c                     t        j                  | d      } t        j                  |d      }t         j                  j                  | |      S r^  )r'   r   rp   logical_xorr_  s     r   r  r  
  s9    	V	B	V	B77r2&&r[   c           
      t   t        |       } t        |      }t        j                  t        | dt	        |             t        |dt	        |                  }|t
        j                  k(  rt
        j                  }nA|t
        j                  t
        j                  t
        j                  fvrt
        j                  }t        j                  | |      } t        j                  ||      }t        | j                  d         t        |j                  d         }}|dk(  r(||z   dz
  }||z
  dz  }||z
  dz  }t        j                  | t
        j                  j!                  |      t
        j                  j#                  |      gg      } t        j                  |t
        j                  j!                  |      t
        j                  j#                  |      gg      }t        j$                  | d|df      } t        j$                  ||ddf      }t        j&                  t
        j(                  j+                  | |dd            S t        j$                  | d|df      } t        j$                  ||ddf      }t        j&                  t
        j(                  j+                  | |d|j-                                     S )	Nr<   r   r#  r   r   r{  SAME)stridepadding)r   r   rC   rD   rE   r'   rd   rf   r  r  re   r   rA   r   r  rp   r   r  r)   rG   rH   conv1dr  )	rK   rL   r  r<   x1_lenx2_lenfull_lenx1_padx2_pads	            r   	correlater  
  s   	2	B	2	BGT"X&GT"X&E 

	r{{BJJ

;	;

	U	B	U	B!%s288A;'7FFv~F?Q&V#q(V#q(VV277==0"'',,v2FGH
 VV277==0"'',,v2FGH
 ZZQ!,-ZZXq!,-zz"%%,,r2a,HII	BFA	'B	BA	'B::beell2r!TZZ\lJKKr[   c                 Z    t         j                  j                  j                  | ||      S )N)default)r'   experimentalnumpyselect)condlist
choicelistr  s      r   r  r    s$    ??  ''*g'NNr[   c                 h    t        |       } t        t        j                  j	                  |             S r   )r   r$   r'   r  slogdetra   s    r   r  r    s&    !A""1%&&r[   c                 8   t        | t        j                        } t        | |d      } t        j                  j                  |  |dz         j                  }t        j                  |       d   }t        j                  t        j                  ||t        j                        d      }t        j                  |      }t        j                  t        j                  t        j                  |      d   t        j                              }t        j                  | ||      }t        j                  j                  |t        j                  |       d   |z
  dz
        j                  }	t        j                  ||	g| j                  dz
        }
t        |
d|      S )Nr   r   rP   r   r    )r   r'   r^   r  rp   top_krj   r   r   one_hotrU   rG   r  r  r*   r\  )rV   kthr   
bottom_indrW   r:  rj   updates
final_masktop_indr;  s              r   argpartitionr    s   !RXX&AD"Ar37+33J
BA==JBKDhhtnGjj"((7"3A"6bhhGHG,,QAJggmmJB#(=(ABJJG
))Z)

;CCT""r[   c                     t        j                  | | j                        } |+t        j                  |       }t        j                  |       }n|\  }}t        j
                  | | |k\  | |k  z        } t        j                  |||dz         }|j                         j                         }t         j                  j                  | |dd       }t         j                  j                  |||| j                        }||fS )zComputes a histogram of the data tensor `x`.

    Note: the `tf.histogram_fixed_width()` and
    `tf.histogram_fixed_width_bins()` functions
    yield slight numerical differences for some edge cases.
    rP   r   r   r   )rh   	maxlengthr<   )r'   r   r<   rs  r  boolean_maskrL  r  tolistr  r  rp   ro   )	rV   r  r%   min_valmax_val	bin_edgesbin_edges_listbin_indices
bin_countss	            r   	histogramr  !  s     	Qagg.A }--"--" 
ALQ'\:;AGWdQh7I__&--/N**&&Q>!B;O&PK!!tt177 " J y  r[   )r   )r   r   )Nr   F)NF)NFNr   )Nr   Nr   )NN)r   )r   r   r   N)r   r   r   )r   r   )gh㈵>g:0yE>F)2   TFNr   )r  TrT  Nr   )r[  NN)rS   N)Nr  F)left)r   )Nr   N)valid)r  r  rU  rp   rx   r  r  ra  
tensorflowr'   #tensorflow.python.ops.linalg.sparser   tensorflow.python.ops.math_opsr   	keras.srcr   keras.src.backendr   r   keras.src.backend.commonr   &keras.src.backend.common.backend_utilsr	   r
   r   keras.src.backend.tensorflowr   !keras.src.backend.tensorflow.corer   r   r   rV  r:   elementwise_binary_unionrJ   rZ   rb   ro   	lru_cacher~   r   sparse_subtractr   r   elementwise_binary_intersectionr   r  r  rT   r  elementwise_unaryr  r  r%  r)  r+  r.  r2  rm   r<  densifying_unaryr  r@  rK  rD  rH  rK  rN  rQ  rT  rX  r]  ri  rl  r   rw  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r_  r  r  r   r  r  r   r#  r%  r'  r  r-  r  r3  r8  r@  rC  rF  rH  r  rL  infrR  rV  rX  rZ  r\  r^  ra  r  re  r  rk  rp  r1  rr  rv  r  r  r\  r  r  r  r  r  r  r   r  rj  r  r  r  r  r  r)   r  r  r  r`  r  r  r  r   r  r  r  r  r  r  r  r  r   r  r'  r+  r0  r?  rD  rF  rH  rL  rO  rX  r^  rU   elementwise_divisionr"  rc  re  rg  ri  rk  rm  rG   r(   rw  r   r1  r~  r  r  r  r  r  r  r  r[   r   <module>r     s           E 1  $ / + D C A / 2 ? ?BJ !  /# 0#L7
/d S! !a)H !  !7!78 9G-T '' (J)Z><'
(
  :
:
00	.& ruu% &   !      !  :>$-@( 
'('$(%	%  -$,      
    ><~)(O(
,>4:@)((
    (  !  .4$!&       ! IJ(V "&&! " "&&!B "B   "&&!A "A"
!	7 !  !2!2$G H:  .>< !  !2!2$G H!*0
Q ():8;i1XH
#2  
  ! !!
,#)    
 
&    
!6 "?!>-,`M`    H  ($;&*..>	.$$!
 #'$ ,  )&      $0&: $''LTO'
#*!r[   