HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/numpy/array_api/__pycache__/linalg.cpython-310.pyc
o

���g�G�@s2ddlmZddlmZmZmZmZmZmZddl	m
Z
ddlmZddl
mZddlmZdd	lmZerFdd
lmZmZmZmZmZmZddlmZddlZddlZGd
d�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!dd�dodd�Z"dd�dpd$d%�Z#dqd&d'�Z$dd(�drd*d+�Z%dsd,d-�Z&dqd.d/�Z'dqd0d1�Z(dtd2d3�Z)dd4d5�dud9d:�Z*dvd<d=�Z+dd>�dwdAdB�Z,dqdCdD�Z-dtdEdF�Z.dd>�dwdGdH�Z/dIdJ�dxdMdN�Z0dydOdP�Z1dQdR�Z2dtdSdT�Z3dUdV�dzdXdY�Z4d{d[d\�Z5dd]�d|d`da�Z6dddb�d}dedf�Z7dd�dpdgdh�Z8ddddi�d~dldm�Z9gdn�Z:dS)�)�annotations�)�_floating_dtypes�_numeric_dtypes�float32�float64�	complex64�
complex128)�reshape)�conj)�Array�)�normalize_axis_tuple)�
TYPE_CHECKING)�Literal�Optional�Sequence�Tuple�Union�Dtype)�
NamedTupleNc@�eZdZUded<ded<dS)�
EighResultr�eigenvalues�eigenvectorsN��__name__�
__module__�__qualname__�__annotations__�r r �A/usr/local/lib/python3.10/dist-packages/numpy/array_api/linalg.pyr�
rc@r)�QRResultr�Q�RNrr r r r!r#r"r#c@r)�
SlogdetResultr�sign�	logabsdetNrr r r r!r&"r"r&c@s&eZdZUded<ded<ded<dS)�	SVDResultr�U�S�VhNrr r r r!r)&s
r)F)�upper�xrr-�bool�returncCsT|jtvr	td��tj�|j�}|r%t�|�j	}|jt
tfvr#t|�}|St�|�S)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�mTrr	r)r.r-�Lr*r r r!r5-s

r5�����axis�x1�x2r<�intcCsr|jtvs
|jtvrtd��|j|jkrtd��|jdkr!td��|j|dkr,td��t�tj	|j
|j
|d��S)zz
    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 shaperz/cross() requires arrays of dimension at least 1�zcross() dimension must equal 3r;)r1rr2�shape�
ValueError�ndimrr7r3�crossr6)r=r>r<r r r!rD@s
rDcC�&|jtvr	td��t�tj�|j��S)z�
    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)	r1rr2rr7r3r4�detr6�r.r r r!rFRs
rF)�offsetrHcCst�tj|j|ddd��S)z�
    Array API compatible wrapper for :py:func:`np.diagonal <numpy.diagonal>`.

    See its docstring for more information.
    ���r:)rH�axis1�axis2)rr7r3�diagonalr6)r.rHr r r!rL_srLcC�,|jtvr	td��tttjtj�	|j
���S)z�
    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)r1rr2r�maprr7r3r4�eighr6rGr r r!rOj�
rOcCrE)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)	r1rr2rr7r3r4�eigvalshr6rGr r r!rQz�
rQcCrE)z�
    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)	r1rr2rr7r3r4�invr6rGr r r!rS�rRrScCs2|jtvs
|jtvrtd��t�t�|j|j��S)z|
    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)r1rr2rr7r3�matmulr6�r=r>r r r!rT�srT�fro)�keepdims�ordrWrX�2Optional[Union[int, float, Literal['fro', 'nuc']]]cCs.|jtvr	td��t�tjj|jd||d��S)��
    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)rIr:�r<rWrX)	r1rr2rr7r3r4�normr6)r.rWrXr r r!�matrix_norm�s
r]�ncCs(|jtvr	td��t�tj�|j|��S)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)	r1rr2rr7r3r4�matrix_powerr6)r.r^r r r!r_�s
r_)�rtolr`�Optional[Union[float, Array]]cCs�|jdkrtj�d��tjj|jdd�}|dur0|jddd�t|jd	d��t�|j	�j
}nt|t�r8|j}|jddd�t�
|�d
tjf}t�tj||kdd��S)z�
    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_uvNr:T)r<rWrI.r;)rCr3r4�LinAlgError�svdr6�maxrA�finfor1�eps�
isinstancer�asarray�newaxisr7�
count_nonzero)r.r`r+�tolr r r!�matrix_rank�s
0
"rncCs(|jdkr	td��t�t�|jdd��S)Nr
z5x must be at least 2-dimensional for matrix_transposer:rI)rCrBrr7r3�swapaxesr6rGr r r!�matrix_transpose�s
rpcCsN|jtvs
|jtvrtd��|jdks|jdkrtd��t�t�|j	|j	��S)zz
    Array API compatible wrapper for :py:func:`np.outer <numpy.outer>`.

    See its docstring for more information.
    z(Only numeric dtypes are allowed in outerrz/The input arrays to outer must be 1-dimensional)
r1rr2rCrBrr7r3�outerr6rUr r r!rq�s
rqcCsR|jtvr	td��|durt|jdd��t�|j�j}t�	tj
j|j|d��S)z�
    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 pinvNrI)�rcond)
