
    ij)                         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 Zdd	Zdd
ZddZddZd dZd ZddZd Zd Zd Zd Zd Z	d Zd!dZd!dZ	 d"dZ	 	 	 d#dZd Zd Z d Z!d Z"d Z#y)$    N)standardize_dtype)dtypes)fft)fft2)convert_to_tensor)scipyc                    |t        j                  |      dz   }|dk\  }| |   }||   }t        |j                        }||d<   |t         j                  k(  r4t        j
                  ||j                        t         j                   z  }	n|t         j                  k(  r3t        j
                  ||j                        t         j                  z  }	nV|t         j                  k(  r"t        j
                  ||j                        }	n!t        j                  ||j                        }	|r|j                  |	||       |	S t        j                  |      }
||
   }||
   }|j                  |	||       |	S )N   r   dtype)npamaxlistshapemaximumonesr   infminimummultiplyzerosatargsort)datasegment_idsreduction_methodnum_segmentssortedvalid_indices
valid_datavalid_segment_ids
data_shaperesultsort_indicessorted_segment_idssorted_datas                q/var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/keras/src/backend/numpy/math.py_segment_reduction_fnr'      sE    ww{+a/1$Mm$J#M2j&&'J qM 2::%:+;+;<wF	RZZ	':+;+;<rvvE	R[[	(:+;+;<*J,<,<=F$5zB M zz"34.|< .F$6DM    c                 <    t        | |t        j                  ||      S N)r'   r   addr   r   r   r   s       r&   segment_sumr-   /   s     k266< r(   c                 <    t        | |t        j                  ||      S r*   )r'   r   r   r,   s       r&   segment_maxr/   5        k2::|V r(   c                 <    t        | |t        j                  ||      S r*   )r'   r   r   r,   s       r&   segment_minr2   ;   r0   r(   c                 <    t        | |t        j                  ||      S r*   )r'   r   r   r,   s       r&   segment_prodr4   A   s     k2;;f r(   c                    |rMt        j                  | d      dd d df   }t        j                  | |d      }|dd |f   }|dd |f   }||fS t        j                  | | d      d| d f   }t        j                  | |d      }||fS )Naxis.)r   r   take_along_axisargpartition)xkr   sorted_indicessorted_valuestop_k_valuestop_k_indicess          r&   top_krA   G   s    AB/TrT	:**1n2F$S"1"W-&sBQBw/ && A2B7aRSA))!]D&&r(   c                     | d d d f   } t        ||      d   }t        j                  || d      }||k\  }t        j                  |d      S )Nr   r6   r7   )rA   r   r9   any)targetspredictionsr<   topk_valuestargets_valuesmasks         r&   in_top_krI   V   sP    agGQ'*K''W2FN[(D66$R  r(   c                 F    t         j                  j                  | ||      S )N)r8   keepdims)r   special	logsumexp)r;   r8   rK   s      r&   rM   rM   ^   s    ==""14("CCr(   c                    t        j                  |       } t        j                  |      }| j                  dk  s|j                  dk  rt        d      | j                  d   |j                  d   k7  rt        d      | dd d d d d f   |dd d d d d f   z
  }t        j
                  t        j                  ||z  d            S )N   z"`cdist` inputs must have rank >= 2r6   z.Last dimension of inputs to `cdist` must match.r7   )r   asarrayndim
ValueErrorr   sqrtsum)r;   ydiffs      r&   cdistrW   b   s    


1A


1AvvzQVVaZ=>>wwr{aggbk!IJJS!T1_#tQ/ 22D77266$+B/00r(   c                    | j                   ^ }}t        |      }| j                   d d | j                   d   ||z
  z
  |z  |fz   }| j                  d d || j                  d   z  | j                  d   fz   }t        j                  j
                  j                  | ||      } t        j                  | g || j                   dd        S )Nr6   )r   strides)r   r   rY   r   libstride_tricks
as_stridedreshape)r;   sequence_lengthsequence_stridebatch_shape_r   rY   s          r&   extract_sequencesrc   m   s    ggO[!{#KGGCRL	
/9	:N E iin!))B-'			"  G 	'''HA::a6;6677r(   c                    t        | t        t        f      rt        |       dk7  rt	        d|        | \  }}|j
                  |j
                  k7  r%t	        d|j
                   d|j
                         t        j                  |j                  t        j                        r.t        j                  |j                  t        j                        st	        d|  d      |d|z  z   }|S )NrO   zLInput `x` should be a tuple of two tensors - real and imaginary.Received: x=zInput `x` should be a tuple of two tensors - real and imaginary.Both the real and imaginary parts should have the same shape. Received: x[0].shape = z, x[1].shape = zBAt least one tensor in input `x` is not of type float.Received: x=.y              ?)

isinstancetupler   lenrR   r   r   
issubdtyper   floating)r;   realimagcomplex_inputs       r&   _get_complex_tensor_from_tuplern   |   s    a%'3q6Q;#
 	
 JD$zzTZZ&&*jj\N
 	
 ==R[[1

BKK: #Q 
 	
 29$Mr(   c                 r    t        |       \  }}t        j                  |      t        j                  |      fS r*   )jax_fftr   arrayr;   rk   rl   s      r&   r   r      s*    JD$88D>288D>))r(   c                 r    t        |       \  }}t        j                  |      t        j                  |      fS r*   )jax_fft2r   rq   rr   s      r&   r   r      s*    !JD$88D>288D>))r(   c                     t        |       }t        j                  j                  |      }t        j                  |      t        j
                  |      fS r*   )rn   r   r   ifft2rk   rl   )r;   rm   complex_outputs      r&   rv   rv      s;    215MVV\\-0N77>"BGGN$;;;r(   c                     t         j                  j                  | |dd      }t        j                  |      j	                  | j
                        t        j                  |      j	                  | j
                        fS )Nr6   backwardnr8   norm)r   r   rfftrk   astyper   rl   )r;   
