
    &VfZ)                         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	Zdd
Zd dZd ZddZd!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%dZdS )&    N)standardize_dtype)dtypes)fft)fft2)convert_to_tensor)scipyFc                    |t          j        |          dz   }|dk    }| |         }||         }t          |j                  }||d<   |r=t          j        ||j                  }t           j                            |||           n`t          j        |          }	||	         }
||	         }t          j        ||j                  }t           j                            ||
|           |S N   r   dtype)	npamaxlistshapezerosr   addatargsortdatasegment_idsnum_segmentssortedvalid_indices
valid_datavalid_segment_ids
data_shaperesultsort_indicessorted_segment_idssorted_datas               Y/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/backend/numpy/math.pysegment_sumr$      s    w{++a/1$Mm$J#M2j&''J qM  	;*J,<===
		&+Z8888z"344.|< .*J,<===
		&,k:::M    c                    |t          j        |          dz   }|dk    }| |         }||         }t          |j                  }||d<   |r=t          j        ||j                  }t           j                            |||           n`t          j        |          }	||	         }
||	         }t          j        ||j                  }t           j                            ||
|           |S r
   )	r   r   r   r   r   r   maximumr   r   r   s               r#   segment_maxr(   &   s    w{++a/1$Mm$J#M2j&''J qM  	?*J,<===

f/<<<<z"344.|< .*J,<===

f0+>>>Mr%   c                    t          j        | d          dd d df         }t          j        | d          dd d df         }|r|dd |f         }|dd |f         }nt          j        | | d          d| d f         }t          j        | | d          d| d f         }t          j        | d          }t          j        ||d          }t          j        ||d          }||fS )Naxis.)r   r   sort	partitionargpartitiontake_along_axis)xkr   sorted_indicessorted_valuestop_k_valuestop_k_indicesidxs           r#   top_kr8   A   s   Z+++C2I6NGAB'''TTrT	2M H$S"1"W-&sBQBw/ |Ar333C!H=A2B777aRSSA j,R000 ),"EEE*=#BGGG&&r%   c                     | d d d f         } t          ||          d         }t          j        || d          }||k    }t          j        |d          S )Nr   r*   r+   )r8   r   r0   any)targetspredictionsr2   topk_valuestargets_valuesmasks         r#   in_top_kr@   Y   s^    aaagGQ''*K'W2FFFN[(D6$R    r%   c                     t          j        | |d          }t          j        t          j        t          j        | |z
            |d                    |z   }|st          j        |          n|S )NT)r,   keepdims)r   maxlogsumexpsqueeze)r1   r,   rB   max_xr   s        r#   	logsumexprI   a   se    F14$///EVBF26!e),,4$GGGHH5PF%-92:f69r%   reducedc                 p    |dvrt          d|           t          j                            | |          S )N>   rJ   completez]`mode` argument value not supported. Expected one of {'reduced', 'complete'}. Received: mode=mode)
ValueErrorr   linalgqr)r1   rN   s     r#   rQ   rQ   g   sL    ***%"% %
 
 	

 9<<<%%%r%   c                 z   | 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                            | ||          } t          j        | g || j         dd          R           S )Nr*   )r   strides)r   r   rS   r   libstride_tricks
as_stridedreshape)r1   sequence_lengthsequence_stridebatch_shape_r   rS   s          r#   extract_sequencesr]   q   s    gO[!{##KGCRCL	
/9	:N E in!)B-'		"  G 	'''HHA:a6;666777r%   c                    t          | t          t          f          rt          |           dk    rt	          d|            | \  }}|j        |j        k    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 )N   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   lenrO   r   r   
issubdtyper   floating)r1   realimagcomplex_inputs       r#   _get_complex_tensor_from_tupleri      s   a%'' 
3q66Q;; 
 
 	
 JD$zTZN&*jN NAEN N
 
 	
 =R[11 

BK: : 
       
 
 	
 29$Mr%   c                 v    t          |           \  }}t          j        |          t          j        |          fS N)jax_fftr   arrayr1   rf   rg   s      r#   r   r      s,    JD$8D>>28D>>))r%   c                 v    t          |           \  }}t          j        |          t          j        |          fS rk   )jax_fft2r   rm   rn   s      r#   r   r      s,    !JD$8D>>28D>>))r%   c                     t           j                            | |dd          }t          j        |                              | j                  t          j        |                              | j                  fS )Nr*   backwardnr,   norm)r   r   rfftrf   astyper   rg   )r1   
fft_lengthcomplex_outputs      r#   rv   rv      sc    V[[jr
[KKN 	&&qw//
&&qw// r%   c                     t          |           }t          j                            ||dd                              | d         j                  S )Nr*   rr   rs   r   )ri   r   r   irfftrw   r   )r1   rx   rh   s      r#   r{   r{      sH    2155M6<<":   fQqTZr%   hannTc           
      ,   t          | j                  dvrt          d| j                   ||k     rt          d| d|           t	          |t
                    r|dvrt          d|           t          |           } | j        }|rOd t          t          | j	                            D             }|dz  |dz  f|d	<   t          j        | |d
          } ||z
  dz  }||z
  |z
  }	|t	          |t
                    r5t          t          j                            ||          | j                  }
