
    ij                    &   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$d Z%d Z&d Z'ddZ( ejR                  d      d        Z*d Z+ ejB                  ejX                        d        Z-d Z.ej^                  d        Z0ddZ1ddZ2dd Z3dd!Z4ejj                  d"        Z6d# Z7ejj                  d$        Z8dd%Z9d& Z:dd'Z;dd(Z<dd)Z=dd*Z>dd+Z? ej                  d,ej                  z        d-        ZB ej                  ej                        d.        ZDejj                  d/        ZEejj                  d0        ZFejj                  d1        ZGd2 ZHejj                  d3        ZId4 ZJdd5ZKdd6ZLdd7ZMdd8ZNdd9ZOdd:ZPd; ZQd< ZRd= ZSd> ZTd? ZUd@ ZVdA ZWdB ZXdC ZYdD ZZdE Z[dF Z\ejj                  dG        Z]dH Z^ddIZ_ejj                  dJ        Z`ejj                  dK        Zaejj                  dL        Zb ej                  d      dM        Zc ej                  d      dN        ZdddOZeddPZfddQZgddRZhdS ZidT ZjddUZkddVZld dWZmddXZndY ZodZ Zpd[ Zqdd\Zrdd]Zsd^ Zt ej                  d      d_        Zu ej                  d      d`        Zvda Zwejj                  db        ZxddcZydd Zzde Z{ejj                  df        Z|ddgZ}ddhZ~di ZddkZdl Zdm Zdn Zdo Zdp ZddqZejj                  dr        Zds ZddtZdduZ ej                  dj      dv        ZddwZdx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Z	 ddZ ej                  ej0                         d        Z ej                  ej0                         d        Zejj                  d        Z ej                  ej0                         d        Zd Zd Zd Zd Zd ZddZ ejB                  e	j4                  jF                  dj      d        Zd ZddZdddZddZ ejB                  e	j4                  jP                  dj      d        Zd Zd Zd Zd ZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZd Zd Zd ZddZddZd Zd	dZddZddZddZŐddZƐddZd Zd Zejj                  d        Z ej                  ej0                        d        ZddZd ZddZΐd
dZejj                  d        Zejj                  d        Zejj                  d        Zd Zejj                  d        Zd ZddÄZddĄZddńZddƄZddǄZdȄ ZddɄZddʄZejj                  d˄        Zejj                  d̄        Zߐdd̈́Zejj                  dd΄       Zdτ Zd dЄZddфZdd҄ZddӄZdԄ ZdՄ Zdք Zdׄ Zd؄ ZddلZdddڜdۄZdd܄Zej                  d݄        Zdބ Zd߄ Zd Zejj                  d        Zd Zejj                  d        Zejj                  d        ZddZddZddZddZddZddZddZd Zd Z d ZddZddZd ZddZddZ	 	 	 	 	 	 	 ddZd Zy(      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     w/var/www/html/emotional.easysim.app/public_html/venv/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   hammingrc      s,    !288,A99##A#66r[   c                 z    t        | t        j                        } t        j                  j	                  | d      S r]   )r   r'   r_   r`   hann_windowrb   s    r   hanningrf      s,    !288,A99  U 33r[   c           
         t        |       } t        |      }t        j                  | j                  |j                        }|dv rt	        j
                         }n|dv rd}t        j                  | |      } t        j                  ||      }t        j                  | dk  t        j                  |       t        j                  | dkD  t        j                  |       |            S )Nint8int16r_   uint8uint16uint32int64float64r   )r   r   rC   r<   r   rR   r'   r   rU   
zeros_like	ones_likerK   rL   r<   s      r   	heavisidert      s    	2	B	2	Brxx2EGG	)		U	B	U	B88
Q
b
ab)2. r[   c                 z    t        | t        j                        } t        j                  j	                  | |      S )NrP   )beta)r   r'   r_   r`   kaiser_window)rV   rv   s     r   kaiserrx      s,    !288,A99""14"00r[   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_   ro   )r_   ro   float32rp   rA   r_   r   )weights	minlengthr   r   r   indicesvaluesdense_shape)r   r<   r   r'   r   r_   appendr   rC   rz   r@   SparseTensorr   bincountr   r   r~   r   math)
rV   r{   r|   r   dtypes_to_resolver<   outputactual_lengthoutput_shape
batch_sizes
             r   r   r      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   )r   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)r   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_opsL  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   ri   r_   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   )
r   r   kwargsr   r   r   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'   subtractrs   s      r   r   r         b3,'r"b3,'r"GT"X&GT"X&E 
2u	%B	2u	%B;;r2r[   c                 J   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"                  | ||
      }n|j                  dk(  rt        j$                  | |d      }n|j                  dk(  rt        j$                  | |dgdgg      }na|j                  dk(  r:|j                  .|j                  dkD  r|
t        j$                  | |dgdgg      }nt        j"                  | ||
      }t        j                  ||	      S )Nri   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'   r   r   r   prodr   r)   )ar   r   fn_3da_sparseb_sparsebatch_shaper   	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   )
r   r<   r   "sparse_tensor_to_csr_sparse_matrixr~   r   sparse_matrix_sparse_mat_mul"csr_sparse_matrix_to_sparse_tensorr'   r   )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   r}   sum)combiner)r'   r   fill_empty_rowsr   r~   r   rH   embedding_lookup_sparse)r   r   r6   idss       r   $embedding_lookup_sparse_dense_matmulz4matmul.<locals>.embedding_lookup_sparse_dense_matmul5  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_matmulrb   s    r   r   z8matmul.<locals>.sparse_dense_matmul_3d.<locals>.<lambda>H  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_3dF  s$    yy?a& !
 	
r[   r   )compute_matmul_output_shaper   r   r   r.   r   r   )r   r   r@   r'   r   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   r   r   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MMQ)!#\\"bqc{;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'   multiplyrs   s      r   r  r  }  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    rz   rA   bool)r@   r'   IndexedSlices
reduce_sumr   r   reduce_prodr   r<   r
   r   r   r	   sortreduce_meanr*   r~   r#   
scatter_ndr   r%   gatherr   r   rC   )rV   r   r
  r   r   r   r   axis_0_mean
new_valuesnew_dense_shaper/   gather_indices	ori_dtyper   r   r   s                   r   meanr    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_anyr   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   absoluter2    s:    !Aagg&E%6/66!9r[   c                     t        |       S r   )r2  rb   s    r   r0  r0    s    A;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   r0  r1  s     r   fabsr6    sK    !Aagg&E~&GGAv}}'66!9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 Nro   )r   r   r<   r   rR   r   rC   rB   r'   r   r   angler1  s     r   r?  r?    sa    !A!W,""177E2
5A77==r[   c                 ^    t        j                  | d      } t        j                  | ||      S r8  )r'   r   r  r:  s      r   anyrA  '  r<  r[   c                     t        | ||      S Nr  )r&  r:  s      r   amaxrD  ,      qth//r[   c                     t        | ||      S rC  )minr:  s      r   aminrH  0  rE  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   r   r   4  s    	2	B	2	Brxx2E	U	B	U	B|yy"**R".

2t0DEANNyy"b--r[   c           	         |wt        | dt        |             g}|%|j                  t        |dt        |                   |%|j                  t        |dt        |                   t        j                  | }t        |      }|d}	 t        j                  | |||      }|S # t        j                  j                  $ r3 t        j                  | ||d      }t        j                  ||      }Y |S w xY w)Nr<   r   )deltar<   rz   )rD   rE   r   r   rC   r   r'   r%   errorsNotFoundErrorr   )startstopstepr<   r   outs         r   arangerR  @  s    }$UGT%[AB$$WT7DJ%GH$$WT7DJ%GH""$56e$E|"hhud$e<
 J	 99"" "hhud$i@ggc5!J	"s   