fft_lengthrw   s      r&   r}   r}      s^    VV[[jr
[KN 	&&qww/
&&qww/ r(   c                     t        |       }t        j                  j                  ||dd      j	                  | d   j
                        S )Nr6   ry   rz   r   )rn   r   r   irfftr~   r   )r;   r   rm   s      r&   r   r      sA    215M66<<":  fQqTZZr(   c           
         t        | j                        dvrt        d| j                         ||k  rt        d| d|       t	        |t
              r|dvrt        d|       t        |       } | j                  }|rPt        t        | j                              D cg c]  }d }}|dz  |dz  f|d	<   t        j                  | |d
      } ||z
  dz  }	||z
  |	z
  }
|t	        |t
              r6t        t        j                  j                  ||      | j                        }nt        || j                        }t        |j                        dk7  s|j                  d	   |k7  rt        d|j                         t        j                  ||	|
gg      }n't        j                  ||	z   |
z   | j                        }t        j                  j!                  | d|||	z   |
z   ||	z   |
z   |z
  |d d      d	   } | t        j"                  d|j%                         dz  z        z  } t        j&                  | dd	      } t        j(                  |       j+                  |      t        j,                  |       j+                  |      fS c c}w )N>   float32float64zJInvalid input type. Expected `float32` or `float64`. Received: input type=zT`fft_length` must equal or larger than `sequence_length`. Received: sequence_length=z, fft_length=>   hannhammingz]If a string is passed to `window`, it must be one of `"hann"`, `"hamming"`. Received: window=)r   r   rO   r6   reflect)moder   r
   PThe shape of `window` must be equal to [sequence_length].Received: window shape=      ?F)fswindownpersegnoverlapnfftboundarypaddedrZ   )r   r   	TypeErrorrR   rf   strr   rangerh   r   r   padr   signal
get_windowr   stftrS   rT   swapaxesrk   r~   rl   )r;   r_   r`   r   r   center	ori_dtyperb   	pad_widthl_padr_padwins               r&   r   r      s    !)??$$%GG9.
 	
 O#))8(9 :$'
 	

 &#,,;;A(D  	!AI%*3qww<%89V9	9#q*/:	"FF1ii0/)a/E(50Efc"#''@C $F!'':Csyy>Q#))B-?"B**-))6  ffSE5>*+gg.6qwwG	 5(50!E)E1OC 	 		 			
A 	
BGGC#'')q.())A
Ar2A771:Y'):):9)EEEK :s   !	Jc                 (   t        |       } t        j                  |       j                  }||| j                  d   dz
  z  z   }||z
  dz  }	||z
  |	z
  }
|t        |t              r,t        t        j                  j                  ||      |      }nt        ||      }t        |j                        dk7  s|j                  d   |k7  rt        d|j                         t        j                  ||	|
gg      }nt        j                  ||	z   |
z   |      }t        j                  j                  | d|||	z   |
z   ||	z   |
z   |z
  |ddd		      d   } || |j!                         z  n| |z  } |du rd
n|dz  }|||z   }n|du r|dz   }n|}| d||f   S )NrZ   r
   rO   r   r6   r   r   F)r   r   r   r   r   r   	time_axis	freq_axisr   T.)rn   r   rk   r   r   rf   r   r   r   r   r   rh   rR   r   r   istftrT   )r;   r_   r`   r   lengthr   r   r   expected_output_lenr   r   r   startends                 r&   r   r      s    	'q)AGGAJE$!''"+/'JJ/)a/E(50Efc"#''@C $F%8Csyy>Q#))B-?"B**-))6  ffSE5>*+gg.6uE	 5(50!E)E1OC 	 
	 	
	
A  +CGGI_1DA5AjAoEfn	4a !S%)^r(   c                     t        j                  | j                        }dt        j                  |       z  j                  |      S )Nr   )r   result_typer   r   rS   r~   r;   r   s     r&   rsqrtr   2  s4    qww'E"''!*$$U++r(   c                     t        j                  | j                        }t        j                  j                  |       j                  |      S r*   )r   r   r   r   rL   erfr~   r   s     r&   r   r   7  s6    qww'E==Q&&u--r(   c                     t        j                  | j                  t              }t        j
                  j                  |       j                  |      S r*   )r   r   r   floatr   rL   erfcr~   r   s     r&   r   r   <  s8    qww.E==a ''..r(   c                     t        |       } t        j                  | j                  t              }t
        j                  j                  |       j                  |      S r*   )	r   r   r   r   r   r   rL   erfinvr~   r   s     r&   r   r   A  sB    !Aqww.E=="))%00r(   c                 $    ddl m}  ||       d   S )Nr   )slogdetr
   )keras.src.backend.numpy.numpyr   )r;   r   s     r&   logdetr   G  s    5 1:a=r(   )NF)Tr*   )r   T)Nr   T)$numpyr   keras.src.backendr   keras.src.backend.commonr   keras.src.backend.jax.mathr   rp   r   rt   keras.src.backend.numpy.corer   keras.src.utils.module_utilsr   r'   r-   r/   r2   r4   rA   rI   rM   rW   rc   rn   rv   r}   r   r   r   r   r   r   r   r    r(   r&   <module>r      s     / + 5 7 : .!H'!D188*
*
< LP=FJ 6r,
.
/
1r(   