o
    ‡ZŽh  ã                   @  s  d dl mZ d dlZd dlZd dlmZ d dlZddlmZm	Z	 ddl
mZmZmZ er2d dlmZ G dd	„ d	eƒZd
d„ Zdd„ Zdd„ ZeedGdd„ƒƒZeeddœdHdd„ƒƒZeedIdd„ƒƒZeedJdIdd„ƒƒZeedGdd„ƒƒZeedKdGd"d#„ƒƒZeedJdId$d%„ƒƒZeedLdGd'd(„ƒƒZeedGd)d*„ƒƒZeedGd+d,„ƒƒZeedJdMd.d/„ƒƒZeedNdGd0d1„ƒƒZ eedOdPd4d5„ƒƒZ!eedGd6d7„ƒƒZ"eedQdGd9d:„ƒƒZ#eedRdGd<d=„ƒƒZ$eedGd>d?„ƒƒZ%eedSdGdAdB„ƒƒZ&eedGdCdD„ƒƒZ'eedSdGdEdF„ƒƒZ(dS )Té    )ÚannotationsN)ÚTYPE_CHECKINGé   )Ú_dtypes_implÚ_util)Ú	ArrayLikeÚKeepDimsÚ
normalizer)ÚSequencec                   @  s   e Zd ZdS )ÚLinAlgErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   úB/var/www/auris/lib/python3.10/site-packages/torch/_numpy/linalg.pyr      s    r   c                 C  s$   | j js| j js|  t ¡ j¡} | S ©N)ÚdtypeÚis_floating_pointÚ
is_complexÚtor   Údefault_dtypesÚfloat_dtype©Úar   r   r   Ú_atleast_float_1   s   r   c                 C  sB   t  | |¡}|js|jst  ¡ j}t | |¡} t ||¡}| |fS r   )r   Zresult_type_implr   r   r   r   r   Zcast_if_needed)r   ÚbZdtypr   r   r   Ú_atleast_float_2   s   
r   c                   s   t  ˆ ¡‡ fdd„ƒ}|S )Nc               
     s8   zˆ | i |¤ŽW S  t jjy } zt|jŽ ‚d }~ww r   )ÚtorchZ_CZ_LinAlgErrorr   Úargs)r   ÚkwdsÚe©Úfuncr   r   Úwrapped(   s   
€ÿzlinalg_errors.<locals>.wrapped)Ú	functoolsÚwraps)r"   r#   r   r!   r   Úlinalg_errors'   s   r&   r   r   c                 C  s   t | ƒ} tj | |¡S r   )r   r   ÚlinalgÚmatrix_power)r   Únr   r   r   r(   5   s   r(   )ÚoutÚinputsúSequence[ArrayLike]c                C  s   t j | ¡S r   )r   r'   Ú	multi_dot)r+   r*   r   r   r   r-   <   s   r-   r   c                 C  s   t | |ƒ\} }tj | |¡S r   )r   r   r'   Úsolve)r   r   r   r   r   r.   E   s   r.   c                 C  s6   t | |ƒ\} }| js|jrdnd}tjj| |||dS )NZgelsZgelsd)ÚrcondÚdriver)r   Zis_cudar   r'   Úlstsq)r   r   r/   r0   r   r   r   r1   L   s   r1   c                 C  s   t | ƒ} tj | ¡}|S r   )r   r   r'   Úinv©r   Úresultr   r   r   r2   V   s   r2   çVçž¯Ò<Fc                 C  ó   t | ƒ} tjj| ||dS )N)ÚrtolÚ	hermitian)r   r   r'   Úpinv)r   r/   r8   r   r   r   r9   ^   ó   r9   c                 C  s    t | |ƒ\} }tjj| ||dS )N)Údims)r   r   r'   Útensorsolve)r   r   Zaxesr   r   r   r<   e   s   r<   é   c                 C  ó   t | ƒ} tjj| |dS )N)Úind)r   r   r'   Ú	tensorinv)r   r?   r   r   r   r@   l   ó   r@   c                 C  ó   t | ƒ} tj | ¡S r   )r   r   r'   Údetr   r   r   r   rC   v   ó   rC   c                 C  rB   r   )r   r   r'   Úslogdetr   r   r   r   rE   }   rD   rE   Úxc                 C  s\   t | ƒ} |  ¡ dkrt | jdd … ¡dkrtdƒ‚tjj| |d}t 	t 
|¡tdƒ|¡S )Nr   éþÿÿÿz#cond is not defined on empty arrays)ÚpÚinf)r   ZnumelÚmathÚprodÚshaper   r   r'   ÚcondÚwhereÚisnanÚfloat)rF   rH   r4   r   r   r   rM   „   s
   $rM   c                 C  sn   t | ƒ} | jdk rt| dk ¡ ƒS |d u r(d}t| jdd … ƒt | j¡j	 }n|d}}tj
j| |||dS )Nr=   r   rG   )Úatolr7   r8   )r   ÚndimÚintÚanyÚmaxrL   r   Zfinfor   Zepsr'   Úmatrix_rank)r   Ztolr8   rQ   r7   r   r   r   rV   –   s   
"
rV   Úkeepdimsr   c                 C  r6   )N)ÚordÚdim)r   r   r'   Únorm)rF   rX   ZaxisrW   r   r   r   rZ   §   r:   rZ   c                 C  rB   r   )r   r   r'   Úcholeskyr   r   r   r   r[   ±   rD   r[   Úreducedc                 C  s*   t | ƒ} tjj| |d}|dkr|j}|S )N)ÚmodeÚr)r   r   r'   ÚqrÚR)r   r]   r4   r   r   r   r_   ¸   s
   r_   Tc                 C  s,   t | ƒ} |stj | ¡S tjj| |d}|S )N)Úfull_matrices)r   r   r'   ZsvdvalsÚsvd)r   ra   Z
compute_uvr8   r4   r   r   r   rb   Ã   s
   rb   c                 C  sJ   t | ƒ} tj | ¡\}}|  ¡ s!| ¡ r!|jdk ¡ r!|j}|j}||fS ©Nr   )r   r   r'   Úeigr   ÚimagÚallÚreal)r   ÚwÚvtr   r   r   rd   Ò   s   rd   ÚLc                 C  r>   ©N)ÚUPLO)r   r   r'   Úeigh©r   rl   r   r   r   rm   Þ   rA   rm   c                 C  s<   t | ƒ} tj | ¡}|  ¡ s| ¡ r|jdk ¡ r|j}|S rc   )r   r   r'   Úeigvalsr   re   rf   rg   r3   r   r   r   ro   å   s
   ro   c                 C  r>   rk   )r   r   r'   Úeigvalshrn   r   r   r   rp   ï   rA   rp   )r   r   )r+   r,   )r   r   r   r   r   )r5   F)r=   )rF   r   )NF)NNF)rF   r   rW   r   )r\   )TTF)rj   ))Ú
__future__r   r$   rJ   Útypingr   r   Ú r   r   Z_normalizationsr   r   r	   Úcollections.abcr
   Ú	Exceptionr   r   r   r&   r(   r-   r.   r1   r2   r9   r<   r@   rC   rE   rM   rV   rZ   r[   r_   rb   rd   rm   ro   rp   r   r   r   r   Ú<module>   s’   
	