nt          || j                  }
t          |
j	                  dk    s|
j	        d	         |k    rt          d|
j	                   t          j        |
||	gg          }
n!t          j        ||z   |	z   | j                  }
t          j                            | d|
||z   |	z   ||z   |	z   |z
  |d d          d	         } | t          j        d|
                                dz  z            z  } t          j        | dd	          } t          j        |                               |          t          j        |                               |          fS )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=>   r|   hammingz]If a string is passed to `window`, it must be one of `"hann"`, `"hamming"`. Received: window=c                     g | ]}d S ))r   r    ).0r\   s     r#   
<listcomp>zstft.<locals>.<listcomp>   s    999V999r%   r_   r*   reflectrM   r   r   PThe shape of `window` must be equal to [sequence_length].Received: window shape=      ?F)fswindownpersegnoverlapnfftboundarypaddedrT   )r   r   	TypeErrorrO   ra   strr   rangerc   r   r   padr   signal
get_windowonesstftsqrtrE   swapaxesrf   rw   rg   )r1   rY   rZ   rx   r   center	ori_dtype	pad_widthl_padr_padwins              r#   r   r      s    !!)???.$%G. .
 
 	
 O##')8' '$' '
 
 	

 &# ,,,D;AD D   	!AI 199U3qw<<%8%8999	#q*/:	"F1ii000/)a/E(50Efc"" 	;#''@@  CC $F!':::Csy>>Q#)B-?"B"B6*-)6 6   fSE5>*++g.6qwGGG	 5(50!E)E1OC 	 		 		 			
A 	
BGC#''))q.()))A
Ar2A71::Y''):):9)E)EEEr%   c                 F   t          |           } t          j        |           j        }||| j        d         dz
  z  z   }||z
  dz  }	||z
  |	z
  }
|t          |t                    r0t          t          j	        
                    ||          |          }nt          ||          }t          |j                  dk    s|j        d         |k    rt          d|j                   t          j        ||	|
gg          }nt          j        ||	z   |
z   |          }t          j	                            | d|||	z   |
z   ||	z   |
z   |z
  |ddd		  	        d         } || |                                z  n| |z  } |du rd
n|dz  }|||z   }n|du r|dz   }n|}| d||f         S )NrT   r   r_   r   r*   r   r   F)r   r   r   r   r   r   	time_axis	freq_axisr   T.)ri   r   rf   r   r   ra   r   r   r   r   r   rc   rO   r   r   istftrE   )r1   rY   rZ   rx   lengthr   r   r   expected_output_lenr   r   r   startends                 r#   r   r      s    	'q))AGAJJE$!'"+/'JJ/)a/E(50Efc"" 	9#''@@  CC $F%888Csy>>Q#)B-?"B"B6*-)6 6   fSE5>*++g.6uEEE	 5(50!E)E1OC 	 
	 
	 	
	
A  +CGGII_1DA5AAjAoEfn	4a !S%)^r%   c                 0    dt          j        |           z  S )Nr   )r   r   r1   s    r#   rsqrtr   0  s    r%   c                 d    t          j        t          j                            |                     S rk   )r   rm   r   specialerfr   s    r#   r   r   4  s"    8EM%%a(()))r%   c                 d    t          j        t          j                            |                     S rk   )r   rm   r   r   erfinvr   s    r#   r   r   8  s"    8EM((++,,,r%   c                 ~    t          |           } t          |          }t          j                            | |          S rk   )r   r   rP   solve)abs     r#   r   r   <  s2    !A!A9??1a   r%   c                     t          |           } t          | j                  }d|v s|dk    rt          j        | j        d          }t
          j                            | |||                              |          S )Nintboolr~   )ordr,   rB   )	r   r   r   r   result_typer   rP   ru   rw   )r1   r   r,   rB   r   s        r#   ru   ru   B  st    !Aag&&E~~&"17I669>>!4(>CCJJ  r%   )NF)F)rJ   rk   )r|   T)Nr|   T)NNF) numpyr   keras.src.backendr   keras.src.backend.commonr   keras.src.backend.jax.mathr   rl   r   rp   keras.src.backend.numpy.corer   keras.src.utils.module_utilsr   r$   r(   r8   r@   rI   rQ   r]   ri   rv   r{   r   r   r   r   r   r   ru   r   r%   r#   <module>r      s       / / / / / / + + + + + + 5 5 5 5 5 5 7 7 7 7 7 7 : : : : : : . . . . . .   6   6' ' ' '0! ! !: : : :& & & &8 8 8  8* * *
* * *
       LP=F =F =F =FJ 6 6 6 6r  * * *- - -! ! !     r%   