�
��gЄ � � � d dl mZ d dlmZ d dlmZ d dlmZ d dlm Z d dl
mZmZ d dl
mZmZ d dlmZ d d lmZ d d
lmZ d dlmZmZ d dlmZmZ d d
lmZ d dlmZ d dl m!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7m8Z8 d dl9Z:d dlm;Z; d dl<m=Z= d dl>m?Z? d dl@mAZA d dlmBZB ddlCmDZDmEZF d d lGmHZH d d!l<mIZImJZJ d d"lKmLZLmMZM d d#lNmOZO d d$lPmQZQmRZR d d%lSmTZT d d&l<mUZU dd'lCmVZV dd(lWmXZX dd)lYmZZZm[Z[m\Z\m]Z] dd*lCm^Z^m_Z_ dd+l`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZo dd,lpmqZqmrZrmsZsmtZt dd-lumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZm�Z�m�Z� dd.l�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z� dd/l�m�Z�m�Z�m�Z�m�Z� dd0l�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z� dd1l�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z� dd2l�m�Z�m�Z�m�Z�m�Z� d3d4giZ� G d5� d6e0� � Z�d7� Z�d8� Z�d9� Z�d:� Z�d;� Z�d<� Z�d@d=�Z� G d>� d?eeU� � Z�dS )A� )�defaultdict)�Iterable)�
isfunction)�reduce��refine)�SympifyError�Add)�Atom�Basic)�
UndefinedKind)�Integer��Mod)�Symbol�Dummy)�sympify�_sympify��diff)�cancel)�Abs�re�im��sstr)�Max�Min�sqrt)�KroneckerDelta�
LeviCivita)�S)� Printable)�
StrPrinter)�exp�log)�binomial� factorialN)�Callable)�reshape)�Expr)�Pow)�uniquely_named_symbol� )�_dotprodsimp� _simplify)�Poly)�flatten�is_sequence)�as_int�
filldedent)�call_highest_priority)� fuzzy_and� FuzzyBool)� NDimArray)�NotIterable)�_get_intermediate_simp_bool)�
MatrixKind)�MatrixError�
ShapeError�NonSquareMatrixError�NonInvertibleMatrixError)�_iszero�_is_zero_after_expand_mul)�_find_reasonable_pivot�_find_reasonable_pivot_naive� _adjugate� _charpoly� _cofactor�_cofactor_matrix�_per�_det�_det_bareiss�_det_berkowitz� _det_bird�_det_laplace�_det_LU�_minor�_minor_submatrix)�_is_echelon�
_echelon_form�_rank�_rref)�_diagonal_solve�_lower_triangular_solve�_upper_triangular_solve�_cholesky_solve� _LDLsolve�_LUsolve�_QRsolve�_gauss_jordan_solve�_pinv_solve�
_cramer_solve�_solve�_solve_least_squares) �_pinv�_inv_ADJ�_inv_GE�_inv_LU�_inv_CH�_inv_LDL�_inv_QR�_inv�
_inv_block)�_columnspace�
_nullspace� _rowspace�_orthogonalize)�
_eigenvals�_eigenvects�_bidiagonalize�_bidiagonal_decomposition�_is_diagonalizable�_diagonalize�_is_positive_definite�_is_positive_semidefinite�_is_negative_definite�_is_negative_semidefinite�_is_indefinite�_jordan_form�_left_eigenvects�_singular_values) �_rank_decomposition� _cholesky�_LDLdecomposition�_LUdecomposition�_LUdecomposition_Simple�_LUdecompositionFF�_singular_value_decomposition�_QRdecomposition�_upper_hessenberg_decomposition)�_connected_components�#_connected_components_decomposition�_strongly_connected_components�,_strongly_connected_components_decomposition)zMatrixBase.is_indefinitezMatrixBase.is_positive_definitez#MatrixBase.is_positive_semidefinitezMatrixBase.is_negative_definitez#MatrixBase.is_negative_semidefinite�
matplotlibc �| � e Zd ZdZdZdZdZdZ ee � � Z
ej Z
ej ZdZdZdZdZed� � � Zd� Zd � Zed
� � � Zd� Zd� Zd
� Zd� Zd� Zd� Zd� Z d� Z!d� Z"d� Z#ed� � � Z$d� Z%d� Z&d� Z'd� Z(d� Z)d� Z*d� Z+d� Z,ed� � � Z-d� Z.d � Z/d!� Z0d"� Z1�dHd$�Z2d%� Z3d&� Z4ed'� � � Z5d(� Z6d)� Z7d*� Z8�dId+�Z9ed,� � � Z:ed-� � � Z;ed.� � � Z<e�dJd0e=fd1�� � Z>ed2� � � Z?ed3� � � Z@ed4� � � ZAed5dddd6�d7�� � ZBe�dKd8�� � ZCe�dLd/d9�d:�� � ZDe�dKd;�� � ZEe�dKd<�� � ZFed=� � � ZGed>� � � ZHd?� ZId@� ZJdA� ZKdB� ZLdC� ZMdD� ZNdE� ZOdF� ZPdG� ZQdHeRfdI�ZSdJ� ZTdK� ZUdL� ZVdM� ZWdN� ZXdO� ZYdP� ZZdQ� Z[dR� Z\dS� Z]edT� � � Z^dU� Z_�dMdV�Z`dW� ZaedX� � � ZbedY� � � ZcedZ� � � ZdedHeRfd[�� � Zeed\� � � Zfed]� � � Zged^� � � Zhd_� Zi�dMd`�Zjeda� � � Zkedb� � � Zledc� � � Zmdd� Znde� Zodf� Zpdg� Zqdh� Zrdi� Zsdj� Ztdk� Zudl� Zvdm� Zwdn� Zxdo� Zydp� Zz�dMdq�Z{dr� Z|ds� Z}�dNdv�Z~ �dOdw�Zedx� � � Z��dPd{�Z��dQd|�Z��dQd}�Z��dMd~�Z��dRd�Z��dSd��Z�d�� Z�d�� Z�d�� Z�d�� Z�ed�� � � Z�ed�� � � Z�d�� Z�d�� Z�d�� Z�d�� Z��dHd��Z��dHd��Z�d�� Z�d�� Z�d�� Z�d�� Z�d�� Z�d�� Z�d�� Z��dKd��Z�d�� Z�d�� Z�d�� Z�d�� Z� e�d�� � d�� � � Z� e�d�� � d�� � � Z� e�d�� � d�� � � Z�d�� Z� e�d�� � d�� � � Z��dKd��Z�d�� Z�d�� Z� e�d�� � d�� � � Z��dKd��Z� e�d�� � d�� � � Z� e�d�� � d�� � � Z� e�d�� � d�� � � Z��dKd��Z� e�d�� � d�� � � Z� e�d�� � d�� � � Z�e�fd��Z�d�� Z�e�dfd��Z�d�� Z�d�� Z�d�� Z��dTd��Z�d�e�fd��Z��dTd��Z��dTd��Z��dUd��Z�d Z��dTdÄZ�dĄ Z�e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�d5d5fdńZ�edƄ � � Z�e�d5fdDŽZ�dȄ Z�e�d5ddfdɄZ�e�j e�_ e�j e�_ e�j e�_ e�j e�_ �dVd˄Z�d̄ Z�d̈́ Z�d΄ Z�dτ Z�dЄ Z�dф ZߐdWdӄZ��dWdԄZ�dXdՄZ�d5e�fdքZ�dXdׄZ�d Z�e�j e�_ e�j e�_ e�j e�_ e�j e�_ ee� � Z�dMdلZ�de�fdڄZ�dXdۄZ�dYd܄Z�dMd݄Z�dMdބZ�ed߄ � � Z�ed�� � � Z�ed� � � Z�ed� � � Z�ed� � � Z��dMd�Z�d� Z�d� Z�e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ e�j e�_ �e j e�_ �ej e�_ �ej e�_ �ej e�_ �ej e�_ �ej e�_ dd�d��Zd� �Zd� �Zd� �Z d� �Z
�ed�� � e�fd��Zd� �Z
d� �Zd�� �Zd� �Z�dTd��Zd� �Zd� �Zd�� �Z�dMd���Z�dTd���Zd�� �Zd�� �Zd�� �ZedH�efd��� � �Zd�� �Z�edfd���Zd�� �Zd�� �Z �d � �Z!�dK�d��Z"e�d� � � �Z#e�d� � � �Z$e�d� � � �Z%�d� �Z&�d� �Z'�d� �Z(�d� �Z)�d � �Z*�d
� �Z+�d� �Z,e�d� � � �Z-�dL�d
��Z.�d� �Z/�d� �Z0�d� �Z1�d� �Z2�d� �Z3�e4f�d��Z5�d� �Z6�d� �Z7�d� �Z8e�f�d��Z9�dK�d��Z:�dZ�d��Z;�d� �Z< �d[�d!��Z=e�d5f�d"��Z>�dM�d#��Z?�dM�d$��Z@e�dd5f�d%��ZAe�dd5f�d&��ZB�d'� �ZC�d(� �ZD�d)� �ZE�d*� �ZF�d+� �ZG�d,� �ZH�d-� �ZI�d.� �ZJ�d/� �ZKe�f�d0��ZL�d1� �ZM�dX�d2��ZN�dK�d3��ZO�d\�d5��ZP�d]�d7��ZQ�d^�d9��ZR�d_�d;��ZSe�f�d<��ZTe�f�d=��ZUe�f�d>��ZVe�f�d?��ZWe�f�d@��ZXe�f�dA��ZYe�f�dB��ZZde�d5f�dC��Z[�dD� �Z\�dE� �Z]�dF� �Z^�dM�dG��Z_�e`�ja �Za�ebj �e>_ �ecj �e?_ �edj �e@_ �eej �eA_ �efj �eB_ �egj �eC_ �ehj �eD_ �eij �eE_ �ejj �eF_ �ekj �eG_ �elj �eH_ �emj �eI_ �enj �eJ_ �eoj �eK_ �epj �eL_ �eqj �eM_ �erj �eN_ �esj �eO_ �etj �eP_ �euj �eQ_ �evj �eR_ �ewj �eS_ �exj �eT_ �eyj �eV_ �ezj �eW_ �e{j �eX_ �e|j �eY_ �e}j �eZ_ �e~j �eU_ �ej �e[_ �e�j �e\_ �e�j �e]_ �e�j �e^_ �e�j �e__ dS (` �
MatrixBasezsAll common matrix operations including basic arithmetic, shaping,
and special matrices like `zeros`, and `eye`.g��Q�$@� T� Nc � � t d� � �)z�`_new` must, at minimum, be callable as
`_new(rows, cols, mat) where mat is a flat list of the
elements of the matrix.�Subclasses must implement this.��NotImplementedError)�cls�args�kwargss �i/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sympy/matrices/matrixbase.py�_newzMatrixBase._newv � � �
"�"C�D�D�D� c � � t d� � �)Nr� r� ��self�others r� �__eq__zMatrixBase.__eq__} s � �!�"C�D�D�Dr� c � � t d� � �)a Implementations of __getitem__ should accept ints, in which
case the matrix is indexed as a flat list, tuples (i,j) in which
case the (i,j) entry is returned, slices, or mixed tuples (a,b)
where a and b are any combination of slices and integers.r� r� �r� �keys r� �__getitem__zMatrixBase.__getitem__� r� r� c � � | j | j fS )a The shape (dimensions) of the matrix as the 2-tuple (rows, cols).
Examples
========
>>> from sympy import zeros
>>> M = zeros(2, 3)
>>> M.shape
(2, 3)
>>> M.rows
2
>>> M.cols
3
��rows�cols�r� s r� �shapezMatrixBase.shape� s � � � �4�9�%�%r� c �Z � �� �� fd�}� � � j � j dz
|� � S )Nc �>