
    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Z
ddZd	 Zd
 Zd Zd Zd ZddZddZd ZddZddZddZddZddZddZy)    N)config)standardize_dtype)dtypes)cast)convert_to_tensorc                     t         j                  j                  |       }t         j                  j	                  |d      }|rt         j                  j                  |      S |S )NCholesky)tflinalgcholesky	debuggingcheck_numericsadjoint)aupperouts      x/var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/keras/src/backend/tensorflow/linalg.pyr   r   
   sI    
))

Q
C
,,
%
%c:
6Cyy  %%J    c                 "   t        j                  t        j                  |       d   | j                        }t         j                  j                  | ||       }|rt        j                  ||d      }|S t        j                  ||d      }|S )N)num_rowsdtypelowerT)transpose_b)transpose_a)r
   eyeshaper   r   triangular_solvematmul)r   r   identityinv_chola_invs        r   cholesky_inverser$      st    vvrxx{2agg>Hyy))!XY)GH		(H$? L 		(H$?Lr   c                 @    t         j                  j                  |       S N)r
   r   detr   s    r   r'   r'          99==r   c                 @    t         j                  j                  |       S r&   )r
   r   eigr(   s    r   r+   r+   !   r)   r   c                 @    t         j                  j                  |       S r&   )r
   r   eighr(   s    r   r-   r-   %   s    99>>!r   c                 @    t         j                  j                  |       S r&   )r
   r   invr(   s    r   r/   r/   )   r)   r   c                     t         j                  j                  |       \  }}|t         j                  j	                  |      fS r&   )r
   r   lumathinvert_permutation)r   r1   ps      r   	lu_factorr5   -   s1    IILLOEBrww))!,,,r   c                    ddl m} t        |       } | j                  }|j                  |t        t                    }nt        |t              r|f}t        fd|D              rt        d d|       t        |      dk(  r|d   n|}t        |t              rdn
t        |      }t        | j                        dk(  rt        j                         }n$t!        j"                  | j                  t$              }t'        | |      } |dk(  r||dk(  rKt)        j*                  t)        j,                  | t(        j.                  j1                  |       z  ||	            S |t%        d
      k(  r?t(        j.                  j3                  t(        j.                  j5                  |       ||	      S |t%        d      k(  r?t(        j.                  j7                  t(        j.                  j5                  |       ||	      S |dk(  rUt(        j.                  j-                  t)        j&                  t)        j8                  | d      | j                        ||	      S t        |t:              rt        d|       t        || j                        }t(        j.                  j-                  t)        j<                  t(        j.                  j5                  |       |      ||	      }t)        j<                  |d|z        S |dk(  rE|d   |d   }
}	|	dk  r|	z   n|	}	|
dk  r|
z   n|
}
||dk(  rKt)        j*                  t)        j,                  | t(        j.                  j1                  |       z  ||	            S |dk(  rc|s
|
|	kD  r|
dz  }
t(        j.                  j3                  t)        j,                  t(        j.                  j5                  |       |	|	      |
|	      } | S |dk(  rc|s
|
|	kD  r|
dz  }
t(        j.                  j7                  t)        j,                  t(        j.                  j5                  |       |	|	      |
|	      } | S |t%        d
      k(  rc|s
|	|
kD  r|	dz  }	t(        j.                  j3                  t)        j,                  t(        j.                  j5                  |       |
|	      |	|	      } | S |t%        d      k(  rc|s
|	|
kD  r|	dz  }	t(        j.                  j7                  t)        j,                  t(        j.                  j5                  |       |
|	      |	|	      } | S |dv r || |d      } |dk(  rAt(        j.                  j7                  t(        j>                  jA                  | d      d      } n|dk(  rAt(        j.                  j3                  t(        j>                  jA                  | d      d      } n@t(        j.                  j-                  t(        j>                  jA                  | d      d      } |r2t)        jB                  | |d         } t)        jB                  | |d         } | S t        d|       t        d|       )Nr   )moveaxisc              3   8   K   | ]  }| k  xs |k\    y wr&    ).0r   ndims     r   	<genexpr>znorm.<locals>.<genexpr>=   s#     
0a1u9!T	!
0s   zPAll `axis` values must be in the range [-ndim, ndim). Received inputs with ndim=z, while axis=   int64   )axiskeepdimsinfz-infr   z6Invalid `ord` argument for vector norm. Received: ord=g      ?fror   )nucr?   )rF   r   rF   F)
compute_uvr@   z6Invalid `ord` argument for matrix norm. Received: ord=z$Invalid axis values. Received: axis=)""keras.src.backend.tensorflow.numpyr7   r   r   ranktuplerange
isinstanceintany
ValueErrorlenr   r   r   floatxr   result_typefloatr   r
   sqrt
