
    i8                        S SK r S SKrS SKJrJr  S SKrS SKrS\\R                  \R                  /\4   S\\R                  \R                  \R                  R                  4   \R                  \R                  \R                  R                  4   /\4   4S jr\S\R                  S\R                  S\4S j5       r\S\R                  S\R                  S\4S	 j5       r\S
\R                  S\R                  S\4S j5       rS
\\R                  \R                  4   S\R                  4S jrS\\R                  \R                  4   S\\R                  \R                  4   4S jrg)    N)CallableUnionfnreturnc                    ^  S[         [        R                  [        R                  4   S[         [        R                  [        R                  4   S[
        4U 4S jjnU$ )Nabr   c                   > [        U 5      n [        U5      nU R                  UR                  :w  a  [        R                  $ U R                  S:X  a  g[        R
                  " [        R                  " U 5      [        R                  " U5      :g  5      (       dF  [        R
                  " [        R                  " U 5      [        R                  " U5      :g  5      (       a  [        R                  $ [        R                  " U 5      [        R                  " U 5      -  n[        R
                  " U5      (       a  [        R                  " S5        X)    nX)    nUR                  S:X  a  gT" X45      $ )Nr   z5Found inf/nan in tensor when calculating the distance)
to_np_arr_fp64shapenpnansizeanyisinfisnanloggingwarning)r   r	   maska_maskedb_maskedr   s        h/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/backends/cadence/runtime/utils.pywrapperdistance.<locals>.wrapper   s    
 11 77agg66M 66Q; 66"((1+!,--rxxPQ{8R1S1S66M xx{RXXa[(66$<<OOSTU8U8 ==A (%%    )r   r   ndarraytorchTensorfloat)r   r   s   ` r   distancer       sN    "&U\\)*"&U\\)*"& 
"&H Nr   r   r	   c                 2    X-
  S-  R                  5       S-  $ )N   g      ?)meanr   r	   s     r   rmsr%   E   s    UqL C''r   c                 N    [         R                  " X-
  5      R                  5       $ Nr   absmaxr$   s     r   max_abs_diffr+   J   s    66!%=r   xx_refc                 T    [         R                  " X-
  U-  5      R                  5       $ r'   r(   )r,   r-   s     r   max_rel_diffr/   O   s!    6619%&**,,r   c                    [        U [        R                  5      (       a,  U R                  5       R	                  5       R                  5       n [        U [        R                  5      (       a  U R                  [        R                  5      n U $ r'   )

isinstancer   r   detachcpunumpyr   r   astypefloat64)r,   s    r   r   r   T   sV    !U\\""HHJNN""$!RZZ  HHRZZ Hr   	predictedground_truthc                     [        X5      nUS:X  a  g[        R                  R                  [	        U5      5      n[        R
                  " U5      [        R
                  " U5      -  $ )Nr   )r%   r   linalgnormr   r6   )r7   r8   numdens       r   normalized_rmsr>   \   sJ     i
&C
ax
))..5
6C::c?RZZ_,,r   )r   typingr   r   r4   r   r   r   r   _tensorr   r    r%   r+   r/   r   r>    r   r   <module>rB      s     "  0"**bjj)5010RZZ!5!556RZZ!5!556 
	0f 
(2:: ("** ( ( 
( 
BJJ 2:: %  
 
-BJJ -rzz -e - 
-eBJJ45 "** -RZZ-.-

ELL01-r   