B% %AC54C5      ?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   r   acosr1  s     r   arccosrV  T  `    !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   r   acoshr1  s     r   arccoshrZ  _  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   r   asinr1  s     r   arcsinr^  j  rW  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   r   asinhr1  s     r   arcsinhra  u  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   r   atanr1  s     r   arctanrd    rW  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   r   atan2rs   s      r   arctan2rg    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   r   atanhr1  s     r   arctanhrj    r[  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   	_keepdimsro    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   rz           )r   r   r<   ndimr'   r)   argmaxro  r   rC   r   logical_andequalsignbitrU   npfinfotinyrV   r   r
  r<   _xr   is_negative_zeros          r   rt  rt    &   !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                    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 rq  )r   r   r<   rs  r'   r)   argminro  r   rC   r   ru  rv  rw  rU   rx  ry  rz  r{  s          r   r  r    r~  r[   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  rk   r   r_   r   r    )	r   r   r<   r'   r   r   r   r)   argsort)rV   r   x_shapes      r   r  r    s    !A!V+GGAwggG||qwwsG$$|JJq2$::ad##r[   c                     t        | |      S r(  r   r1  s     r   r   r     s    Qe,,r[   c           	         ddl m} t        |       } t        j                  |j                  | j                              }t        j                  |j                  |r|n| j                              }|j                  }|j                  }t        t        |             }t        |      dkD  r|d   nd}|dk(  r||k7  s||z  |z  dk7  rt        d| j                   d| d| d      ||k(  rt        j                  | |      S ||kD  rj||z  }	t        t        |             }
|
dxx   |	z  cc<   t        j                  | dg      }t        j                  ||      }t        j                  ||
      S ||z  }	t        |t               r||	z  dk7  rt        d	| d
|	 d      |d d ||	z  |	gz   }t        j                  | |      }t        j                  ||      S )Nr   )backendr   zCannot view array of shape z and dtype z
 as dtype zH because the total number of bytes is not divisible by the new itemsize.)rE   z(Cannot view dtype. Last dimension size (z8) must be divisible by the ratio of new/old item sizes (z).)	keras.srcr  r   r'   as_dtyper   r<   r!  r   rm  r#   r"   r   bitcastr)   r@   rA   )rV   r<   r  	old_dtype	new_dtypeold_itemsizenew_itemsize	old_shapelast_dim_sizeratio	new_shapeflat_tensorcast_tensorintermediate_shapereshaped_tensors                  r   viewr    s   !!AG55agg>?I!!5%agg>I >>L>>LXa[!I%(^a%7IbMRM <$|3q8)!''+i[ I!{ #45
 	
 |#zz!),,		$,!%	"jjRD)jj9=zz+y11,mS)me.Cq.H:=/ J7" 
 's^}/Eu.MM**Q(:;zz/955r[   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   r{   rV   s    r   _rank_equal_casez!average.<locals>._rank_equal_case1  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   )r  r.   r   r{   rV   s     r   _rank_not_equal_casez%average.<locals>._rank_not_equal_case5  sA    --0K''$!6D<<7D1K??r[   )
r   r   rC   r<   rB   r'   r   r  r#   r   )rV   r   r{   r<   avgr  r  s   ```    r   averager  $  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   r  r  D  g    !A!Aqww0E
5A
5A::!!!Q''r[   c                 V    t        |       } t        j                  j                  |       S r   )r   r'   r  invertrb   s    r   bitwise_invertr  M  s!    !A::Qr[   c                     t        |       S r   )r  rb   s    r   bitwise_notr  R  s    !r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t        j                  j                  | |      S r   )r   r   rC   r<   r'   r   r  
bitwise_orr  s      r   r  r  V  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   r  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   r  
left_shiftr  s      r   bitwise_left_shiftr  h  sq    !Aaa ""177AGG4GGAuGGAu::  A&&r[   c                     t        | |      S r   )r  rV   r   s     r   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   r  right_shiftr  s      r   bitwise_right_shiftr  v  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
  |      }t        j
                  t        j                  |d      t        j                  |      |      }d}dt        j                  dt        j                  z  |z  |z        z  }dt        j                  dt        j                  z  |z  |z        z  }||z   |z   }t        j
                  t        j                  |d      t        j                  |      |      S )	NrP   r   r   gzG?g      r   g{Gz?r   )r   rR   r'   r   r%   rU   rv  rr   cosrx  pi)	rV   r<   rW   	n_minus_1n_minus_1_safeterm1term2term3rY   s	            r   blackmanr    s    MMOE
5A
% AAu%IXX
AY 7N E266!bee)a-.899E266!bee)a-.899EU]U"F88BHHY*BLL,@&IIr[   c                 .    t        j                  | |      S r   )r'   broadcast_to)rV   r   s     r   r  r    s    ??1e$$r[   c                 P   t        |       } t        | j                        }|dk(  rt        j                  | d      } n,|dvr(t        j                  | t        j                               } t        j                  |       t        j                  t        j                  |       d      z  S )Nro   rp   )bfloat16float16rp   gUUUUUU?)
r   r   r<   r'   r   r   rR   signpowr0  r1  s     r   cbrtr    sw    !Aagg&EGGAy!	8	8GGAv}}'771:rvvay)444r[   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   r   ceilr1  s     r   r  r    rW  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    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'   r   r   s     r   r   zconcatenate.<locals>.<genexpr>  s     K1
1boo >Ks   $&)r   	sp_inputsFr   r   c                 0    t        j                  |       S r   r   r1  s    r   r   zconcatenate.<locals>.<lambda>  s    "''!U*; r[   r    )builtinsr   r#   r'   r   r*   r@   r   r   r   r   r   r<   r   rC   )xsr   sparse_countrV   	dtype_setr<   s        @r   concatenater    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'   r   conjrb   s    r   	conjugater        77<<?r[   c                 @    t         j                  j                  |       S r   r  rb   s    r   r  r    r  r[   c                 B    t        |       } t        j                  |       S r   )r   r'   identityrb   s    r   copyr    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   r   r  r1  s     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   r   coshr1  s     r   r  r    rW  r[   c                 F    t         j                  j                  | |d      S )Nr_   r   r<   )r'   r   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   rb   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  rb   s   r   r   z0cross.<locals>.maybe_pad_zeros.<locals>.<lambda>  s     r[   )r@   rA   r'   condrv  )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>0  s    B& r[   )r   r   rC   r<   r'   r   r  rm  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)   r   cumprodrV   r   r<   s      r   r  r  4  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)   r   cumsumr  s      r   r  r  ?  sb    !5)A!V+GGAw|JJq2$77>>!$>''r[   c                 B   t        |       } | j                  }t        |      dv rt        j                         }nt        |      dv rd}t        j                  | |      } t        j                  t        j                  |      }| |t        j                  d|      z  z  S Nr  ri   rj   r_   rk   rl   rm   rn   rp   rP   g     f@
r   r<   r   r   rR   r'   r   rS   r   r  rV   r<   r  s      r   deg2radr  J  s    !AGGE $  	5	!Y	.
5A	TWWE	*BR[[e4455r[   c                 B   t        |       } | j                  }t        |      dv rt        j                         }nt        |      dv rd}t        j                  | |      } t        j                  t        j                  |      }| t        j                  d|      |z  z  S r	  r  r  s      r   rad2degr  `  s    !AGGE $  	5	!Y	.
5A	TWWE	*BE/"455r[   c                    t        |       } t        | j                        dk(  r!t        j                  j                  | |      S t        | j                        dk(  rt        | |      S t        d| j                         )Nr   r-   r   )offsetz(`x` must be 1d or 2d. Received: x.shape=)r   r#   r   r'   r  diagdiagonalr"   rV   r-   s     r   r  r  v  sg    !A
177|qyy~~a1~%%	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   r  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  rb   s   r   r   zdiagonal.<locals>.<lambda>  s    A r[   r  )r   rs  r'   r  	diag_partr  rm  r@   rA   r  
logical_or
less_equalgreater_equal)rV   r  axis1axis2x_rankr  r  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"   rs  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   rb   s    r   r   zdigitize.<locals>.<lambda>  s
    a r[   )r  ri   rj   rk   rl   r_   rm   ro   r  r  rz   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[   r1  r}   )r   r   r   r   r   r<   r   r@   r'   RaggedTensorraggedmap_flat_valuesr   r  r~   r4  r5  r   r   r   r   )rV   r6  r  r   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   )rK   rL   r   r   r  y_shaper   s          r   dotr=    s    	2	B	2	B%%bhh9L&&|U;M	]	#B	]	#BhhGhhG||qGLLA-b		b"RD2$<8b"RD2$<8776<((r[   c                    | D cg c]  }t        |       } }t        |       dkD  rj| D ch c]  }|j                   }}t        |      dkD  rCt        j                  | D cg c]  }|j                   c} }| D cg c]  }t        ||       } }g }| D ]  }|j                  }t        |      dk(  rt        j                  |d      }nbt        |      dk(  r/t        j                  |d      }t        j                  |d      }n%t        |      dk(  rt        j                  |d      }|j                  |        t        j                  |d      S c c}w c c}w c c}w c c}w )Nr   r   )r   r   r   r    r   )r   r#   r<   r   rC   r   r   r'   r)   r   r   r*   )r  rV   unique_dtypesr<   xs_reshapedr   s         r   dstackrA    s/   (*	+1
A
	+B	+
2w{*,-Q--}!&&"(=Q(=>E*,-Q$q%.-B-K 	u:?

1i(AZ1_qq)Aqq)AZ1_qq)A1	 99[q))# 
,-(=-s   EE!E<E$c                 `    |xs t        j                         }t        j                  | |      S r(  r+  r)  s     r   emptyrC    r-  r[   c                 0    t        j                  | |      S r(  r'   rq   r1  s     r   
empty_likerF        ==%((r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t	        j                  | |      S r   )r   r   rC   r<   r'   r   rv  rs   s      r   rv  rv    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 r5  )r   r   r<   r'   r   r   rR   exprV   r  s     r   rJ  rJ    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   r   r  rK  s     r   exp2rM  "  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'   r   r   rO  r   r   r   )rV   r   out_ndimr   rO  r   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 r5  )	r   r   r<   r'   r   r   rR   r   expm1rK  s     r   rS  rS  ?  sR    !A!!''*I	Y&0GGAv}}'77==r[   c                    t        |       } | j                  j                  }|)t        j                  | t        j
                  |            S t        |      }|D cg c]  }t        ||       }}t        j                  | |      S c c}w r   )r   r   r   r'   r+   r%   r
   r	   )rV   r   r   r   s       r   fliprU  H  sr    !A77<<D|zz!RXXd^,,%489q!!T*99zz!T"" :s   Bc                 F    t        |       } t        j                  | dg      S rl  r   r'   r+   rb   s    r   fliplrrX  S      !A::a!r[   c                 F    t        |       } t        j                  | dg      S r  rW  rb   s    r   flipudr[  X  rY  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   floorr1  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`  i  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_likerb  o  sJ    !Au/0E":u5J??:rxx{33r[   c                    t        j                  |       } t        j                  |      }t        j                  | j                  |j                        }t        j
                  | |      } t        j
                  ||      }| j                  j                  st        d      t        j                  | j                  |j                        }t        j                  | |      } t        j                  ||      }d }d }|t         j                  t         j                  t         j                  t         j                  fvr*t        j                  |       } t        j                  |      }t        j                   ||| |g      \  }}|S )Nz"Arguments to gcd must be integers.c                 2    t        j                  |dk7        S r  )r'   r  r   s     r   r  zgcd.<locals>.cond  s    }}Q!V$$r[   c                    t        j                  t        j                  |d      t        j                  |      |      }t        j                  t        j                  |d      ||       t        j                  t        j                  |d      t         j
                  j                  | |      t        j                  |            fS r  )r'   rU   rv  rr   r'  r   floormodrq   )r   r   b_safes      r   bodyzgcd.<locals>.body  s    "((1a.",,q/1=HHR\\!Q'A.HHQ"  F+a 
 	
