
    (phG                    j   S SK Jr  SSKJrJrJrJrJrJr  SSK	J
r
  SSKJr  SSKJr  SSKJr  S S	KJr  \(       a  SS
KJrJrJrJrJrJr  S SKJr  S SKrS SKr " S S\5      r " S S\5      r " S S\5      r  " S S\5      r!SS.S=S jjr"SS.S>S jjr#S?S jr$S S.S@S jjr%SAS jr&S?S jr'S?S  jr(SBS! jr)SS"S#.SCS$ jjr*SDS% jr+SS&.SES' jjr,S?S( jr-SBS) jr.SS&.SES* jjr/S+S,.SFS- jjr0SGS. jr1S/ r2SBS0 jr3S1S2.SHS3 jjr4SIS4 jr5SS5.SJS6 jjr6S SS7.SKS8 jjr7SS.S>S9 jjr8SSSS:.SLS; jjr9/ S<Qr:g)M    )annotations   )_floating_dtypes_numeric_dtypesfloat32float64	complex64
complex128)reshape)conj)Array   )normalize_axis_tuple)TYPE_CHECKING)LiteralOptionalSequenceTupleUnionDtype)
NamedTupleNc                  *    \ rS rSr% S\S'   S\S'   Srg)
EighResult   r   eigenvalueseigenvectors N__name__
__module____qualname____firstlineno____annotations____static_attributes__r       I/var/www/html/venv/lib/python3.13/site-packages/numpy/array_api/linalg.pyr   r      s    r%   r   c                  *    \ rS rSr% S\S'   S\S'   Srg)QRResult   r   QRr   Nr   r   r%   r&   r(   r(      s    HHr%   r(   c                  *    \ rS rSr% S\S'   S\S'   Srg)SlogdetResult"   r   sign	logabsdetr   Nr   r   r%   r&   r-   r-   "   s    
Kr%   r-   c                  4    \ rS rSr% S\S'   S\S'   S\S'   Srg)	SVDResult&   r   USVhr   Nr   r   r%   r&   r2   r2   &   s    HHIr%   r2   F)upperc              Z   U R                   [        ;  a  [        S5      e[        R                  R                  U R                  5      nU(       aG  [        R                  " U5      R                  nUR                   [        [        4;   a  [        U5      nU$ [        R                  " U5      $ )z
Array API compatible wrapper for :py:func:`np.linalg.cholesky <numpy.linalg.cholesky>`.

See its docstring for more information.
z2Only floating-point dtypes are allowed in cholesky)dtyper   	TypeErrornplinalgcholesky_arrayr   _newmTr	   r
   r   )xr7   Lr4   s       r&   r=   r=   -   sx     	ww&&LMM
		188$AJJqM77y*--QA::a=r%   axisc                 U R                   [        ;  d  UR                   [        ;  a  [        S5      eU R                  UR                  :w  a  [	        S5      eU R
                  S:X  a  [	        S5      eU R                  U   S:w  a  [	        S5      e[        R                  " [        R                  " U R                  UR                  US95      $ )zn
Array API compatible wrapper for :py:func:`np.cross <numpy.cross>`.

See its docstring for more information.
z(Only numeric dtypes are allowed in crossz"x1 and x2 must have the same shaper   z/cross() requires arrays of dimension at least 1   zcross() dimension must equal 3rD   )r9   r   r:   shape
ValueErrorndimr   r?   r;   crossr>   )x1x2rE   s      r&   rK   rK   @   s     
xx&"((/*IBCC	xx288=>>	ww!|JKK	xx~9::::bhhryy"))$?@@r%   c                   U R                   [        ;  a  [        S5      e[        R                  " [
        R                  R                  U R                  5      5      $ )zx
Array API compatible wrapper for :py:func:`np.linalg.det <numpy.linalg.det>`.

See its docstring for more information.
z-Only floating-point dtypes are allowed in det)	r9   r   r:   r   r?   r;   r<   detr>   rA   s    r&   rO   rO   R   s=     	ww&&GHH::biimmAHH-..r%   )offsetc         	     l    [         R                  " [        R                  " U R                  USSS95      $ )zt
Array API compatible wrapper for :py:func:`np.diagonal <numpy.diagonal>`.

See its docstring for more information.
rC   )rQ   axis1axis2)r   r?   r;   diagonalr>   )rA   rQ   s     r&   rV   rV   _   s&     ::bkk!((62NOOr%   c                   U R                   [        ;  a  [        S5      e[        [	        [
        R                  [        R                  R                  U R                  5      5      6 $ )zz
Array API compatible wrapper for :py:func:`np.linalg.eigh <numpy.linalg.eigh>`.

See its docstring for more information.
z.Only floating-point dtypes are allowed in eigh)r9   r   r:   r   mapr   r?   r;   r<   eighr>   rP   s    r&   rY   rY   j   sF     	ww&&HII s5::ryy~~ahh'?@AAr%   c                   U R                   [        ;  a  [        S5      e[        R                  " [
        R                  R                  U R                  5      5      $ )z
Array API compatible wrapper for :py:func:`np.linalg.eigvalsh <numpy.linalg.eigvalsh>`.

See its docstring for more information.
z2Only floating-point dtypes are allowed in eigvalsh)	r9   r   r:   r   r?   r;   r<   eigvalshr>   rP   s    r&   r[   r[   z   s?     	ww&&LMM::bii((233r%   c                   U R                   [        ;  a  [        S5      e[        R                  " [
        R                  R                  U R                  5      5      $ )zx
Array API compatible wrapper for :py:func:`np.linalg.inv <numpy.linalg.inv>`.

See its docstring for more information.
z-Only floating-point dtypes are allowed in inv)	r9   r   r:   r   r?   r;   r<   invr>   rP   s    r&   r]   r]      s=     	ww&&GHH::biimmAHH-..r%   c                   U R                   [        ;  d  UR                   [        ;  a  [        S5      e[        R                  " [
        R                  " U R                  UR                  5      5      $ )zp
Array API compatible wrapper for :py:func:`np.matmul <numpy.matmul>`.

See its docstring for more information.
z)Only numeric dtypes are allowed in matmul)r9   r   r:   r   r?   r;   matmulr>   rL   rM   s     r&   r_   r_      sI     
xx&"((/*ICDD::bii		299566r%   fro)keepdimsordc         	         U R                   [        ;  a  [        S5      e[        R                  " [
        R                  R                  U R                  SXS95      $ )z
Array API compatible wrapper for :py:func:`np.linalg.norm <numpy.linalg.norm>`.

See its docstring for more information.
z5Only floating-point dtypes are allowed in matrix_norm)rS   rC   rE   rb   rc   )	r9   r   r:   r   r?   r;   r<   normr>   )rA   rb   rc   s      r&   matrix_normrh      sC     	ww&&OPP::biinnQXXHxnYZZr%   c                   U R                   [        ;  a  [        S5      e[        R                  " [
        R                  R                  U R                  U5      5      $ )z|
Array API compatible wrapper for :py:func:`np.matrix_power <numpy.matrix_power>`.

See its docstring for more information.
zMOnly floating-point dtypes are allowed for the first argument of matrix_power)	r9   r   r:   r   r?   r;   r<   matrix_powerr>   )rA   ns     r&   rj   rj      sC     	ww&&ghh ::bii,,QXXq9::r%   )rtolc              l   U R                   S:  a  [        R                  R                  S5      e[        R                  R	                  U R
                  SS9nUcU  UR                  SSS9[        U R                  S	S 5      -  [        R                  " UR                  5      R                  -  nO[[        U[        5      (       a  UR
                  nUR                  SSS9[        R                  " U5      S
[        R                  4   -  n[        R                  " [        R                   " X#:  SS95      $ )zz
Array API compatible wrapper for :py:func:`np.matrix_rank <numpy.matrix_rank>`.

See its docstring for more information.
r   zA1-dimensional array given. Array must be at least two-dimensionalF
compute_uvNrC   T)rE   rb   rS   .rD   )rJ   r;   r<   LinAlgErrorsvdr>   maxrH   finfor9   eps
isinstancer   asarraynewaxisr?   count_nonzero)rA   rl   r5   tols       r&   matrix_rankrz      s     	vvzii##$ghh
		ahh51A|eede+c!''"#,.??"((177BSBWBWWdE"";;D eede+BJJt,<S"**_,MM::b&&qwR899r%   c                   U R                   S:  a  [        S5      e[        R                  " [        R
                  " U R                  SS5      5      $ )Nr   z5x must be at least 2-dimensional for matrix_transposerC   rS   )rJ   rI   r   r?   r;   swapaxesr>   rP   s    r&   matrix_transposer}      s9    vvzPQQ::bkk!((B344r%   c               <   U R                   [        ;  d  UR                   [        ;  a  [        S5      eU R                  S:w  d  UR                  S:w  a  [	        S5      e[
        R                  " [        R                  " U R                  UR                  5      5      $ )zn
Array API compatible wrapper for :py:func:`np.outer <numpy.outer>`.

See its docstring for more information.
z(Only numeric dtypes are allowed in outerr   z/The input arrays to outer must be 1-dimensional)
r9   r   r:   rJ   rI   r   r?   r;   outerr>   r`   s     r&   r   r      sl     
xx&"((/*IBCC 
ww!|rww!|JKK::bhhryy"))455r%   c              D   U R                   [        ;  a  [        S5      eUcC  [        U R                  SS 5      [
        R                  " U R                   5      R                  -  n[        R                  " [
        R                  R                  U R                  US95      $ )zz
Array API compatible wrapper for :py:func:`np.linalg.pinv <numpy.linalg.pinv>`.

See its docstring for more information.
z.Only floating-point dtypes are allowed in pinvNrS   )rcond)r9   r   r:   rr   rH   r;   rs   rt   r   r?   r<   pinvr>   )rA   rl   s     r&   r   r      st     	ww&&HII |17723< 288AGG#4#8#88::biinnQXXTn:;;r%   reducedmodec         
         U R                   [        ;  a  [        S5      e[        [	        [
        R                  [        R                  R                  U R                  US95      6 $ )zv
Array API compatible wrapper for :py:func:`np.linalg.qr <numpy.linalg.qr>`.

See its docstring for more information.
z,Only floating-point dtypes are allowed in qrr   )r9   r   r:   r(   rX   r   r?   r;   r<   qrr>   )rA   r   s     r&   r   r     sJ     	ww&&FGG SRYY\\!((\%FGHHr%   c                   U R                   [        ;  a  [        S5      e[        [	        [
        R                  [        R                  R                  U R                  5      5      6 $ )z
Array API compatible wrapper for :py:func:`np.linalg.slogdet <numpy.linalg.slogdet>`.

See its docstring for more information.
z1Only floating-point dtypes are allowed in slogdet)r9   r   r:   r-   rX   r   r?   r;   r<   slogdetr>   rP   s    r&   r   r     sH     	ww&&KLL #ejj"))*;*;AHH*EFGGr%   c                   SSK JnJnJnJnJnJnJn  SSKJ	n	  U" U 5      u  p
U" U 5        U" U 5        U" U5      u  pU" X5      u  pUR                  S:X  a  U	R                  nOU	R                  nU" U5      (       a  SOSn[        R                  " USSSSS	9   U" XUS
9nS S S 5        U" WR                  USS95      $ ! , (       d  f       N$= f)Nr   )
_makearray_assert_stacked_2d_assert_stacked_square_commonTypeisComplexTypeget_linalg_error_extobj_raise_linalgerror_singular)_umath_linalgr   zDD->Dzdd->dcallignore)r   invalidoverdivideunder)	signatureF)copy)linalg.linalgr   r   r   r   r   r   r   r<   r   rJ   solve1solver;   errstateastype)abr   r   r   r   r   r   r   r   _wraptresult_tgufuncr   rs                    r&   _solver   /  s    > > > 'a=DAq1mGAa#KA 	vv{%%$$ )++I	5v"88
E19-
E .//	
E 
Es   B??
Cc                   U R                   [        ;  d  UR                   [        ;  a  [        S5      e[        R                  " [        U R                  UR                  5      5      $ )z|
Array API compatible wrapper for :py:func:`np.linalg.solve <numpy.linalg.solve>`.

See its docstring for more information.
z/Only floating-point dtypes are allowed in solve)r9   r   r:   r   r?   r   r>   r`   s     r&   r   r   K  sG     
xx''288;K+KIJJ::fRYY		233r%   Tfull_matricesc         
         U R                   [        ;  a  [        S5      e[        [	        [
        R                  [        R                  R                  U R                  US95      6 $ )zx
Array API compatible wrapper for :py:func:`np.linalg.svd <numpy.linalg.svd>`.

See its docstring for more information.
z-Only floating-point dtypes are allowed in svdr   )r9   r   r:   r2   rX   r   r?   r;   r<   rq   r>   )rA   r   s     r&   rq   rq   X  sJ     	ww&&GHH c%**biimmAHHMm&Z[\\r%   c                   U R                   [        ;  a  [        S5      e[        R                  " [
        R                  R                  U R                  SS95      $ )Nz1Only floating-point dtypes are allowed in svdvalsFrn   )	r9   r   r:   r   r?   r;   r<   rq   r>   rP   s    r&   svdvalsr   i  s?    ww&&KLL::biimmAHHm?@@r%   axesc                  U R                   [        ;  d  UR                   [        ;  a  [        S5      e[        R                  " [
        R                  " U R                  UR                  US95      $ )Nz,Only numeric dtypes are allowed in tensordotr   )r9   r   r:   r   r?   r;   	tensordotr>   )rL   rM   r   s      r&   r   r   q  sK     
xx&"((/*IFGG::bll299biidCDDr%   )rQ   r9   c              D   U R                   [        ;  a  [        S5      eUc5  U R                   [        :X  a  [        nOU R                   [
        :X  a  [        n[        R                  " [        R                  " [        R                  " U R                  USSUS95      5      $ )zn
Array API compatible wrapper for :py:func:`np.trace <numpy.trace>`.

See its docstring for more information.
z(Only numeric dtypes are allowed in tracerS   rC   )rQ   rT   rU   r9   )r9   r   r:   r   r   r	   r
   r   r?   r;   rv   tracer>   )rA   rQ   r9   s      r&   r   r   z  sv     	wwo%BCC }77gEWW	!E ::bjj!((6SU]b!cdeer%   c              v   U R                   [        ;  d  UR                   [        ;  a  [        S5      e[        U R                  UR                  5      nSX0R                  -
  -  [        U R                  5      -   nSX1R                  -
  -  [        UR                  5      -   nXB   XR   :w  a  [        S5      e[        R                  " U R                  UR                  5      u  pg[        R                  " XbS5      n[        R                  " XrS5      nUSS S S 24   US   -  n[        R                  " US   5      $ )Nz)Only numeric dtypes are allowed in vecdot)r   z6x1 and x2 must have the same size along the given axisrC   .).N).r   r   )r9   r   r:   rr   rJ   tuplerH   rI   r;   broadcast_arraysr>   moveaxisr   r?   )	rL   rM   rE   rJ   x1_shapex2_shapex1_x2_ress	            r&   vecdotr     s    	xx&"((/*ICDDrww DTGG^$uRXX6HTGG^$uRXX6H~'QRR""299bii8HC
++c
$C
++c
$C
c4l
c)n
,C::c)n%%r%   rf   c         	       ^ U R                   [        ;  a  [        S5      eU R                  nUc  UR	                  5       nSnO[        U[        5      (       a  [        XR                  5      m[        U4S j[        UR                  5       5       5      nX-   n[        R                  " XG5      R                  [        R                  " U Vs/ s H  oR                  U   PM     sn[        S9/U Vs/ s H  oR                  U   PM     snQ75      nSnOUn[         R"                  " [        R$                  R'                  XEUS95      n	U(       ae  [)        U R                  5      n
[        Uc  [        U R                  5      OUU R                  5      nU H  nSX'   M	     [        U	[        U
5      5      n	U	$ s  snf s  snf )re   z.Only floating-point dtypes are allowed in normr   c              3  6   >#    U  H  oT;  d  M
  Uv   M     g 7f)Nr   ).0inormalized_axiss     r&   	<genexpr>vector_norm.<locals>.<genexpr>  s     J1/1IQQs   		)r9   )rE   rc   r   )r9   r   r:   r>   ravelru   r   r   rJ   ranger;   	transposer   prodrH   intr   r?   r<   rg   list)rA   rE   rb   rc   r   _axisrestnewshaper   r   rH   r   s              @r&   vector_normr     s^    	ww&&HII 	
A|GGI	D%	 	  /tVV<JaffJJ;LL%--WW$/$Qggaj$/s;YSW>XSWawwqzSW>XY[
**RYY^^As^;
<C QWW$dlU166]affUAEH c5<(J! 0>Xs   F82F=
)r=   rK   rO   rV   rY   r[   r]   r_   rh   rj   rz   r}   r   r   r   r   r   rq   r   r   r   r   r   )rA   r   r7   boolreturnr   )rL   r   rM   r   rE   r   r   r   )rA   r   r   r   )rA   r   rQ   r   r   r   )rA   r   r   r   )rL   r   rM   r   r   r   )rA   r   rb   r   rc   z2Optional[Union[int, float, Literal['fro', 'nuc']]]r   r   )rA   r   rk   r   r   r   )rA   r   rl   zOptional[Union[float, Array]]r   r   )rA   r   r   zLiteral['reduced', 'complete']r   r(   )rA   r   r   r-   )rA   r   r   r   r   r2   )rA   r   r   zUnion[Array, Tuple[Array, ...]])rL   r   rM   r   r   z/Union[int, Tuple[Sequence[int], Sequence[int]]]r   r   )rA   r   rQ   r   r9   zOptional[Dtype]r   r   )
rA   r   rE   z%Optional[Union[int, Tuple[int, ...]]]rb   r   rc   zOptional[Union[int, float]]r   r   );
__future__r   _dtypesr   r   r   r   r	   r
   _manipulation_functionsr   _elementwise_functionsr   _array_objectr   core.numericr   typingr   _typingr   r   r   r   r   r   r   numpy.linalgnumpyr;   r   r(   r-   r2   r=   rK   rO   rV   rY   r[   r]   r_   rh   rj   rz   r}   r   r   r   r   r   r   rq   r   r   r   r   r   __all__r   r%   r&   <module>r      sD   "  - (   /  II    z J 
  ,1 & 35 A$
/ ,- PB 4/7( 27rw [; GK :056$ @D <" ?H IH0084 /3 ]"A cd E )*D f* 46 &, OSej  PQ +Z Fr%   