
    |Yh                       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d0d                        Zeeddd1d                        Zeed2d                        Zeed3d2d                        Zeed0d                        Zeed4d0d                        Zeed3d2d                        Zeed5d0d                        Zeed0d                        Zeed0d                        Zeed3d6d!                        Zeed7d0d"                        Z eed8d9d%                        Z!eed0d&                        Z"eed:d0d(                        Z#eed;d0d*                        Z$eed0d+                        Z%eed<d0d-                        Z&eed0d.                        Z'eed<d0d/                        Z(dS )=    )annotationsN)TYPE_CHECKING   )_dtypes_impl_util)	ArrayLikeKeepDims
normalizer)Sequencec                      e Zd ZdS )LinAlgErrorN)__name__
__module____qualname__     e/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/torch/_numpy/linalg.pyr   r      s        Dr   r   c                    | j         j        s7| j         j        s+|                     t	          j                    j                  } | S N)dtypeis_floating_point
is_complextor   default_dtypesfloat_dtypeas    r   _atleast_float_1r      s=    G% <); <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$      sf    (A..D" 9do 9*,,8Q%%AQ%%Aa4Kr   c                F     t          j                    fd            }|S )Nc                 j    	  | 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(   sN    	'4&&&&x$ 	' 	' 	'qv&&	's    2-2)	functoolswraps)r-   r.   s   ` r   linalg_errorsr1   '   s8    _T' ' ' ' ' Nr   r   r   c                `    t          |           } t          j                            | |          S r   )r   r'   linalgmatrix_power)r   ns     r   r4   r4   5   s)     	A<$$Q***r   )outinputsSequence[ArrayLike]c               @    t           j                            |           S r   )r'   r3   	multi_dot)r7   r6   s     r   r:   r:   <   s     <!!&)))r   r"   c                h    t          | |          \  } }t          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                            | |||          S )Ngelsgelsd)rconddriver)r$   is_cudar'   r3   lstsq)r   r"   r@   rA   s       r   rC   rC   L   sO     Aq!!DAq y:AI:VV7F<a%???r   c                b    t          |           } t          j                            |           }|S r   )r   r'   r3   invr   results     r   rE   rE   V   s+     	A\a  FMr   V瞯<Fc                d    t          |           } t          j                            | ||          S )N)rtol	hermitian)r   r'   r3   pinv)r   r@   rK   s      r   rL   rL   ^   s.     	A<QUi@@@r   c                l    t          | |          \  } }t          j                            | ||          S )N)dims)r$   r'   r3   tensorsolve)r   r"   axess      r   rO   rO   e   s4     Aq!!DAq<##Aqt#444r      c                b    t          |           } t          j                            | |          S )N)ind)r   r'   r3   	tensorinv)r   rS   s     r   rT   rT   l   s,     	A<!!!!---r   c                ^    t          |           } t          j                            |           S r   )r   r'   r3   detr   s    r   rV   rV   v   s'     	A<Ar   c                ^    t          |           } t          j                            |           S r   )r   r'   r3   slogdetr   s    r   rX   rX   }   s'     	A<"""r   xc                d   t          |           } |                                 dk    r4t          j        | j        dd                    dk    rt          d          t          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)rY   r\   rG   s      r   rb   rb      s     	A 	wwyyA~~$)AGBCCL11Q66?@@@\qA&&F
 ;u{6**E%LL&AAAr   c                N   t          |           } | j        dk     r%t          | dk                                              S |>d}t	          | j        dd                    t          j        | j                  j	        z  }n|d}}t          j
                            | |||          S )NrQ   r   r[   )atolrJ   rK   )r   ndimintanymaxra   r'   finfor   epsr3   matrix_rank)r   tolrK   rg   rJ   s        r   rn   rn      s     	AvzzAF<<>>"""
{17233<  5;qw#7#7#;;!d<##ADty#QQQr   keepdimsr	   c                d    t          |           } t          j                            | ||          S )N)orddim)r   r'   r3   norm)rY   rr   axisrp   s       r   rt   rt      s.     	A<QCT222r   c                ^    t          |           } t          j                            |           S r   )r   r'   r3   choleskyr   s    r   rw   rw      s'     	A<  ###r   reducedc                    t          |           } t          j                            | |          }|dk    r|j        }|S )N)moder)r   r'   r3   qrR)r   rz   rG   s      r   r|   r|      s=     	A\__QT_**Fs{{Mr   Tc                    t          |           } |st          j                            |           S t          j                            | |          }|S )N)full_matrices)r   r'   r3   svdvalssvd)r   r   
compute_uvrK   rG   s        r   r   r      sP     	A '|##A&&& \a}==FMr   c                   t          |           } t          j                            |           \  }}|                                 s?|                                r+|j        dk                                    r|j        }|j        }||fS Nr   )r   r'   r3   eigr   imagallreal)r   wvts      r   r   r      sy     	ALQEAr<<>> allnn !&A+1B1B1D1D FWb5Lr   Lc                b    t          |           } t          j                            | |          S N)UPLO)r   r'   r3   eighr   r   s     r   r   r      s,     	A<QT***r   c                    t          |           } t          j                            |           }|                                 s8|                                r$|j        dk                                    r|j        }|S r   )r   r'   r3   eigvalsr   r   r   r   rF   s     r   r   r      so     	A\!!!$$F<<>> f//11 v{a7G6L6L6N6N Mr   c                b    t          |           } t          j                            | |          S r   )r   r'   r3   eigvalshr   s     r   r   r      s,     	A<   ...r   )r   r   )r7   r8   )r   r   r"   r   r   )rH   F)rQ   )rY   r   )NF)NNF)rY   r   rp   r	   )rx   )TTF)r   ))
__future__r   r/   r_   typingr   r'    r   r   _normalizationsr   r	   r
   collections.abcr   	Exceptionr   r   r$   r1   r4   r:   r<   rC   rE   rL   rO   rT   rV   rX   rb   rn   rt   rw   r|   r   r   r   r   r   r   r   r   <module>r      s   # " " " " "                   ! ! ! ! ! ! ! ! < < < < < < < < < <  )((((((	 	 	 	 	) 	 	 	       + + +  +
 26 * * * * *  * $ $ $  $
 @ @ @ @  @      A A A A  A
 5 5 5 5  5
 . . . .  .     
 # # #  #
 B B B B  B  R R R R  R 3 3 3 3  3 $ $ $  $
                  + + + +  +
      / / / /  / / /r   