o
    b¦µi<  ã                   @   sÈ   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d	„Z	d&d
d„Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd'dd„Zd(dd„Zdd„ Zd&dd„Zd)d d!„Zd*d"d#„Zd&d$d%„ZdS )+é    N)Úconfig)Ústandardize_dtype)Údtypes)Úcast)Úconvert_to_tensorFc                 C   s   t jj| |dS ©N©Úupper)ÚtorchÚlinalgÚcholesky©Úxr	   © r   úR/home/ubuntu/.local/lib/python3.10/site-packages/keras/src/backend/torch/linalg.pyr   
   s   r   c                 C   s   t j| |dS r   )r
   Úcholesky_inverser   r   r   r   r      ó   r   c                 C   s
   t  | ¡S ©N)r
   Údet©r   r   r   r   r      s   
r   c                 C   ó   t j | ¡S r   )r
   r   Úeigr   r   r   r   r      ó   r   c                 C   r   r   )r
   r   Úeighr   r   r   r   r      r   r   c                 C   r   r   )r
   r   Úinvr   r   r   r   r      r   r   c                 C   s   t j | ¡\}}||d fS )Né   )r
   r   Ú	lu_factor)r   ÚLUÚpivotsr   r   r   r   "   s   r   c                 C   sL   t | ƒ} t| jƒdkrt ¡ }nt | jt¡}t| |ƒ} t	j
j| |||dS )NÚint64)ÚordÚdimÚkeepdim)r   r   Údtyper   Úfloatxr   Úresult_typeÚfloatr   r
   r   Únorm)r   r    ÚaxisÚkeepdimsr#   r   r   r   r'   (   s   

r'   Úreducedc                 C   s&   |dvrt d|› ƒ‚tjj| |dS )N>   r*   Úcompletez]`mode` argument value not supported. Expected one of {'reduced', 'complete'}. Received: mode=)Úmode)Ú
ValueErrorr
   r   Úqr)r   r,   r   r   r   r.   2   s   þÿr.   c                 C   s   t j | |¡S r   )r
   r   Úsolve)ÚaÚbr   r   r   r/   <   r   r/   c                 C   sN   |j | j d krtj|dd}tjj| || djddS tjj| || dS )Nr   éÿÿÿÿ)r(   r   )Úndimr
   Ú	unsqueezer   Úsolve_triangularÚsqueeze)r0   r1   Úlowerr   r   r   r5   @   s   ÿr5   Tc                 C   s    |st j | ¡S t jj| |dS )N)Úfull_matrices)r
   r   ÚsvdvalsÚsvd)r   r8   Ú
compute_uvr   r   r   r:   I   s   r:   c                 C   s&   t | ƒ} t |ƒ}tjj| ||dd S )N)Úrcondr   )r   r
   r   Úlstsq)r0   r1   r<   r   r   r   r=   O   s   r=   c                 C   s   t jj| |||dS )N)Úhas_aux)r
   ÚfuncÚjvp)ÚfunÚprimalsÚtangentsr>   r   r   r   r@   U   s   r@   )F)NNF)r*   )TTr   )r
   Úkeras.src.backendr   r   Úkeras.src.backend.commonr   Úkeras.src.backend.torch.corer   r   r   r   r   r   r   r   r   r'   r.   r/   r5   r:   r=   r@   r   r   r   r   Ú<module>   s(    







	
