
    2VhR0                         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Z
ddZdd	Zd
 ZddZd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"dZd Zy)#    N)config)standardize_dtype)dtypes)cast)convert_to_tensorc                    |r4|t        d| d| d      t        j                  j                  | |      S |0t        j                  |      \  }}t        j
                  |      d   }t        j                  j                  | ||      S NzsArgument `num_segments` cannot be set when sorted is True when using the tensorflow backend.Received: num_segments=z	, sorted=.r   )
ValueErrortfmathsegment_sumuniqueshapeunsorted_segment_sumdatasegment_idsnum_segmentssortedunique_segment_ids_s         Q/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/backend/tensorflow/math.pyr   r   
       #**6yK 
 ww""455$&IIk$:!88$67:Lww++D+|LL    c                    |r4|t        d| d| d      t        j                  j                  | |      S |0t        j                  |      \  }}t        j
                  |      d   }t        j                  j                  | ||      S r	   )r   r   r   segment_maxr   r   unsorted_segment_maxr   s         r   r   r      r   r   c                 F    t         j                  j                  | ||      S )N)r   )r   r   top_k)xkr   s      r   r    r    *   s    77==Af=--r   c                 D    t         j                  j                  | ||      S N)r   r   in_top_k)targetspredictionsr"   s      r   r%   r%   .   s    77G[!44r   c                 F    t         j                  j                  | ||      S )Naxiskeepdims)r   r   reduce_logsumexp)r!   r*   r+   s      r   	logsumexpr-   2   s    77##AD8#DDr   c                     |dvrt        d|       |dk(  rt        j                  j                  |       S t        j                  j                  | d      S )N>   reducedcompletez]`mode` argument value not supported. Expected one of {'reduced', 'complete'}. Received: mode=r/   T)full_matrices)r   r   linalgqr)r!   modes     r   r3   r3   6   sZ    **"V%
 	

 yyy||A99<<<..r   c                 J    t         j                  j                  | ||dd      S )NF)frame_length
frame_stepr*   pad_end)r   signalframe)r!   sequence_lengthsequence_strides      r   extract_sequencesr>   B   s+    99??	$"   r   c                    t        | t        t        f      rt        |       dk7  rt	        d|        | \  }}t        |      }t        |      }|j                  |j                  k7  r%t	        d|j                   d|j                         |j                  j                  r|j                  j                  st	        d|  d      t        j                  j                  ||      }|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=r
   )
isinstancetuplelistlenr   r   r   dtypeis_floatingr   r   complex)r!   realimagcomplex_inputs       r   _get_complex_tensor_from_tuplerK   L   s    a%'3q6Q;#
 	
 JD$T"DT"DzzTZZ&&*jj\N
 	
 ::!!)?)?#Q 
 	
 II%%dD1Mr   c                     t        |       }t        j                  j                  |      }t        j                  j                  |      t        j                  j                  |      fS r$   )rK   r   r:   fftr   rH   rI   r!   rJ   complex_outputs      r   rM   rM   h   sC    215MYY]]=1N77<<'n)EEEr   c                     t        |       }t        j                  j                  |      }t        j                  j                  |      t        j                  j                  |      fS r$   )rK   r   r:   fft2dr   rH   rI   rN   s      r   fft2rR   n   sC    215MYY__]3N77<<'n)EEEr   c                    | \  }}t        t        j                  |      d   |j                        }t        t        j                  |      d   |j                        }|| }}t	        ||f      \  }}|||z  z  | ||z  z  fS )Nr6   )r   r   r   rE   rR   )	r!   rH   rI   hw	real_conj	imag_conjfft_realfft_imags	            r   ifft2r[   t   s    JD$RXXd^B,ARXXd^B,A$yIy)45Hhq1uyAE222r   c                     ||g}t         j                  j                  | |      }t         j                  j	                  |      t         j                  j                  |      fS )N)
fft_length)r   r:   rfftr   rH   rI   )r!   r]   rO   s      r   r^   r^   }   sJ     \
YY^^A*^=N77<<'n)EEEr   c                 b    t        |       }||g}t        j                  j                  ||      S r$   )rK   r   r:   irfft)r!   r]   rJ   s      r   r`   r`      s.    215M \
99??=*55r   c                 \   t        | j                        dvrt        d| j                         ||k  rt        d| d|       t	        |t
              r|dvrt        d|       t        |       } |rPt        t        | j                              D cg c]  }d }}|dz  |dz  f|d	<   t        j                  | |d
      } ||z
  dz  }||z
  |z
  }	|t	        |t
              r_|dk(  r-t        j                  j                  |d| j                        nDt        j                  j                  |d| j                        nt        || j                        t        j                        dk7  sj                  d	   |k7  rt        dj                         t        j                  ||	gg      fd}
nd }
t        j                  j                  | ||z   |	z   |||
      }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   r@   r6   reflect)r4   rd   TperiodicrE   rE      PThe shape of `window` must be equal to [sequence_length].Received: window shape=c                     S r$    r8   rE   	win_arrays     r   winzstft.<locals>.win   s	    r   r7   r8   r]   	window_fn)r   rE   	TypeErrorr   rA   strr   rangerD   r   r   padr:   hann_windowhamming_windowstftr   rH   rI   )r!   r<   r=   r]   windowcenterr   	pad_widthl_padr_padrp   resultro   s               @r   ry   ry      sG    !)??$$%GG9.
 	
 O#))8(9 :$'
 	

 &#,,;;A(D  	!A%*3qww<%89V9	9#q*/:	"FF1ii0/)a/E(50Efc"II11#d!'' 2 	 II44#d!'' 5 	 *&@Iy1$	(;(N**3//):<  FF9u~&67		 YY^^	%-5"  F 77<<f!555O :s   	H)c                 J   t        |       }t        j                  j                  |      j                  }||t        j
                  |      d   dz
  z  z   }	||z
  dz  }
