U
    9%e                     @  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ddddZeeddddddZeedddddZeedFdddddZeeddddZeedGddd!d"ZeedHdddd#d$ZeedIddd&d'Zeeddd(d)Zeeddd*d+ZeedJdd,d-d.ZeedKddd/d0ZeedLdd1d2d3d4Zeeddd5d6Z eedMddd8d9Z!eedNddd;d<Z"eeddd=d>Z#eedOddd@dAZ$eedddBdCZ%eedPdddDdEZ&dS )Q    )annotationsN)Sequence   )_dtypes_impl_util)	ArrayLikeKeepDims
normalizerc                   @  s   e Zd ZdS )LinAlgErrorN)__name__
__module____qualname__ r   r   R/var/www/html/Darija-Ai-API/env/lib/python3.8/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               
     sB   z | |W S  t jjk
r< } zt|j W 5 d }~X Y nX 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'   /   s    r'   )outzSequence[ArrayLike])inputsc                C  s   t j| S r   )r   r&   	multi_dot)r*   r)   r   r   r   r+   6   s    r+   r   r   c                 C  s   t | |\} }tj| |S r   )r   r   r&   solver,   r   r   r   r-   ?   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.   r/   r   r   r   r0   F   s    r0   c                 C  s   t | } tj| }|S r   )r   r   r&   invr   resultr   r   r   r1   P   s    r1   V瞯<Fc                 C  s   t | } tjj| ||dS )N)rtol	hermitian)r   r   r&   pinv)r   r.   r6   r   r   r   r7   X   s    r7   c                 C  s    t | |\} }tjj| ||dS )N)Zdims)r   r   r&   tensorsolve)r   r   Zaxesr   r   r   r8   _   s    r8      c                 C  s   t | } tjj| |dS )N)ind)r   r   r&   	tensorinv)r   r:   r   r   r   r;   f   s    r;   c                 C  s   t | } tj| S r   )r   r   r&   detr   r   r   r   r<   p   s    r<   c                 C  s   t | } tj| S r   )r   r   r&   slogdetr   r   r   r   r=   w   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>   r@   r3   r   r   r   rE   ~   s
    $rE   c                 C  sn   t | } | jdk r"t| dk S |d krPd}t| jdd  t| jj	 }n
|d }}tj
j| |||dS )Nr9   r   r?   )atolr5   r6   )r   ndimintanymaxrD   r   Zfinfor   Zepsr&   matrix_rank)r   Ztolr6   rI   r5   r   r   r   rN      s    
"
rN   r   )r>   keepdimsc                 C  s   t | } tjj| ||dS )N)orddim)r   r   r&   norm)r>   rP   ZaxisrO   r   r   r   rR      s    rR   c                 C  s   t | } tj| S r   )r   r   r&   choleskyr   r   r   r   rS      s    rS   reducedc                 C  s*   t | } tjj| |d}|dkr&|j}|S )N)moder)r   r   r&   qrR)r   rU   r3   r   r   r   rW      s
    rW   Tc                 C  s,   t | } |stj| S tjj| |d}|S )N)full_matrices)r   r   r&   Zsvdvalssvd)r   rY   Z
compute_uvr6   r3   r   r   r   rZ      s
    rZ   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   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_   r2   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)r4   F)N)r9   )N)NF)NNF)rT   )TTF)rb   )rb   )'
__future__r   r#   rB   typingr   r    r   r   Z_normalizationsr   r   r	   	Exceptionr
   r   r   r%   r'   r+   r-   r0   r1   r7   r8   r;   r<   r=   rE   rN   rR   rS   rW   rZ   r\   re   rg   rh   r   r   r   r   <module>   s   
	
