o
    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 G dd deZd	d
 Zdd Zdd ZeedFddZeedddGddZeedHddZeedIdHddZeedFddZeedJdFd!d"ZeedIdHd#d$ZeedKdFd&d'ZeedFd(d)ZeedFd*d+ZeedIdLd-d.ZeedMdFd/d0ZeedNdOd3d4ZeedFd5d6Z eedPdFd8d9Z!eedQdFd;d<Z"eedFd=d>Z#eedRdFd@dAZ$eedFdBdCZ%eedRdFdDdEZ&dS )S    )annotationsN)Sequence   )_dtypes_impl_util)	ArrayLikeKeepDims
normalizerc                   @  s   e Zd ZdS )LinAlgErrorN)__name__
__module____qualname__ r   r   I/var/www/html/ai/venv/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   result_type_implr   r   r   r   r   cast_if_needed)r   b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   )torch_C_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,   /   s   r,   )outinputsSequence[ArrayLike]c                C  s   t j| S r   )r   r+   	multi_dot)r/   r.   r   r   r   r1   6   s   r1   r   c                 C  s   t | |\} }tj| |S r   )r   r   r+   solve)r   r   r   r   r   r2   ?   s   r2   c                 C  s6   t | |\} }| js|jrdnd}tjj| |||dS )Ngelsgelsd)rconddriver)r   is_cudar   r+   lstsq)r   r   r5   r6   r   r   r   r8   F   s   r8   c                 C  s   t | } tj| }|S r   )r   r   r+   invr   resultr   r   r   r9   P   s   r9   V瞯<Fc                 C     t | } tjj| ||dS )N)rtol	hermitian)r   r   r+   pinv)r   r5   r?   r   r   r   r@   X      r@   c                 C  s    t | |\} }tjj| ||dS )N)dims)r   r   r+   tensorsolve)r   r   axesr   r   r   rC   _   s   rC      c                 C     t | } tjj| |dS )N)ind)r   r   r+   	tensorinv)r   rG   r   r   r   rH   f      rH   c                 C     t | } tj| S r   )r   r   r+   detr   r   r   r   rK   p      rK   c                 C  rJ   r   )r   r   r+   slogdetr   r   r   r   rM   w   rL   rM   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   numelmathprodshaper
   r   r+   condwhereisnanfloat)rN   rP   r;   r   r   r   rV   ~   s
   $rV   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 )NrE   r   rO   )atolr>   r?   )r   ndimintanymaxrU   r   finfor   epsr+   matrix_rank)r   tolr?   rZ   r>   r   r   r   ra      s   
"
ra   keepdimsr   c                 C  r=   )N)orddim)r   r   r+   norm)rN   rd   axisrc   r   r   r   rf      rA   rf   c                 C  rJ   r   )r   r   r+   choleskyr   r   r   r   rh      rL   rh   reducedc                 C  s*   t | } tjj| |d}|dkr|j}|S )N)moder)r   r   r+   qrR)r   rj   r;   r   r   r   rl      s
   rl   Tc                 C  s,   t | } |stj| S tjj| |d}|S )N)full_matrices)r   r   r+   svdvalssvd)r   rn   
compute_uvr?   r;   r   r   r   rp      s
   rp   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   rs      s   rs   Lc                 C  rF   N)UPLO)r   r   r+   eighr   r{   r   r   r   r|      rI   r|   c                 C  s<   t | } tj| }|  s| r|jdk r|j}|S rr   )r   r   r+   eigvalsr   rt   ru   rv   r:   r   r   r   r~      s
   r~   c                 C  rF   rz   )r   r   r+   eigvalshr}   r   r   r   r      rI   r   )r   r   )r/   r0   )r   r   r   r   r   )r<   F)rE   )rN   r   )NF)NNF)rN   r   rc   r   )ri   )TTF)ry   )'
__future__r   r(   rS   typingr   r    r   r   _normalizationsr   r   r	   	Exceptionr
   r   r   r*   r,   r1   r2   r8   r9   r@   rC   rH   rK   rM   rV   ra   rf   rh   rl   rp   rs   r|   r~   r   r   r   r   r   <module>   s    
	
