
    sg                       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e      Zd	 Zd
 Zd Zeed!d              Zeeddd"d              Zeed#d              Zeed$d#d              Zeed!d              Zeed%d!d              Zeed$d#d              Zeed&d!d              Zeed!d              Zeed!d              Zeed$d'd              Zeed(d!d              Zeed)d*d              Zeed!d              Z eed+d!d              Z!eed,d!d              Z"eed!d              Z#eed-d!d              Z$eed!d              Z%eed-d!d               Z&y).    )annotationsN)Sequence   )_dtypes_impl_util)	ArrayLikeKeepDims
normalizerc                      e Zd Zy)LinAlgErrorN)__name__
__module____qualname__     F/var/www/html/venv/lib/python3.12/site-packages/torch/_numpy/linalg.pyr   r      s    r   r   c                    | j                   j                  sC| j                   j                  s-| j                  t	        j
                         j                        } | S N)dtypeis_floating_point
is_complextor   default_dtypesfloat_dtypeas    r   _atleast_float_1r      s=    GG%%););DD,,.::;Hr   c                    t        j                  | |      }|j                  s*|j                  st        j                         j
                  }t        j                  | |      } t        j                  ||      }| |fS r   )r   result_type_implr   r   r   r   r   cast_if_needed)r   bdtyps      r   _atleast_float_2r#      sd    ((A.D""doo**,88Q%AQ%Aa4Kr   c                B     t        j                          fd       }|S )Nc                     	  | i |S # t         j                  j                  $ r}t        |j                   d }~ww xY wr   )torch_C_LinAlgErrorr   args)r)   kwdsefuncs      r   wrappedzlinalg_errors.<locals>.wrapped$   sA    	'&&&xx$$ 	'qvv&&	's    ?:?)	functoolswraps)r,   r-   s   ` r   linalg_errorsr0   #   s%    __T' ' Nr   c                X    t        |       } t        j                  j                  | |      S r   )r   r&   linalgmatrix_power)r   ns     r   r3   r3   1   s%     	A<<$$Q**r   )outc               @    t         j                  j                  |       S r   )r&   r2   	multi_dot)inputsr5   s     r   r7   r7   8   s     <<!!&))r   c                `    t        | |      \  } }t        j                  j                  | |      S r   )r#   r&   r2   solve)r   r!   s     r   r:   r:   A   s+     Aq!DAq<<a##r   c                    t        | |      \  } }| j                  s|j                  rdnd}t        j                  j	                  | |||      S )Ngelsgelsd)rconddriver)r#   is_cudar&   r2   lstsq)r   r!   r>   r?   s       r   rA   rA   H   sG     Aq!DAq yyAIIV7F<<a%??r   c                Z    t        |       } t        j                  j                  |       }|S r   )r   r&   r2   invr   results     r   rC   rC   R   s'     	A\\a FMr   c                \    t        |       } t        j                  j                  | ||      S )N)rtol	hermitian)r   r&   r2   pinv)r   r>   rH   s      r   rI   rI   Z   s*     	A<<QUi@@r   c                d    t        | |      \  } }t        j                  j                  | ||      S )N)dims)r#   r&   r2   tensorsolve)r   r!   axess      r   rL   rL   a   s0     Aq!DAq<<##Aqt#44r   c                Z    t        |       } t        j                  j                  | |      S )N)ind)r   r&   r2   	tensorinv)r   rO   s     r   rP   rP   h   s(     	A<<!!!!--r   c                V    t        |       } t        j                  j                  |       S r   )r   r&   r2   detr   s    r   rR   rR   r   s#     	A<<Ar   c                V    t        |       } t        j                  j                  |       S r   )r   r&   r2   slogdetr   s    r   rT   rT   y   s#     	A<<""r   c                F   t        |       } | j                         dk(  r0t        j                  | j                  dd        dk(  rt        d      t        j                  j                  | |      }t        j                  t        j                  |      t        d      |      S )Nr   z#cond is not defined on empty arrays)pinf)r   numelmathprodshaper   r&   r2   condwhereisnanfloat)xrW   rE   s      r   r]   r]      s~     	A 	wwyA~$))AGGBCL1Q6?@@\\qA&F
 ;;u{{6*E%L&AAr   c                J   t        |       } | j                  dk  rt        | dk7  j                               S |Ed}t	        | j
                  dd        t        j                  | j                        j                  z  }n|d}}t        j                  j                  | |||      S )N   r   rV   )atolrG   rH   )r   ndimintanymaxr\   r&   finfor   epsr2   matrix_rank)r   tolrH   rd   rG   s        r   rk   rk      s     	AvvzAF<<>""
{17723< 5;;qww#7#;#;;!d<<##ADty#QQr   c                \    t        |       } t        j                  j                  | ||      S )N)orddim)r   r&   r2   norm)ra   rn   axiskeepdimss       r   rp   rp      s*     	A<<QCT22r   c                V    t        |       } t        j                  j                  |       S r   )r   r&   r2   choleskyr   s    r   rt   rt      s#     	A<<  ##r   c                    t        |       } t        j                  j                  | |      }|dk(  r|j                  }|S )N)moder)r   r&   r2   qrR)r   rv   rE   s      r   rx   rx      s9     	A\\__QT_*Fs{Mr   c                    t        |       } |st        j                  j                  |       S t        j                  j	                  | |      }|S )N)full_matrices)r   r&   r2   svdvalssvd)r   r{   
compute_uvrH   rE   s        r   r}   r}      sF     	A||##A&& \\a}=FMr   c                   t        |       } t        j                  j                  |       \  }}| j	                         sE|j	                         r5|j
                  dk(  j                         r|j                  }|j                  }||fS Nr   )r   r&   r2   eigr   imagallreal)r   wvts      r   r   r      se     	ALLQEAr<<>alln!&&A+1B1B1DFFWWb5Lr   c                Z    t        |       } t        j                  j                  | |      S N)UPLO)r   r&   r2   eighr   r   s     r   r   r      s(     	A<<QT**r   c                    t        |       } t        j                  j                  |       }| j	                         s9|j	                         r)|j
                  dk(  j                         r|j                  }|S r   )r   r&   r2   eigvalsr   r   r   r   rD   s     r   r   r      sX     	A\\!!!$F<<>f//1v{{a7G6L6L6NMr   c                Z    t        |       } t        j                  j                  | |      S r   )r   r&   r2   eigvalshr   s     r   r   r      s(     	A<<   ..r   )r   r   )r8   zSequence[ArrayLike])r   r   r!   r   r   )gV瞯<F)rc   )ra   r   )NF)NNF)ra   r   rr   r	   )reduced)TTF)L)'
__future__r   r.   rZ   typingr   r&    r   r   _normalizationsr   r	   r
   	Exceptionr   r   r#   r0   r3   r7   r:   rA   rC   rI   rL   rP   rR   rT   r]   rk   rp   rt   rx   r}   r   r   r   r   r   r   r   <module>r      su   #     ! < <	) 	 +  +
 26 *  * $  $
 @  @    A  A
 5  5
 .  .   
 #  #
 B  B  R  R 3  3 $  $
          +  +
    /  /r   