
    Vh                       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rd dl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)TYPE_CHECKING   )_dtypes_impl_util)	ArrayLikeKeepDims
normalizer)Sequencec                      e Zd Zy)LinAlgErrorN)__name__
__module____qualname__     C/home/dcms/DCMS/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_errorsr1   '   s%    __T' ' Nr   c                X    t        |       } t        j                  j                  | |      S r   )r   r'   linalgmatrix_power)r   ns     r   r4   r4   5   s%     	A<<$$Q**r   )outc               @    t         j                  j                  |       S r   )r'   r3   	multi_dot)inputsr6   s     r   r8   r8   <   s     <<!!&))r   c                `    t        | |      \  } }t        j                  j                  | |      S r   )r$   r'   r3   solve)r   r"   s     r   r;   r;   E   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'   r3   lstsq)r   r"   r?   r@   s       r   rB   rB   L   sG     Aq!DAq yyAIIV7F<<a%??r   c                Z    t        |       } t        j                  j                  |       }|S r   )r   r'   r3   invr   results     r   rD   rD   V   s'     	A\\a FMr   c                \    t        |       } t        j                  j                  | ||      S )N)rtol	hermitian)r   r'   r3   pinv)r   r?   rI   s      r   rJ   rJ   ^   s*     	A<<QUi@@r   c                d    t        | |      \  } }t        j                  j                  | ||      S )N)dims)r$   r'   r3   tensorsolve)r   r"   axess      r   rM   rM   e   s0     Aq!DAq<<##Aqt#44r   c                Z    t        |       } t        j                  j                  | |      S )N)ind)r   r'   r3   	tensorinv)r   rP   s     r   rQ   rQ   l   s(     	A<<!!!!--r   c                V    t        |       } t        j                  j                  |       S r   )r   r'   r3   detr   s    r   rS   rS   v   s#     	A<<Ar   c                V    t        |       } t        j                  j                  |       S r   )r   r'   r3   slogdetr   s    r   rU   rU   }   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'   r3   condwhereisnanfloat)xrX   rF   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   rW   )atolrH   rI   )r   ndimintanymaxr]   r'   finfor   epsr3   matrix_rank)r   tolrI   re   rH   s        r   rl   rl      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'   r3   norm)rb   ro   axiskeepdimss       r   rq   rq      s*     	A<<QCT22r   c                V    t        |       } t        j                  j                  |       S r   )r   r'   r3   choleskyr   s    r   ru   ru      s#     	A<<  ##r   c                    t        |       } t        j                  j                  | |      }|dk(  r|j                  }|S )N)moder)r   r'   r3   qrR)r   rw   rF   s      r   ry   ry      s9     	A\\__QT_*Fs{Mr   c                    t        |       } |st        j                  j                  |       S t        j                  j	                  | |      }|S )N)full_matrices)r   r'   r3   svdvalssvd)r   r|   
compute_uvrI   rF   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'   r3   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'   r3   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'   r3   eigvalsr   r   r   r   rE   s     r   r   r      sX     	A\\!!!$F<<>f//1v{{a7G6L6L6NMr   c                Z    t        |       } t        j                  j                  | |      S r   )r   r'   r3   eigvalshr   s     r   r   r      s(     	A<<   ..r   )r   r   )r9   zSequence[ArrayLike])r   r   r"   r   r   )gV瞯<F)rd   )rb   r   )NF)NNF)rb   r   rs   r	   )reduced)TTF)L))
__future__r   r/   r[   typingr   r'    r   r   _normalizationsr   r	   r
   collections.abcr   	Exceptionr   r   r$   r1   r4   r8   r;   rB   rD   rJ   rM   rQ   rS   rU   r^   rl   rq   ru   ry   r~   r   r   r   r   r   r   r   <module>r      s}   #      ! < < (	) 	 +  +
 26 *  * $  $
 @  @    A  A
 5  5
 .  .   
 #  #
 B  B  R  R 3  3 $  $
          +  +
    /  /r   