r[   )r'   r   r   rC   r<   r   
is_integer	TypeErrorbroadcast_static_shaper   r  rk   rl   rm   uint64r0  
while_loop)rK   rL   r<   target_shaper  rh  gcd_valr6   s           r   gcdrp  v  s   			b	!B			b	!Brxx2E	U	B	U	B88<==,,RXXrxx@L	\	*B	\	*B%	
 RXXryy"))RYY??VVBZVVBZtTB84JGQNr[   Tc           	         t        |       } t        |      }t        j                  j                  t        j                  t        j
                  |       |xs t        j                                     }t        j                  j                  t        j                  t        j
                  |      |xs t        j                                     }t        j                  j                  t        j                  d|j                              }t        ||z  ||z  ||d||      }	t        j                  t        j                  t        j                  | |j                              |	j                        }
|	|
z  S )Ng      $@rP   
   )numendpointbaser<   r   )r   r'   r   logr   r0  r   rR   rS   r<   logspacer  )rN  rO  rs  rt  r<   r   	log_startlog_stoplog_baser   
start_signs              r   	geomspacer|    s    e$ET"DBGGBFF5M53KFMMOLMIww{{277266$<1I&--/JKHww{{2;;t9??CDHH8F 	!@A6<<PJJr[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t	        j                  | |      S r   )r   r   rC   r<   r'   r   greaterrs   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!  rs   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   r1  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                 n    t        |       } | j                  dk(  rt        | |d      S t        | |d      S )Nr   r   r    )r   rs  splitrV   indices_or_sectionss     r   hsplitr    s7    !Avv{Q+!44'a00r[   c                 `   t        |       } t        |      }t        j                  | j                  |j                        }|dv rt	        j
                         }n|dv rd}t        j                  | |      } t        j                  ||      }t        j                  |       }t        j                  |      }t        j                  ||      }t        j                  ||      }t        j                  j                  ||      }|t        j                  dt        j                  |      z         z  S )Nrh   rn   rp         ?)r   r   rC   r<   r   rR   r'   r   r0  r  minimumr   divide_no_nansqrtsquare)rK   rL   r<   x1_absx2_absmax_valmin_valr  s           r   hypotr    s    	2	B	2	Brxx2EGG	)		U	B	U	BVVBZFVVBZFjj(Gjj(GGG!!'73ERWWS299U#33444r[   c                     t        | | |      S )N)NMr<   )eye)rW   r<   s     r   r  r    s    au%%r[   c                 @    t         j                  j                  |       S r   )r'   r   imagrb   s    r   r  r    r  r[   c                     t        |       } t        | j                        }|dv rd}n|dvrt        j                         }t        j                  | |      } t
        j                  j                  |       S )N)ro   rp   rp   r/  )	r   r   r<   r   rR   r'   r   r   	bessel_i0r1  s     r   i0r    sa    !Aagg&E$$	-	-
5A77Q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   r0  r   rv  )rK   rL   rtolatol	equal_nanr<   r   s          r   iscloser    s    	2	B	2	Brxx2E	U	B	U	B%RTD266":,=%=>vbzF2J67FxxBr[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }dt        |      v rt        j                  j                  |       t        j                  j                  |      z  }t	        j                  | |z
        ||t	        j                  |      z  z   k  }||z  t	        j                  | |      z  }|r|t        |       t        |      z  z  }t	        j                  |      S t	        j                  t	        j                  | |            S r  )r   r   rC   r<   r'   r   r   r   	is_finiter0  rv  r   r9  )	rK   rL   r  r  r  r<   finitecloser   s	            r   allcloser    s
   	2	B	2	Brxx2E	U	B	U	B#E**""2&):):2)>>rBwD4"&&*+<$<=5.BHHR$44vbzF2J67F}}V$$}}RXXb"-..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<   ri  
is_numericrT   r   r  r   r  rV   dtype_as_dtypes     r   isfiniter    s]    !A[[)N  (A(Awwqww((77Qr[   c                 B   t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t	        j                  |       }t	        j                  | dg      } t	        j                  |dg      }|st	        j                  |      d   }t	        j                  |       dk(  st	        j                  |      dk(  r%t	        j                  |t        j                        S t	        j                  t	        j                  | d      t	        j                  |d            }t	        j                  |d      }|rt	        j                  |      }t	        j                  ||      S )Nr   r   rP   r   r    )r   r   rC   r<   r'   r   r   r)   uniquer!  r,  r  rv  r   r  logical_not)rK   rL   assume_uniquer  r<   r   cmpresult_flats           r   isinr  &  s"   	2	B	2	Brxx2E	U	B	U	B88B<L	B	B	B	BYYr]1	wwr{a2772;!+xxBGG44
((2>>"a("..Q*?
@C--!,Knn[1::k<00r[   c                     t        |       } t        j                  | j                        }|j                  s|j
                  s.t        j                  | j                  t        j                        S t        j                  j                  |       S r   )r   r'   r  r<   ri  r  r,  r   r  r   is_infr  s     r   isinfr  B  [    !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<   ri  r  r,  r   r  r   r   r  s     r   isnanr  J  r  r[   c                 b   t        |       } t        j                  | j                        }|j                  s|j
                  s%t        j                  | t        j                        S t        j                  j                  | t        j                  t        d      | j                               S NrP   infr   r'   r  r<   ri  r  rq   r  r   rv  rS   rB   r  s     r   isneginfr  R  so    !A[[)N  (A(A}}Qbgg..77==R[[uQWWEEFFr[   c                 `   t        |       } t        j                  | j                        }|j                  s|j
                  s%t        j                  | t        j                        S t        j                  j                  | t        j                  t        d      | j                              S r  r  r  s     r   isposinfr  Z  sl    !A[[)N  (A(A}}Qbgg..77==BKKeAGGDEEr[   c                     t        |       } | j                  j                  r3t        j                  t        j
                  j                  |       d      S t        j                  | t        j                        S )Nr   rP   )	r   r<   
