a
    h                     @  sl  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rdd dlmZ G dd	 d	eZd
d Zdd Zdd ZeeddddZeeddddddZeedddddZeedGdddddZeeddddZeedHddd"d#ZeedIdddd$d%ZeedJddd'd(Zeeddd)d*Zeeddd+d,ZeedKdd-d.d/ZeedLddd0d1Z eedMdd2d3d4d5Z!eeddd6d7Z"eedNddd9d:Z#eedOddd<d=Z$eeddd>d?Z%eedPdddAdBZ&eedddCdDZ'eedQdddEdFZ(dS )R    )annotationsN)TYPE_CHECKING   )_dtypes_impl_util)	ArrayLikeKeepDims
normalizer)Sequencec                   @  s   e Zd ZdS )LinAlgErrorN)__name__
__module____qualname__ r   r   A/var/www/auris/lib/python3.9/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               
     sH   z | i |W S  t jjyB } zt|j W Y d }~n
d }~0 0 d S 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(   )outzSequence[ArrayLike])inputsc                C  s   t j| S r   )r   r'   	multi_dot)r+   r*   r   r   r   r,   <   s    r,   r   r   c                 C  s   t | |\} }tj| |S r   )r   r   r'   solver-   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  s   t | } tjj| ||dS )N)rtol	hermitian)r   r   r'   pinv)r   r/   r7   r   r   r   r8   ^   s    r8   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  s   t | } tjj| |dS )N)ind)r   r   r'   	tensorinv)r   r<   r   r   r   r=   l   s    r=   c                 C  s   t | } tj| S r   )r   r   r'   detr   r   r   r   r>   v   s    r>   c                 C  s   t | } tj| S r   )r   r   r'   slogdetr   r   r   r   r?   }   s    r?   )xc                 C  s\   t | } |  dkr4t| jdd  dkr4t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)r@   rB   r4   r   r   r   rG      s
    $rG   c                 C  sn   t | } | jdk r"t| dk S |d u rPd}t| jdd  t| jj	 }n
|d }}tj
j| |||dS )Nr;   r   rA   )atolr6   r7   )r   ndimintanymaxrF   r   Zfinfor   Zepsr'   matrix_rank)r   Ztolr7   rK   r6   r   r   r   rP      s    
"
rP   r   )r@   keepdimsc                 C  s   t | } tjj| ||dS )N)ordZdim)r   r   r'   norm)r@   rR   ZaxisrQ   r   r   r   rS      s    rS   c                 C  s   t | } tj| S r   )r   r   r'   choleskyr   r   r   r   rT      s    rT   reducedc                 C  s*   t | } tjj| |d}|dkr&|j}|S )N)moder)r   r   r'   qrR)r   rV   r4   r   r   r   rX      s
    rX   Tc                 C  s,   t | } |stj| S tjj| |d}|S )N)full_matrices)r   r   r'   Zsvdvalssvd)r   rZ   Z
compute_uvr7   r4   r   r   r   r[      s
    r[   c                 C  sJ   t | } tj| \}}|  sB| rB|jdk rB|j}|j}||fS Nr   )r   r   r'   eigr   imagallreal)r   wZvtr   r   r   r]      s    r]   Lc                 C  s   t | } tjj| |dS N)UPLO)r   r   r'   eighr   rd   r   r   r   re      s    re   c                 C  s<   t | } tj| }|  s8| r8|jdk r8|j}|S r\   )r   r   r'   eigvalsr   r^   r_   r`   r3   r   r   r   rg      s
    rg   c                 C  s   t | } tjj| |dS rc   )r   r   r'   eigvalshrf   r   r   r   rh      s    rh   )N)r5   F)N)r;   )N)NF)NNF)rU   )TTF)rb   )rb   ))
__future__r   r$   rD   typingr   r    r   r   Z_normalizationsr   r   r	   collections.abcr
   	Exceptionr   r   r   r&   r(   r,   r.   r1   r2   r8   r:   r=   r>   r?   rG   rP   rS   rT   rX   r[   r]   re   rg   rh   r   r   r   r   <module>   s   
	