||z
  |
z
  }|t        |t              rK|dk(  r#t        j                  j                  |d|      n0t        j                  j                  |d|      nt        ||      t        j
                        dk7  sj
                  d   |k7  rt        d	j
                         t        j                  |
|gg      t        j                  j                  |fd
      }nd }t        j                  j!                  |||
z   |z   |||      } |du rdn|dz  }|||z   }n|du r|dz   }n|	}| d||f   S )NrT   rj   r@   rd   Trg   ri   r6   rk   c                     S r$   rm   rn   s     r   <lambda>zistft.<locals>.<lambda>   s    y r   rq   Fr   .)rK   r   r   rH   rE   r   rA   rt   r:   rw   rx   r   rD   r   rv   inverse_stft_window_fninverse_stft)r!   r<   r=   r]   lengthrz   r{   rJ   rE   expected_output_lenr}   r~   rp   startendro   s                  @r   istftr      s    315MGGLL'--E$
#a'(  /)a/E(50Efc"II11#d% 2 	 II44#d% 5 	 *&>Iy1$	(;(N**3//):<  FF9u~&67	ii..@
 
		%-5" 	 	A 5AjAoEfn	4a !S%)^r   c                 @    t         j                  j                  |       S r$   )r   r   rsqrtr!   s    r   r   r     s    77==r   c                 @    t         j                  j                  |       S r$   )r   r   erfr   s    r   r   r     s    77;;q>r   c                 @    t         j                  j                  |       S r$   )r   r   erfinvr   s    r   r   r     s    77>>!r   c                 n    t        |       } t        |      }t        j                  j                  | |      S r$   )r   r   r2   solve)abs     r   r   r     s+    !A!A99??1a  r   c                 	   ddl m} t        |       } | j                  }|j                  }|t        t        |            }nt        |t              r|f}t        |      dk(  r|d   n|}t        |t              rdn
t        |      }|dk(  r|d}n	|dk(  r|d}t        | j                        dk(  rt        j                         }n$t        j                  | j                  t               }t#        | |      } |dk(  r|dddt!        d      fv s|dk(  r5|ddddt!        d      fv r#t$        j&                  j)                  | |||	      S |dk(  r/|d
vr*|t!        d      k(  r?t$        j*                  j-                  t$        j*                  j/                  |       ||      S |dk(  rUt$        j*                  j1                  t%        j"                  t%        j2                  | d      | j                        ||      S t        || j                        }t$        j*                  j1                  t%        j4                  t$        j*                  j/                  |       |      ||      }	t%        j4                  |	d|z        S |dk(  r|dt!        d      ddfv r|d   |d   }}
|
dk  r|
|z   n|
}
|dk  r||z   n|}|t!        d      k(  rc|s
|
|kD  r|
dz  }
t$        j*                  j-                  t%        j0                  t$        j*                  j/                  |       ||      |
|      } | S |dk(  rc|s
||
kD  r|dz  }t$        j*                  j-                  t%        j0                  t$        j*                  j/                  |       |
|      ||      } | S  || |d      } |dk(  rAt$        j*                  j-                  t$        j&                  j7                  | d      d      } n@t$        j*                  j1                  t$        j&                  j7                  | d      d      } |r2t%        j8                  | |d         } t%        j8                  | |d         } | S |dk(  rt;        d|       |dk(  rt;        d|       t;        d|       )Nr   )moveaxisrj   	euclideanr@   froint64inf)ordr*   r+   )r   nucz-infr)   ri   g      ?r   rT   r6   )rT   r6   F)
compute_uv)r*   z6Invalid `ord` argument for vector norm. Received: ord=z6Invalid `ord` argument for matrix norm. Received: ord=z$Invalid axis values. Received: axis=)"keras.src.backend.tensorflow.numpyr   r   r   rankrB   ru   rA   intrD   r   rE   r   floatxr   result_typefloatr   r   r2   normr   
reduce_minabs
reduce_sum	not_equalpowsvdexpand_dimsr   )r!   r   r*   r+   r   x_shapendimnum_axesrE   outrow_axiscol_axiss               r   r   r     s   ;!AggG<<D|U4[!	D#	w$i1n47$DtS)qs4yH1}	Q3;!W,""177E2QA 	A#+q!U5\!BBA#+uaE%L!IIyy~~aSth~GG 1}N2%-77%%ATH &   AX77%%Q*!'':! &   $Cqww7C''$$rww{{1~s+$ % C 66#sSy))	Q35%-R"@@!!Wd1g(&.l8d?&.l8d?%-8 3A""bggkk!n8hO! # A4 + BY8 3A""bggkk!n8hO! # A$  D(+AbyGG&&IIMM!M6R '  GG&&IIMM!M6R '  NN1d1g.NN1d1g.1}DSEJ
 	
 
QDSEJ
 	
 ?vFGGr   c                 V    t        |       } t        j                  j                  |       S r$   )r   r   r2   logdetr   s    r   r   r   {  s!    !A99Ar   )NF)T)r/   r$   )rd   T)Nrd   T)NNF)
tensorflowr   keras.src.backendr   r   keras.src.backend.commonr   !keras.src.backend.tensorflow.corer   r   r   r   r    r%   r-   r3   r>   rK   rM   rR   r[   r^   r`   ry   r   r   r   r   r   r   r   rm   r   r   <module>r      s     $ / + 2 ?M M .5E	/8FF3F6 LP>6L 9x!^HBr   