is_complexr'   rv  r   r  rr   r  rb   s    r   isrealr  b  sK    !AwwxxQ++||ARWW--r[   c                    	 t                t              t        j                   j                  j                        }t	        j
                   |       t	        j
                  |      t	        j                         t	        j                        	d t	        j                  	k  	 fd fd       t	        j                  	k  	fdfd      t	        j                   t	        j                  t	        j                  t	        j                         t	        j                  t	        j                               gd      dg            }t	        j                  t	        j                  t	        j                  t	        j                  t	        j                              t	        j                        gd      dg            }t	        j                  ||      }t	        j                  t	        j                         t	        j                              }t	        j                  ||      }|S )	Nc                 T    t        |      D ]  }t        j                  | d      }  | S Nr   r    )r%   r'   r   )rV   rs  r6   s      r   expand_frontzkron.<locals>.expand_frontu  s*    s 	*Aqq)A	*r[   c                        z
        S r   r  )r  ndim_x1ndim_x2rK   s   r   r   zkron.<locals>.<lambda>|      R7!23 r[   c                       S r   r  )rK   s   r   r   zkron.<locals>.<lambda>}       r[   c                        z
        S r   r  )r  r  r  rL   s   r   r   zkron.<locals>.<lambda>  r  r[   c                       S r   r  )rL   s   r   r   zkron.<locals>.<lambda>  r  r[   r   r    r   )r   r   rC   r<   r'   r   r   r  r)   stackr   rr   r  )
rK   rL   r<   x1_reshapedx2_reshapedrQ  	out_shaper  r  r  s
   ``     @@@r   kronr  j  s   	2	B	2	Brxx2E	U	B	U	BggbkGggbkG
 
'3
B
 
'3
B **



HHbhhrlBLL"$>?aH2$	
K **



HHbll288B<0"((2,?aH2$	
K ++k;
/CBHHRL"((2,7I
**S)
$CJr[   c                    t        |       } t        |      }| j                  j                  r|j                  j                  s9t        d| j                  j                   d|j                  j                         t        j                  | j                  |j                        }t        j                  | |      } t        j                  ||      }|t        j                  t        j                  t        j                  t        j                  fvr>t        j                  j                  |       } t        j                  j                  |      }t        | |      }t        j                   |dk(  t        j"                  d|j                        |      }| ||z  z  }t        j                   |dk(  t        j$                  |      |      }|S )Nz6Arguments to lcm must be integers. Received: x1.dtype=z, x2.dtype=r   r   rP   )r   r<   ri  rj  namer   rC   r'   r   rk   rl   rm   rl  r   r0  rp  rU   rS   rq   )rK   rL   r<   divisordivisor_safer   s         r   lcmr    sI   	2	B	2	BHHBHH$7$7""$((--BHHMM?L
 	

 rxx2E	U	B	U	BRXXryy"))RYY??WW[[_WW[[_"bkG881bkk!7==97L 2%&FXXglBMM&$96BFMr[   c                 ~   t        |       } t        |      }t        j                  | j                  |j                  t              }t        |j                        t        j                  vrt        d|j                         t        j                  | |      } t        j                  || j                        }| t        j                  t        j                  d| j                        |      z  }t        j                  t        j                  t        j                  j                  |       | dk(  z  | |      |      S )Nz;ldexp exponent must be an integer type. Received: x2 dtype=rQ   rP   r   )r   r   rC   r<   rB   r   	INT_TYPESrj  r'   r   r  rS   rU   r   r  )rK   rL   r<   r   s       r   ldexpr    s    	2	B	2	Brxx59E"&*:*::""$((-
 	

 
U	B	RXX	B"&&S92>>F77288BGGNN2."':BGOOr[   c                    t        |       } t        |      }t        j                  | j                  |j                        }t	        j
                  | |      } t	        j
                  ||      }t	        j                  | |      S r   )r   r   rC   r<   r'   r   lessrs   s      r   r  r    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   rs   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   rx  nanr'   linspacer   r<   r]  )rN  rO  rs  rt  retstepr<   r   r   rP  r   new_stops              r   r  r    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   r   rv  r1  s     r   rv  rv    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 )Nro   rr  r   r   r<   r   rR   r   rC   rB   r'   r   r   rv  rS   r1  s     r   log10r    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   r   log1pr1  s     r   r  r    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 )Nro   r   r  r1  s     r   log2r  '  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   r   r   r  r  rJ  r0  )rK   rL   r<   rK  s       r   	logaddexpr  3  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                  |       } t        j                  |      }t        j                  | j                  |j                  t
              }t        j                  | |      } t        j                  ||      }| |z
  }t        j                  t         j                  j                  d      |      }t        j                  t         j                  j                  |      | |z   t        j                  | |      t         j                  j                  t         j                  j                  t        j                  |       |z              |z  z         S )NrQ   )r'   r   r   rC   r<   rB   r   r   rv  rU   r   r  r  rJ  r0  )rK   rL   r<   rK  r  s        r   
logaddexp2r  A  s    			b	!B			b	!Brxx59E	U	B	U	BGE77277;;s#U+D88
u
R


2r
''--RVVE]NT$9:
;d
B	C r[   c                     t        j                  | d      } t        j                  |d      }t        j                  | |      S Nr  )r'   r   ru  rK   rL   s     r   ru  ru  Q  s3    	V	B	V	B>>"b!!r[   c                 X    t        j                  | d      } t        j                  |       S r  )r'   r   r  rb   s    r   r  r  W  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)rN  rO  rs  rt  r<   r   )r  r'   r  r   r<   )rN  rO  rs  rt  ru  r<   r   r   s           r   rw  rw  b  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  rs   s      r   r  r  n      b3,'r"b3,'r"GT"X&GT"X&E 
2u	%B	2u	%B::b"r[   c           
         t        | t        t        f      st        |       } t        |t        t        f      st        |      }t	        j
                  t        | dt        |             t        |dt        |                  }t        | |      } t        ||      }dt        |      vrt        j                  | |      S t        j                  j                  |       }t        j                  j                  |      }t        j                  | |      }t        j                  t        j                  |t        j                  |            ||      }t        j                  t        j                  |t        j                  |            | |      }|S Nr<   rB   )r@   rA   rB   r   r   rC   rD   rE   r   r'   r  r   r   rU   ru  r  rK   rL   r<   nan_x1nan_x2r   s         r   fmaxr   }      b3,'r"b3,'r"GT"X&GT"X&E 
2u	%B	2u	%B'..zz"b!!WW^^BFWW^^BF
**R
C
((2>>&"..*@A2s
KC
((2>>&"..*@A2s
KCJr[   c                      t        | d||      S )NrS  r  quantiler:  s      r   medianr    s    As99r[   xyindexingc                 ,    t        j                  |d| iS )Nr  )r'   meshgrid)r  rV   s     r   r
  r
    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'   r9  r   r  r   
reduce_minr   r!  r"  rS   r#  s        r   rG  rG    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'   r  rs   s      r   r  r    r  r[   c           
         t        | t        t        f      st        |       } t        |t        t        f      st        |      }t	        j
                  t        | dt        |             t        |dt        |                  }t        | |      } t        ||      }dt        |      vrt        j                  | |      S t        j                  j                  |       }t        j                  j                  |      }t        j                  | |      }t        j                  t        j                  |t        j                  |            ||      }t        j                  t        j                  |t        j                  |            | |      }|S r  )r@   rA   rB   r   r   rC   rD   rE   r   r'   r  r   r   rU   ru  r  r  s         r   fminr    r  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   r   modrs   s      r   r  r    sq    	2	B	2	Brxx2E	U	B	U	B77;;r2r[   c                    t        |       } t        |      }t        j                  | j                  |j                        }|dk(  rd}|}|dv rd}t	        j
                  | |      } t	        j
                  ||      }t	        j                  |       t        j                  j                  t	        j                  |       t	        j                  |            z  }t	        j
                  ||      S )Nr  r_   rk   rl   rm   )