r1rr2rfrAr3rgrhrr7r4�pinvr6)r.r`r r r!rs�s

 rs�reduced��moderv�Literal['reduced', 'complete']cC�0|jtvr	td��tttjtjj	|j
|d���S)z�
    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 qrru)r1rr2r#rNrr7r3r4�qrr6)r.rvr r r!ry�
rycCrM)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)r1rr2r&rNrr7r3r4�slogdetr6rGr r r!r{rPr{cCs�ddlm}m}m}m}m}m}m}ddlm	}	||�\}}
||�||�||�\}}|||�\}}
|j
dkr<|	j}n|	j}||�rEdnd}t
j|ddddd	��||||d
�}Wd�n1scwY||j|
dd��S)
Nr
)�
_makearray�_assert_stacked_2d�_assert_stacked_square�_commonType�
isComplexType�get_linalg_error_extobj�_raise_linalgerror_singular)�
_umath_linalgrzDD->Dzdd->d�call�ignore)r��invalid�over�divide�under)�	signatureF)�copy)�
linalg.linalgr|r}r~rr�r�r�r4r�rC�solve1�solver3�errstate�astype)�a�br|r}r~rr�r�r�r��_�wrap�t�result_t�gufuncr��rr r r!�_solve/s"$
��r�cCs0|jtvs
|jtvrtd��t�t|j|j��S)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)r1rr2rr7r�r6rUr r r!r�Ksr�T��
full_matricesr�cCrx)z�
    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�)r1rr2r)rNrr7r3r4rer6)r.r�r r r!reXrzre�Union[Array, Tuple[Array, ...]]cCs*|jtvr	td��t�tjj|jdd��S)Nz1Only floating-point dtypes are allowed in svdvalsFrb)	r1rr2rr7r3r4rer6rGr r r!�svdvalsis
r���axesr��/Union[int, Tuple[Sequence[int], Sequence[int]]]cCs6|jtvs
|jtvrtd��t�tj|j|j|d��S)Nz,Only numeric dtypes are allowed in tensordotr�)r1rr2rr7r3�	tensordotr6)r=r>r�r r r!r�qsr�)rHr1r1�Optional[Dtype]cCsZ|jtvr	td��|dur|jtkrt}n|jtkrt}t�t	�
t	j|j|dd|d���S)zz
    Array API compatible wrapper for :py:func:`np.trace <numpy.trace>`.

    See its docstring for more information.
    z(Only numeric dtypes are allowed in traceNrIr:)rHrJrKr1)
r1rr2rrrr	rr7r3rj�tracer6)r.rHr1r r r!r�zs


"r�c	Cs�|jtvs
|jtvrtd��t|j|j�}d||jt|j�}d||jt|j�}||||kr9td��t�	|j
|j
�\}}t�||d�}t�||d�}|dddd�f|d}t�
|d�S)Nz)Only numeric dtypes are allowed in vecdot)rz6x1 and x2 must have the same size along the given axisr:.).N).rr)r1rr2rfrC�tuplerArBr3�broadcast_arraysr6�moveaxisrr7)	r=r>r<rC�x1_shape�x2_shape�x1_�x2_�resr r r!�vecdot�sr�r[�%Optional[Union[int, Tuple[int, ...]]]�Optional[Union[int, float]]c
s|jtvr	td��|j�|dur����d}nBt|t�rWt||j��t�fdd�t	�j�D��}||}t
��|��t
j
�fdd�|D�td�g�fdd�|D��R��d}n|}t�t
jj�||d	��}|r�t|j�}t|durvt	|j�n||j�}|D]}	d
||	<q}t|t|��}|S)rZz.Only floating-point dtypes are allowed in normNrc3s�|]	}|�vr|VqdS)Nr ��.0�i)�normalized_axisr r!�	<genexpr>�s�zvector_norm.<locals>.<genexpr>csg|]}�j|�qSr )rAr�)r�r r!�
<listcomp>�szvector_norm.<locals>.<listcomp>)r1)r<rXr)r1rr2r6�ravelrir�rrC�ranger3�	transposer
�prodr?rr7r4r\�listrA)
r.r<rWrX�_axis�rest�newshaper�rAr�r )r�r�r!�vector_norm�s.

0�

r�)r5rDrFrLrOrQrSrTr]r_rnrprqrsryr{r�rer�r�r�r�r�)r.rr-r/r0r)r=rr>rr<r?r0r)r.rr0r)r.rrHr?r0r)r.rr0r)r=rr>rr0r)r.rrWr/rXrYr0r)r.rr^r?r0r)r.rr`rar0r)r.rrvrwr0r#)r.rr0r&)r.rr�r/r0r))r.rr0r�)r=rr>rr�r�r0r)r.rrHr?r1r�r0r)
r.rr<r�rWr/rXr�r0r);�
__future__r�_dtypesrrrrrr	�_manipulation_functionsr
�_elementwise_functionsr�
_array_objectr�core.numericr�typingr�_typingrrrrrrr�numpy.linalg�numpyr3rr#r&r)r5rDrFrLrOrQrSrTr]r_rnrprqrsryr{r�r�rer�r�r�r�r��__all__r r r r!�<module>sR  










	-