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   O/var/www/html/assistant/venv/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   epsr'   matrix_rank)r   Ztolr7   rK   r6   r   r   r   rQ      s    
"
rQ   r   )r@   keepdimsc                 C  s   t | } tjj| ||dS )N)orddim)r   r   r'   norm)r@   rS   ZaxisrR   r   r   r   rU      s    rU   c                 C  s   t | } tj| S r   )r   r   r'   choleskyr   r   r   r   rV      s    rV   reducedc                 C  s*   t | } tjj| |d}|dkr&|j}|S )N)moder)r   r   r'   qrR)r   rX   r4   r   r   r   rZ      s
    rZ   Tc                 C  s,   t | } |stj| S tjj| |d}|S )N)full_matrices)r   r   r'   Zsvdvalssvd)r   r\   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   wvtr   r   r   r_      s    r_   Lc                 C  s   t | } tjj| |dS N)UPLO)r   r   r'   eighr   rg   r   r   r   rh      s    rh   c                 C  s<   t | } tj| }|  s8| r8|jdk r8|j}|S r^   )r   r   r'   eigvalsr   r`   ra   rb   r3   r   r   r   rj      s
    rj   c                 C  s   t | } tjj| |dS rf   )r   r   r'   eigvalshri   r   r   r   rk      s    rk   )N)r5   F)N)r;   )N)NF)NNF)rW   )TTF)re   )re   ))
__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   rQ   rU   rV   rZ   r]   r_   rh   rj   rk   r   r   r   r   <module>   s   
	