r   r   rC   r<   r'   r   r  r   rf  r0  )rK   rL   r<   r   r   s        r   fmodr    s    	2	B	2	Brxx2EM--	]	#B	]	#BWWR[277++BFF2Jr
CCF7765!!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	   rs  r   r/   rV   s     r   r   zmoveaxis.<locals>.<genexpr>	  s     BQ%a0B    #c              3   J   K   | ]  }t        |j                          y wr   r  r  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%   rs  rP  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                  j                  st        | ||      S t        j
                  j                  |       }t	        j                  t	        j                  |||      t	        j                  dt        j                        t        t	        j                  |t	        j                  t        d      | j                        |       ||            S )Nr  r   rP   -inf)r   r<   is_floatingrt  r'   r   r   rU   r9  rS   r_   rB   rV   r   r
  nan_masks       r   	nanargmaxr(  	  s    !A77adX66ww~~a H88
hTH=
Bbhh'HHXr{{5=H!L	
 r[   c                    t        |       } | j                  j                  st        | ||      S t        j
                  j                  |       }t	        j                  t	        j                  |||      t	        j                  dt        j                        t        t	        j                  |t	        j                  t        d      | j                        |       ||            S )Nr  r   rP   r  )r   r<   r%  r  r'   r   r   rU   r9  rS   r_   rB   r&  s       r   	nanargminr*  )	  s    !A77adX66ww~~a H88
hTH=
Bbhh'HHXr{{5<qwwGK	
 r[   c                 4    t        |       } t        | ||      S )Nr  )
nan_to_numr  r  s      r   	nancumsumr-  <	  s    1A!$e,,r[   c                 8    t        | d      } t        | ||      S )Nr  )r  r  )r,  r  r  s      r   
nancumprodr/  A	  s    1#A14u--r[   c           	         t        |       } | j                  j                  sJt        | j                        }|dk(  rt	        j
                  | ||      S t	        j                  | ||      S t	        j                  t        j                  j                  |       t	        j                  t        d      | j                        |       }t	        j                  t	        j                  t        j                  j                  |       ||      t	        j                  t        d      | j                        t	        j                  |||            S )Nr  r  r$  rP   r  )r   r<   r%  r   r'   r  r  rU   r   r   rS   rB   r9  rV   r   r
  r<   x_cleans        r   nanmaxr3  F	  s    !A77!!''*F?==AA}}QTH==hh
q2;;uV}AGGDaG 88
bggnnQ'dXF
E%L0
gD8< r[   c                    t        |       } |dk(  s|g k(  r| S | j                  j                  s,t        j                  t        j
                  | d      ||      S t        j                  t        | j                        t              }t        t        | ||      |      }t        j                  t        t        j                  j                  |        |      ||      }t        j                  ||      S )Nr  rz   r  )r   r<   r%  r'   r  r   r   rC   r   rB   nansumr  r   r   divide)rV   r   r
  r<   	total_sum
normalizers         r   nanmeanr9  Z	  s    !ArzTRZ77~~GGAy!x
 	
 095AEVAD8<eDIbggnnQ'J
 99Y
++r[   c                 N    t        |       } |dk(  s|g k(  r| S t        | d||      S )Nr  rS  )qr   r
  )r   nanquantiler:  s      r   	nanmedianr=  o	  s/    !ArzTRZqCdX>>r[   c           	         t        |       } | j                  j                  sJt        | j                        }|dk(  rt	        j
                  | ||      S t	        j                  | ||      S t	        j                  t        j                  j                  |       t	        j                  t        d      | j                        |       }t	        j                  t	        j
                  t        j                  j                  |       ||      t	        j                  t        d      | j                        t	        j                  |||            S )Nr  r  r  rP   r  )r   r<   r%  r   r'   r9  r  rU   r   r   rS   rB   r1  s        r   nanminr?  x	  s    !A77!!''*F?==AA}}QTH==hh
q2;;uU|177CQG 88
bggnnQ'dXF
E%L0
gD8< r[   c                 |    t        |       } t        |t        j                               dz  }t        | ||||      S NrP   g      Y@r   methodr
  )r   r   rR   r<  rV   r;  r   rC  r
  s        r   nanpercentilerE  	  s6    !A!6==?3e;Aq!$vIIr[   c                 "   t        |       } | j                  j                  st        | ||      S t	        j
                  t        j                  j                  |       t	        j                  d| j                        |       }t        |||      S )Nr  r  rP   )	r   r<   r%  r   r'   rU   r   r   rT   )rV   r   r
  x_safes       r   nanprodrH  	  se    !A77AD844XXbggnnQ'177)CQGFTH55r[   c                     t                t        t        j                                fd}|t        j                   dg      } ||      }|rxt        j
                  t        j                  |      t        j                  t        j                         t        j                        gd      }t        j                  ||      }|S t        |t              r|g}nt        |t              rt        |      } j                  j                  }	|D 
cg c]  }
|
dk\  r|
n|
|	z    }}
t        |	      D cg c]	  }||vs| }}||z   }t        j                   |      }t        j                  |      }t!        |      }|d | }||d  }t        j"                  |      }t        j"                  |      }t        j                  |||g      }t        j                        }t        j$                  ||t        j&                  | j(                              }t        j                        dkD  rCt        j                  |      }t        j                  |t        j
                  ||gd            }nt        j                  ||      }|r=t+        |      D ]/  }t        j,                  ||t        j                        z         }1 |S c c}
w c c}w )NrP   c           
         t        j                  | t         j                  j                  t	        | t        j                                            t        j                  t        j                        dkD  fdfd      S )Nr   c                  "    t         d      S )NF)rC  r
  r  )rC  r;  valids   r   r   z6nanquantile.<locals>._nanquantile_1d.<locals>.<lambda>	  s    HUAfuE r[   c                  X    t        j                  t        d       j                        S )Nr  rP   )r'   rS   rB   r<   rb   s   r   r   z6nanquantile.<locals>._nanquantile_1d.<locals>.<lambda>	  s    BKKeAGG< r[   )	r'   boolean_maskr   r   r   r   rR   r  r!  )vrL  rC  r;  rV   s    @r   _nanquantile_1dz$nanquantile.<locals>._nanquantile_1d	  sW    BGGNN46==?3K$L#LMwwGGENQE<
 	
r[   r   r   r    r)  )r   )r   r   rR   r'   r)   r*   r   rT   r   r_   r@   rA   r$   r   r%   r(   r#   r  r   
TensorSpecr<   rP  r   )rV   r;  r   rC  r
  rP  x_flatr   r  ndimsr   r/   
other_axesr0   x_tr   
other_rankother_shapereduce_shaper   reduction_sizeq_shaperesultsaxs   `` `                    r   r<  r<  	  sH   !A!6==?3A
 |At$ (		&!2772771:RXX#FGaI ZZ	2F$v	D%	 DzGGLLE0451aAQY&5D5"5\;Qd]!;J;D
,,q$
CHHSMEZJ$K%L,J^^L1NZZj.9:FhhqkGiiMMqwwGG 
wwqzA~,,w'**Wbii+0FQ&OP**Wk2, 	DBnnW2
?CG	D NC 6;s   K=	KKc                 H    t        | ||      }t        j                  |      S rC  )nanvarr'   r  )rV   r   r
  var_vals       r   nanstdr`  	  s    QTH5G777r[   c           	      n   t        |       } t        | j                        }t        j                  t        j
                  j                  t        | t        j                                     t        j                  d|      |       }|dv rd}n|dv rd}t        ||      }t        j                  |||      S )Nr  rP   r  ri   rj   r_   rk   rl   rm   r  )r   r   r<   r'   rU   r   r   r   r   rR   r,  r  r1  s        r   r5  r5  	  s    !Aagg&Ehh
tAv}}/0"((2U2KQG ))	%	%7E"G==th??r[   c                    t        |       } t        j                  | j                  t              }t        j                  | |      } t        | |d      }t
        j                  j                  |        }t        j                  || |z
  t        j                  |             }|j                  j                  r@t
        j                  j                  |t
        j                  j                  |      z        }nt        j                  |      }t        j                   t        j                  ||j                        ||      }t        j                   |||      |z  }|S )NTr  )r   r   rC   r<   rB   r'   r   r9  r   r   rU   rq   r  realr  r  r  )	rV   r   r
  r   r  rL  centeredcountvars	            r   r^  r^  	  s    !A%%aggu5L
