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 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   g/var/www/html/construction_image-detection-poc/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-   5   s   r-   )outinputsSequence[ArrayLike]c                C  s   t j| S r   )r    r,   	multi_dot)r0   r/   r   r   r   r2   <   s   r2   r   c                 C  s   t | |\} }tj| |S r   )r   r    r,   solve)r   r   r   r   r   r3   E   s   r3   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   r6   r7   r   r   r   r9   L   s   r9   c                 C  s   t | } tj| }|S r   )r   r    r,   invr   resultr   r   r   r:   V   s   r:   V瞯<Fc                 C     t | } tjj| ||dS )N)rtol	hermitian)r   r    r,   pinv)r   r6   r@   r   r   r   rA   ^      rA   c                 C  s    t | |\} }tjj| ||dS )N)dims)r   r    r,   tensorsolve)r   r   axesr   r   r   rD   e   s   rD      c                 C     t | } tjj| |dS )N)ind)r   r    r,   	tensorinv)r   rH   r   r   r   rI   l      rI   c                 C     t | } tj| S r   )r   r    r,   detr   r   r   r   rL   v      rL   c                 C  rK   r   )r   r    r,   slogdetr   r   r   r   rN   }   rM   rN   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)rO   rQ   r<   r   r   r   rW      s
   $rW   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 )NrF   r   rP   )atolr?   r@   )r   ndimintanymaxrV   r    finfor   epsr,   matrix_rank)r   tolr@   r[   r?   r   r   r   rb      s   
"
rb   keepdimsr   c                 C  r>   )N)orddim)r   r    r,   norm)rO   re   axisrd   r   r   r   rg      rB   rg   c                 C  rK   r   )r   r    r,   choleskyr   r   r   r   ri      rM   ri   reducedc                 C  s*   t | } tjj| |d}|dkr|j}|S )N)moder)r   r    r,   qrR)r   rk   r<   r   r   r   rm      s
   rm   Tc                 C  s,   t | } |stj| S tjj| |d}|S )N)full_matrices)r   r    r,   svdvalssvd)r   ro   
compute_uvr@   r<   r   r   r   rq      s
   rq   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   rt      s   rt   Lc                 C  rG   N)UPLO)r   r    r,   eighr   r|   r   r   r   r}      rJ   r}   c                 C  s<   t | } tj| }|  s| r|jdk r|j}|S rs   )r   r    r,   eigvalsr   ru   rv   rw   r;   r   r   r   r      s
   r   c                 C  rG   r{   )r   r    r,   eigvalshr~   r   r   r   r      rJ   r   )r   r   )r0   r1   )r   r   r   r   r   )r=   F)rF   )rO   r   )NF)NNF)rO   r   rd   r   )rj   )TTF)rz   ))
__future__r   r)   rT   typingr   r     r   r   _normalizationsr   r   r	   collections.abcr
   	Exceptionr   r   r   r+   r-   r2   r3   r9   r:   rA   rD   rI   rL   rN   rW   rb   rg   ri   rm   rq   rt   r}   r   r   r   r   r   r   <module>   s   
	