reduce_sumr2   conj
reduce_maxabs
reduce_min	not_equalstrpowr   svdexpand_dims)xordr@   rA   r7   x_shapenum_axesr   r   row_axiscol_axisr;   s              @r   normrf   2   s   ;!AggG<<D|U4[!	D#	w

04
00))-mD6C
 	
 $i1n47$DtS)qs4yH!W,""177E2QA 1};#(77a"'',,q/1xP  E%L 77%%ATH &   E&M!77%%ATH &   AX77%%Q*!'':! &  
 S!HN  $Cqww7C''$$rww{{1~s+$ % C 66#sSy))	Q!!Wd1g(&.l8d?&.l8d?;#,77a"'',,q/1xP  AX8 3A""bggkk!n8hO! # Ad [ BY8 3A""bggkk!n8hO! # AT K E%L 8 3A""bggkk!n8hO! # AD ; E&M!8 3A""bggkk!n8hO! # A4 + N"D(+AbyGG&&IIMM!M6R '  GG&&IIMM!M6R '  GG&&IIMM!M6R '  NN1d1g.NN1d1g.
  HN 
 ?vFGGr   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=rh   Tfull_matrices)rP   r
   r   qr)r`   modes     r   rl   rl      sZ    **"V%
 	

 yyy||A99<<<..r   c                 :   |j                   j                  | j                   j                  dz
  k(  rLt        j                  |d      }t        j                  t        j
                  j                  | |      d      S t        j
                  j                  | |      S )Nr=   r   rH   )r   ndimsr
   r_   squeezer   solve)r   bs     r   rq   rq      sd    ww}}))NN12&zz"))//!Q/b9999??1a  r   c                 B   |j                   j                  | j                   j                  dz
  k(  rNt        j                  |d      }t        j                  t        j
                  j                  | ||      d      S t        j
                  j                  | ||      S )Nr=   r   rH   r   )r   ro   r
   r_   rp   r   r   )r   rr   r   s      r   solve_triangularrt      sy    ww}}))NN12&zzII&&q!5&9
 	
 99%%a%%88r   c                     |du r"t         j                  j                  | |d      S t         j                  j                  | ||      \  }}}||t         j                  j                  |      fS )NF)rk   rG   )r
   r   r^   r   )r`   rk   rG   suvs         r   r^   r^      se    Uyy}}Qm}NNiimm	:  GAq! a""1%%%r   c                    t        |       } t        |      }| j                  d   |j                  d   k7  rt        d      |j                  }|dk(  r	|d d d f   }| j                  dk7  rt	        | j                   d      |j                  dk7  rt	        |j                   d      | j                  \  }}| j
                  }t        j                  j                  j                  |      j                  }| j                  dk(  rUt        j                  d| j
                        }t        j                  |g|j                  dd  | j
                        }	n[||t        ||      z  }nt        j                  |dk  ||      }t        | d	
      \  }
}}|t        j                   ||j
                        |d   z  k\  }t        j                  t        j                  ||d      | j
                        }t        j                  |d|z  d      d d t        j                   f   }t        j"                  t        j$                  t        j&                  j)                  |
            |      }t        j"                  t        j$                  t        j&                  j)                  |            ||z        }	|dk(  rt        j*                  |	dg      }	|	S )Nr   z-Leading dimensions of input arrays must matchr=   r?   z7-dimensional array given. Array must be two-dimensionalz>-dimensional array given. Array must be one or two-dimensionalr9   rC   Frj   r   )r   r   rP   r;   	TypeErrorr   r
   experimentalnumpyfinfoepszerosmaxwherer^   r   newaxisr    	transposer2   rW   reshape)r   rr   rcondb_orig_ndimmnr   r~   rv   r`   rw   vtmasksafe_ss_invu_t_bs                   r   lstsqr      s;   !A!AwwqzQWWQZHII&&KaagJvv{vvhMN
 	
 	vv{vvh 3 3
 	
 77DAqGGE
//


%
%e
,
0
0Cww"}HHQagg&HHa&!''!"+&agg6=#a)OEHHUQYU3Eq.1bB((agg>1EE$1-QWW=q6z1-am<		",,rww||A7;IIbll277<<#34eemDaJJq2$Hr   c                 Z    t        |       } t        j                  j                  | |      S )N)tol)r   r
   r   matrix_rank)r`   r   s     r   r   r      s&    !A99   ,,r   c                 Z    t        |       } t        j                  j                  | |      S )N)r   )r   r
   r   pinv)r`   r   s     r   r   r      s#    !A99>>!5>))r   c                 f   t         j                  j                  |      }t         j                  j                  |      }t        ||      D cg c]%  \  }}t        j                  ||j
                        ' }}}t         j                  j                  ||      5 }|r	 | | \  }	}
n | | }	t         j                  j                  |	      }|D cg c]  }|j                  |       }}d d d        t         j                  j                  	      }|r|	|
fS |	|fS c c}}w c c}w # 1 sw Y   ?xY wr&   )
r
   nestflattenzipr   r   autodiffForwardAccumulatorjvppack_sequence_as)funprimalstangentshas_auxprimal_flattangent_flattr4   accprimals_outauxprimals_out_flatpotangents_out_flattangents_outs                  r   r   r     s   ''//'*K77??8,L ),L+(F $1177L  
	'	'\	B Ec"G}Kw-K77??;73CDRSWWR[DDE 77++K9JKLL#--$$# EE Es$   *D4D'D"'D'"D''D0)F)NNF)rh   )TTr&   )
tensorflowr
   keras.src.backendr   r   keras.src.backend.commonr   !keras.src.backend.tensorflow.corer   r   r   r$   r'   r+   r-   r/   r5   rf   rl   rq   rt   r^   r   r   r   r   r9   r   r   <module>r      sk     $ / + 2 ?-
vHr	/!9&%P-
*
%r   