< A14$/DWW^^AExxq4xq)9:H~~  77<<277<<+A AB99X&MM
x~~&THE --th
?%
GCJr[   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 r  )r   r<   r'   r  ri  r  rU   r   r   rS   r&  r  rG  )rV   r  posinfneginfr<   r  s         r   r,  r,  
  s    !AGGE[['N  (A(A 	"BKKU$;Q?A ~
"a!e,bkk&%.H!LA ~
"a!e,bkk&%.H!LAHr[   c                 D    t        |       } | j                  j                  S r   )r   r   r   rb   s    r   rs  rs  $
  s    !A77<<r[   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   )r~   s    r   r   znonzero.<locals>.<lambda>,
  s    bgggw.G r[   )	r   r'   unstackrU   r   r   r   r   r   )rV   r   s     r   nonzerorp  )
  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'  rs   s      r   r'  r'  /
  sa    	2	B	2	Brxx2E	U	B	U	B<<Br[   c                 0    t        j                  | |      S r(  )r'   rr   r1  s     r   rr   rr   8
  s    <<''r[   c                 0    t        j                  | |      S r(  rE  r1  s     r   rq   rq   <
  rG  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)   rs   s      r   outerru  @
  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moderw  r   s        r   r  r  I
  sr    !AF":""&) 
 %4 !!)W5I66!Y

777r[   c                 |    t        |       } t        |t        j                               dz  }t        | ||||      S rA  )r   r   rR   r  rD  s        r   
percentiler|  X
  s6    !A!6==?3e;AAqtFXFFr[   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_   )ri   rj   rc  rm   r  )r   r   rC   r<   r'   r   r  rV   r   r
  r<   s       r   r   r   ^
  sp    !A}""177+F?E''E))EGGAu>>!$::r[   c                 z    t        |       } t        j                  | ||      t        j                  | ||      z
  S rC  )r   r'   r  r  r:  s      r   ptpr  l
  s8    !A==9BMM	x=  r[   c                    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                  |t        |            S c c}w c c}w c c}w )Nrp   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'   r   r]  r  roundr  r   r   )rC  r~   rM   r;  r   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  midpointrS  r  r  linearr   )paddingsrw  NaNrP   r_   r)  r   )+r'   r   r)   r#   r   r	   rP  r   r%   
differencer   r(   r   r   r  ro   r*   r  r  r  rp   r<   r  r  rz   r  r   r  r   rS   rB   rU   rT   r   get_static_valueTensorShaperA   copysignr  r0  collectionsdequerotate)rV   r;  r   rC  r
  x_ndimsr   
other_dimsr0   x_permedr  r/   rW  	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_staticrS  rM   r   s    `                          @@r   	_quantiler  s
  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:66{ = ;#=s   V6V;<W c                     t        |       } t        |      }t        |      }t        j                  | j                  t
              }t        j                  | |      } t        | ||||      S )NrB  )	r   r
   r   rC   r<   rB   r'   r   r  )rV   r;  r   rC  r
  r   s         r   r  r  
  sY    !A!AD!D&&qww6M
=!AQVhGGr[   c                 F    t        |       } t        j                  | dg      S r  )r   r'   r)   rb   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"   rs  reversedr   r   r$   r   r)   )r~   r   input_dtypecoordsdimindices_shapes         r   unravel_indexr  
  s    ""7+G--Ku}FugN
 	
 ||qE? 	%CMM"'''C-=>nG	% Xf%&&MMMF !JJrwww}k:MJ	
 S.	! &!""r[   c                 V    t        |       } t        j                  j                  |       S r   )r   r'   r   re  rb   s    r   re  re    s    !A77<<?r[   c                 V    t        |       } t        j                  j                  |       S r   )r   r'   r   
reciprocalrb   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 )Nrl   rm   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'   r   r   r  r   r   r)   r   )rV   r  r  r   r   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                         | j                  d   }|2|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   r_   ro   )sideout_type)	rs  r"   r   rx  iinfor_   r&  r'   searchsorted)sorted_sequencer   r  sequence_lenr  s        r   r  r  6  s    O!% &5%:%:$;=
 	
 #((+L #8J8N8N(N 	 
 ??dX r[   c                     t        |       } t        | j                        }|dv r?t        j                  | d      } t        j                  t        j
                  |       |      S t        j
                  |       S )Nr  r_   )r   r   r<   r'   r   r  rK  s     r   r  r  I  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   rz   rP   )r   r   r<   r'   fillr   r   r  r  r  r  r_   rS   rG  rK  s     r   rw  rw  T  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   r   sinr1  s     r   r  r  h  r  r[   c                    t        |       } t        | j                        dk(  rt        j                         }n$t        j                  | j                  t              }t        j                  | |      } | t        j                  t        j                  | j                        z  }t        j                  t        j                  | d      t        j                  |       t        j                   j#                  |      |z        S )Nro   rP   r   )r   r   r<   r   rR   r   rC   rB   r'   r   rS   rx  r  rU   rv  rr   r   r  )rV   r<   pi_xs      r   sincr  s  s    !A!W,""177E2
5Ar{{25500D88
A
Q
DD  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   r   sinhr1  s     r   r  r    rW  r[   c                 B    t        |       } t        j                  |       S r   )r   r'   r!  rb   s    r   r!  r!    s    !A771:r[   c                 2   t        |       } t        | j                        }|t        j                  | dg      } d}|dk(  rAt        j
                  | d      } t        j
                  t        j                  | |      |      S t        j                  | |      S )Nr   r   r  ri   r    )r   r   r<   r'   r)   r   r  )rV   r   r  s      r   r  r    s{    !A!!''*I|JJq2$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,  r  )rV   r  r   
total_size
start_sizeend_sizenum_or_size_splitss          r   r  r    s    )3/ WWT]
/0CD(1-
 3BC 88YY12H=A
 188A)55r[   c                     t        j                  |       } |}t        |       |   }||z  }||z  }|dz   g|z  |g||z
  z  z   }t        j                  | ||      S )Nr   r    )r'   r   rm  r  )rV   r  r   
num_splitsr  avg_size	remaindersizess           r   array_splitr    sm    
QA$J!T"JZ'HZ'I\NY&(zI7M)NNE88Au4((r[   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'   r  )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   r   
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 r  )r   r   r   r@   rA   r	   rs  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 r  )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@   r   r<   r  rz   rp   r  warningswarnr   sparse_with_valuesr   rH   safe_embedding_lookup_sparser   r   r   r#   r7  with_valuesembedding_lookupr  )rV   r~   r   r  r   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_utilsro   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   rs  r"   r   take_along_axisr'   r)   $compute_take_along_axis_output_shaperm  r   broadcast_shapesr,   r  r  rU   r   r<   r  r  r   )rV   r~   r   r  static_output_shaper   static_axisx_original_shapeindices_original_shapex_static_shapeindices_static_shapebroadcast_shaper/   r  r  r  r   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   r   tanr1  s     r   r  r  i  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   r   tanhr1  s     r   r  r  t  rW  r[   c                 v   t        |       } t        |      }t        j                  | j                  |j                        }|dv r|}nt        j                  |t              }t        j                  | |      } t        j                  ||      }t        j                  t        j                  | ||      |      S )N)r_   ro   r  rz   rp   r  	complex64
complex128r   rP   )r   r   rC   r<   rB   r'   r   r   )rK   rL   r.   r   r   s        r   r   r     s    	2	B	2	B%%bhh9L 	 	 %**<?	]	#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   rr  )r'   r  r<   r  ri  r   r   r  r   rR   r  r6  )rV   decimalsx_dtypefactors       r   r  r    s    1}xx{ggG	{{7&&a<H"h/AGGAv}}' "h/9
AvA
A
		!VA771gr[   c                 |   t        |       } t        |t              r|g}n|D cg c]  }| }}g }|D ]W  }t        |d      r8|j                  dk(  r)|j                  t        |j                                      G|j                  |       Y |}| j                  j                  }t        |      |k  rdg|t        |      z
  z  |z   }t        |      | j                  j                  kD  r9t        j                  | d      } t        |      | j                  j                  kD  r9t        j                  | |      S c c}w )Nnumpyr  r   r   )r   r@   rA   hasattrr   r   r  r   r#   r'   r   tile)rV   r  rO  processed_repeatsrr$  s         r   r  r    s   !A '3)%&1&&  (1g177b=$$S^4$$Q'	(
  G WW\\F 7|f##g,./'9 g,
%NN1a  g,
% 771g- 's   	D9c                 x   t        |       } t        | j                        }|dv rd}n|dv rd}t        j                  | |      } t        j
                  |       }t        | ||fd      } t        j                  t        ||   ||   |d      | t        j                  |             } t        j                  | d      S )	Nrb  r_   rc  rm   r  r  )r-   r<   r    )r   r   r<   r'   r   r   r  rU   r  rq   r  )rV   r  r"  r#  r<   r  s         r   tracer    s    !Aagg&E))	%	%
5AhhqkGUENH-A
GENGENfFC	
a	A
 ==**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   r  r  	band_part)r  r  r-   r<   r  r  os          r   trir    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   ijr  r'   r   r
  r%   rU   r  rq   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-   rV   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 r  r  r  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-   r)  s   `` r   triur+  
  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   r   r  r]  r1  s     r   truncr-  !  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   vdotr/  )  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>A  s    R r[   c                  <    t        j                   dgdgg      S )Nr   r   )r'   r   r  s   r   r   zinner.<locals>.<lambda>B  s    RB4",7 r[   )r   r   rC   r<   rB   r'   r   r  r   r  rv  r   )rK   rL   r   r   rV   s   ``   r   innerr3  5  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   r1  s    r   r   zvstack.<locals>.<lambda>K  r  r[   r   r    )
r   rD   rE   r#   r   rC   r   r   r'   r*   r  s      @r   vstackr6  G  sj    2>aWQa1>?I
9~""I. ErJ99Ra  	 ?r  c                     t        | |d      S r  r  r  s     r   vsplitr9  O      'a00r[   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>.wrappedY  s      Q''r[   )r"   	functoolswraps)r>  in_axesr?  s   `  r   _vmap_fnrC  S  s>    !|K
 	
 __R( ( Nr[   excluded	signaturec                (    t        | t        ||      S )NrD  )r   rC  )pyfuncrE  rF  s      r   	vectorizerI  `  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   rp  r"   )	conditionrK   rL   r<   s       r   rU   rU   f  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'   r6  rs   s      r   r6  r6  |  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'   r   r  rs   s      r   r  r    s    b3,'r"b3,'r"GT"X&GT"X&E
 
2u	%B	2u	%B77  R((r[   c                     t        | |      S r   )r6  r  s     r   true_dividerO    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  rs   s      r   powerrQ    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'   negativerb   s    r   rS  rS    s    ;;q>r[   c                    t        |       } t        |      }t        j                  | j                  |j                  t              }t        j                  | t
        j                        } t        j                  |t
        j                        }t        j                  t
        j                  j                  | |      |      S r   )
r   r   rC   r<   rB   r'   r   rp   r   	nextafterrs   s      r   rU  rU    s|    	2	B	2	Brxx59E	RZZ	 B	RZZ	 B77277$$R,e44r[   c                     t        |       } t        | j                        dk(  rt        j                  | d      } t        j
                  |       S r  )r   r   r<   r'   r   r  rb   s    r   r  r    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   r   r  r1  s     r   r  r    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"   rP  r	   r#   r@   r'   r   r,   r   r  r~   r   r$   rG   )
rV   r   static_shaper   dynamic_shaper  r  r/   r  new_indicess
             r   rG   rG     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 |rbt         fd|D              }t        t        |            t        |      k7  r.t        dt        |       dt         j                         d      t        j                   |      S )Nr   )compute_transpose_output_shaper0   c              3   \   K   | ]#  }t        |t        j                               % y wr   )r	   r#   r   )r   r   rV   s     r   r   ztranspose.<locals>.<genexpr>  s!     Lt&tS\:Ls   ),z[`axes` must be a valid permutation of the input dimensions (no duplicates). Received: axes=z for input of rank .)r@   r'   r   r   r]  r   r(   r   r   r$   r#   r   r"   r   )rV   r.   r]  r   s   `   r   r(   r(     s    !R__%P$$QT$27FGLtLL
 s4y>SY&337:, ?AGG~Q( 
 <<%%r[   c                    d }t        |       } t        j                  | j                  t              }t        j                  | |      } |t        j                  ||      }n#t        ||      }t        ||      } |||      } || |      } d| ddd f   | dd df   z   z  }t        j                  ||z  d      }|S )Nc                    |dk(  r| S t        j                  |       }|dk  r||z   }t        j                  t        j                  |t         j                        t        j                  |dz   |t         j                        t        j
                  |gt         j                        gd      }t        j                  | |      S )Nr   r   rP   r   r    r^  )r'   r   r*   r%   r_   rS   r(   )tensorr   r   r0   s       r   _move_axis_to_lastz%trapezoid.<locals>._move_axis_to_last  s    2:Mwwv!8$;DyyRXX.4rxx8TF"((3
 
 ||F..r[   rP   r    rS  .r   r   )	r   r   rC   r<   rB   r'   r   r,  r  )	r   rV   dxr   rd  r<   dx_arrayavg_heightsr   s	            r   	trapezoidrh    s    /  	!Aqww.E
5Ay772u%au-%%h51d#A37aSbSk12K]];1;FMr[   c                    t        |       } t        j                  | j                        }|t	        |       d   }|rt        j                  |      }nt        j                  |dz
  dd      }t        j                  | d      }t        j                  | j                  d      }t
        j                  j                  t        j                  ||      t        j                  ||            }t        j                  ||      S )Nr   r   r   r    rz   )r   r   rC   r<   rm  r'   r%   r   r   r  r   )rV   r  
increasingr   powersx_expr   vanders           r   rm  rm  '  s    !A%%agg.LyQKN!!a%R(NN12&E&&qww	:MWW[[
}%rwwv}'EF 776<((r[   c                 8   t        |       } t        j                  | j                  d      }t        j                  | j                  t              }t        j                  | |      } t        j                  t
        j                  j                  | ||      |      S )Nrz   r  )	r   r   rC   r<   rB   r'   r   r   reduce_variance)rV   r   r
  r   r   s        r   rh  rh  <  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 )Nrb  r_   rc  rm   T)r   r
  output_is_sparser  )	r   r   r<   r   r@   r'   r   r   r  r~  s       r   r   r   G  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'   r  r  r  r  )r  r  r-   r<   s       r   r  r  W  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'   r   floordivrs   s      r   floor_divideru  f  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   r   logical_xorr  s     r   rw  rw  t  s9    	V	B	V	B77r2&&r[   c                     | j                   }|dv rt        j                         }t        | |      } t	        j
                  |       dk(  r2t	        j                  t        d      t        j                               S t	        j                  | dd      }| |z
  }t	        j                  t	        j                  |       d   | j                         }t	        j                  ||d      |d	z
  z  }t        j                  j                  |      }t	        j                  t        j                  j!                  |            }t	        j"                  ||d
      }t	        j                  ||j                         }||z  }	t	        j$                  t        j                  j!                  |	      dd      }
|	j                   j&                  rJt	        j$                  t        j                  j)                  |	      dd      }t	        j*                  |
|      S |
S )Nr
  r   r  rP   r   Tr  )	adjoint_br   r   g      r  )r<   r   rR   r   r'   r   rS   rB   r  r   r   r   r  r  r  r   re  r   r  r  r  complex)rV   r<   r  
x_centerednum_samples
cov_matrixr  stddev	outer_stdcorrelationcorrelation_clippedimag_clippeds               r   corrcoefr  z  s{   GGEOO!U#A	wwqzQ{{5<v}}??>>!"t4DTJ''"((1+b/1773K:zTBaJ 99z*DWWRWW\\$'(FVV!4I	:#3#34Iy(K**277<<+DdCP##''[(A4Mzz-|<<""r[   c           
         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                  ||      }d fd}t        |       d   }t        |      d   }|dk(  r	 || |      S |dk(  ru || |      }||z   dz
  }t        |t              rt        |t              rt        ||g      nt        j                   ||      }	||	z
  dz  }
t        j"                  ||
g|	g      S |d	k(  rF | |      \  } }t        j$                  t
        j&                  j)                  | |dd
      ddg      S t+        d| d      )Nr<   c                     t        j                  | dt        |       d   df      t        j                  |t        |      d   ddf      fS )Nr   r   )r'   r)   rm  r   s     r   _packzcorrelate.<locals>._pack  sH     JJq1hqk!na01JJq8A;q>1a01
 	
r[   c                 f   t        |      d   }t        |t              rt        j                  |dz
  d      nt        j                  |dz
  d      }t        j                  | ||gg      }  | |      \  } }t
        j                  j                  | |dd      }t        j                  |ddg      S )z7Compute 'full' correlation result (length = n + m - 1).r   r   VALIDstridepaddingr   r    )rm  r@   rA   r  r&  r'   r  r  rH   conv1drG   )rK   rL   mr  rQ  r  s        r   
_full_corrzcorrelate.<locals>._full_corr  s    RLO !S! LLQ"AE1% 	
 VVB#s%r2Beell2r!Wl=zz#QF++r[   r   r`  samer   r   rL  r  r  r    zInvalid mode: 'z0'. Mode must be one of: 'full', 'same', 'valid'.)r   r   rC   rD   rE   r'   ro   rp   r  r  rz   r   rm  r@   rA   r&  r  r&  rG   rH   r  r"   )rK   rL   rz  r<   r  rW   r  	full_corrfull_lenout_lenrN  r  s              @r   	correlater    s   	2	B	2	BGT"X&GT"X&E 

	r{{BJJ

;	;

	U	B	U	B
, 	QAQAv~"b!!	 r2&	q519 !S!jC&8 AKAq! 	
 G#)xx	E7WI66	r2BzzEELLR7L;1a&
 	
 dV $( )
 	
r[   c                 Z    t         j                  j                  j                  | ||      S )N)default)r'   experimentalr  select)condlist
choicelistr  s      r   r  r    s$    ??  ''*g'NNr[   c                 h    t        |       } t        t        j                  j	                  |             S r   )r   r$   r'   r  slogdetrb   s    r   r  r    s&    !A""1%&&r[   c                    t        | t        j                        } |t        j                  | dg      } d}d }n|}t	        | |d      } t        j
                  |       d   }t        j                  t        j                  |t        j                        d|dz
        }t        j                  j                  |  |dz         j                  }t        j                  t        j                  ||t        j                        d      }t        j                  |      }t        j                  t        j
                  |      d   t        j                        }t        j                  | ||      }	t        j                  j                  |	||z
  dz
        j                  }
t        j                   ||
gd      }||S t	        |d|      S )Nr   r   r   rP   r    )r   r'   r_   r)   r  r   r  r   r   top_kr~   r  one_hotrU   r,  r  r*   )rV   kthr   original_axisrW   
bottom_indr   r~   updates
final_masktop_indrQ  s               r   argpartitionr    sS   !RXX&A|JJq2$D"A
BA


277311a!e
<Cr37+33J==JBKDhhtnGhhrxx(+288<G,,QAJggmmJC!4<<G
))Z)
3C
CT""r[   c                 2   t        j                  | | j                        } |+t        j                  |       }t        j                  |       }n|\  }}t        j
                  | | |k\  | |k  z        } t        j                  |||dz         }t        j                  || j                        }t        j                  |dd | d      }t        j                  t        j                  |d      t        j                  || j                        |f      }||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   right)r  r    )r~   r  r   )r'   r   r<   r  r  rN  r  r   r  r  r   rr   )rV   r6  r%   r  r  	bin_edgesbin_indices
bin_countss           r   	histogramr    s     	Qagg.A }--"--" 
ALQ'\:;AGWdQh7I	177+I//)Ab/17CK {4[8gJ
 y  r[   c                 
   t        j                  |       } |d u }t        j                  |       }	|rNt        j                  | dg      } d}|rt        j                  |       \  }
}}nt        j
                  |       \  }
}nnt        || j                  j                        }|r't         j                  j                  | |g      \  }
}}n%t         j                  j                  | |g      \  }
}|r{t        j                  |
      |   }|rt        j                  |       d   n|	|   }t         j                  j                  t        j                  |t         j                        ||      }|rt        j                  |
      |   }|s|
j                  j                  dk(  rt        j                  |
      }nt!        t        |
j                  j                              }||   |d   c|d<   ||<   t        j"                  |
|      }t        j                  ||dg      t        j                        d   }t        j                  |t         j                        }fd}d }t        j$                  |||dz
  |gd      \  }}t        j&                  |
||	      }
|rt        j&                  |      }|rt        j&                  |      }|r5t         j                  j)                  |      }t        j&                  ||      }|t        j                  |
      |   }t        j*                  ||      }t        j&                  |
t        j                  |      |	      }
|r)t        j&                  t        j                  |            }|r)t        j&                  t        j                  |            }t        j,                  d||z
        }t        j.                  t        j                  |
      d
gt         j                        }t        j0                  ||dgg|g      }t        j2                  |dn||
j4                        }t        j6                  |
||      }
|rt        j6                  d|ggd      }|rt        j6                  d|ggd      }t9        |t:              rX|
j                  j=                         }|||<   |
j?                  |       |rj?                  |g       |rj?                  |g       |r|rt        j                  ||	      }|
g}|r|jA                         |r|jA                  |       |r|jA                         tC        |      dkD  rtE        |      S |d   S )Nr   r   r  rP   r   c                     t        j                  d d | f   |      }t        j                  |d      }| dz
  t        j                  ||      fS )NT)stabler   )r'   r  r  )r/   current_indicescol	perm_sorty_2ds       r   rh  zunique.<locals>.bodyZ  sE    iiQT
O<JJs48	1ubiiCCCr[   c                     | dk\  S r  r  )r/   r  s     r   r  zunique.<locals>.cond_  s    Avr[   )parallel_iterationsr    r   )rw  )#r'   r   r   r)   unique_with_countsr  r	   r   r4  UniqueWithCountsV2UniqueV2r   unsorted_segment_minr%   r_   r  r   r(   rm  r  invert_permutationr  r  r,  r  r   r<   r  r@   rA   rF   r   r   r#   r$   ) rV   rP  return_indexreturn_inversereturn_countsr   r!  r_  
is_flattenr  r   inversecounts
num_uniqueaxis_dimunique_indices
sort_orderr0   y_transposednum_colsrh  r  r6   r8   values_counttruncate_size
pad_amountr  r  rY  r[  r  s                                   @r   r  r  (  sk    	QAJXXa[NJJq2$!#!6!6q!9Aw1JAw !qww||4!#!>!>$!>!PAw,,qv,>JAwXXa[&
%/288A;q>^D5I55HHXRXX.
 XXa[&
*AJ aggll+,D"&t*d1gDGT$Z<<40L::lZ,<=Dxx~a(H*BHH=JD
 MMdX\:6AMAz IIa$/YY~zBNYYvz2Fww11*=Hii'2G xx{4( 

<6IIa-0t<YY~rxx7NONYYvrxx'>?F ZZ4,#67
88RWWQZO288<..aykJ<
 wwJ.qJHFF1h5VV!Z 11N VVFa_$5qIF dC 77??,L!%LKK%(($0  $(***Wn5cG~&wv \A-5>=71:=r[   c                     t        | |d      S )Nr   r    r8  r  s     r   dsplitr    r:  r[   )r   )r   r   )Nr   F)NF)NFNr   )NNNr  )NN)r   )r   r   r   N)r   r   r   )r   r   )2   TNr   )gh㈵>g:0yE>F)FF)r  TFNr   )r  Trr  Nr   )Nr  F)rr  NN)rS   N)left)r   )Nr   N)Nr  r   )rL  )rr  N)TFFFNNN(	  r  r  r@  r   r   r  r  rx  
tensorflowr'   #tensorflow.python.ops.linalg.sparser   tensorflow.python.ops.math_opsr   r  r   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   rm  r:   elementwise_binary_unionrJ   rZ   rc   rf   rt   rx   r   	lru_cacher   r   sparse_subtractr   r   elementwise_binary_intersectionr  r  r&  rT   r,  elementwise_unaryr2  r0  r6  r;  r?  rA  rD  rH  r   rR  densifying_unaryr  rV  r  rZ  r^  ra  rd  rg  rj  ro  rt  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,  r:  r=  rA  rC  rF  rv  rJ  rM  r   rS  rU  rX  r[  r]  r`  rb  rp  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  rv  r  r  r  r  r  ru  r  r  rw  r  r   r  r
  rG  r  r  r  r  r  r(  r*  r-  r/  r3  r9  r=  r?  rE  rH  r<  r`  r5  r^  r,  rs  rp  r'  rr   rq   ru  r  r|  r   r  r  r  r  r  re  r  r  r)   r  r  r  rw  r  r  r  r!  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r&  r+  r-  r/  r3  r6  r9  rC  rI  rU   elementwise_divisionr6  r  rO  rQ  rS  rU  r  r  rG   r(   rh  rm  rh  r   r  ru  rw  r  r  r  r  r  r  r  r  r  r[   r   <module>r     s:	           E 1  $ / + D C A / 2 ? ?BJ !  /# 0#L7
4
(1
/d S! !a)H !  !7!78 9N-b '' (J)Z><'
(
    :
:
00	.( ruu% &   !      !  ::$-*6Z@( 
'('$(%J%	5  -$,      
    ><~)(6,6,O(
,>4:@)(**(
)    (  #

  .4"J($!15,&    /$    18GF.+\:P"! IJ(V "&&! " "&&!B "B   "&&!A "A "
!	7 !  !2!2$G H4:  .>< !  !2!2$G H4" !*&&-
.
(,*?(J6?D
@ 20
Q ():8G;i7XH
#6  
  ! !!
,#)&   
 
&    
!6 )"?!>-,`L^    H.  (@+&*..>	.$$!1
 #'$ ,  )&  5    $0&,!H)*: $'#@B
JO'
#@!D 		{>|1r[   