�
��gh � �� � d Z ddlmZ ddlmZmZmZmZmZm Z ddl
mZ ddlm
Z
ddlmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZmZmZ dd l m!Z!m"Z" dd
l#m$Z$ ddl%m&Z&m'Z' ddl(m)Z)m*Z* dd
l+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZD ddlEmFZF ddlGmHZHmIZI ddlJmKZK ddlLmMZM ddlNmOZO ddlPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[ ddl\m]Z] ddl^m_Z_m`Z`maZambZb ddlcmdZd ddlemfZf ddlgmhZhmiZi ddljmkZkmlZlmmZmmnZn ddlompZpmqZq ddlrmsZsmtZt dd lumvZv dd!lwmxZx dd"lymzZzm{Z{ dd#l|m}Z}m~Z~mZm�Z�m�Z�m�Z�m�Z�m�Z� dd$l�m�Z� dd%l�m�Z� dd&l�m�Z� dd'l�m�Z� dd(l�m�Z� dd)l�m�Z�m�Z� dd*l�Z�d+� Z�d,� Z�d-� Z�d.� Z�dKd/�Z�d0� Z�d1� Z�d2� Z�dLd6�Z�d7� Z�dg g fd8�Z�d9� Z�d:� Z�d;� Z�d<� Z�d=� Z�d>� Z�dKd?�Z�d@� Z�e8dA� e7dB� iZ�dC� Z�dD� Z�e�dEdF�dG�� � Z�dH� Z�dI� Z�ddJl�m�Z�m�Z�m�Z� d*S )Ma
This module contain solvers for all kinds of equations:
- algebraic or transcendental, use solve()
- recurrence, use rsolve()
- differential, use dsolve()
- nonlinear (numerically), use nsolve()
(you will need a good starting point)
� )�annotations)�S�Add�Symbol�Dummy�Expr�Mul)�check_assumptions)�factor_terms)�
expand_mul�
expand_log�
Derivative�AppliedUndef�UndefinedFunction�nfloat�Function�expand_power_exp�_mexpand�expand�expand_func)� fuzzy_not)�Float�Rational�_illegal)�integer_log�ilcm)�Pow)�Eq�Ne)�ordered�default_sort_key)�sympify�_sympify)�preorder_traversal)�And�BooleanAtom)�log�exp�LambertW�cos�sin�tan�acos�asin�atan�Abs�re�im�arg�sqrt�atan2)�binomial)�HyperbolicFunction)�piecewise_fold� Piecewise)�TrigonometricFunction)�Integral)�divisors)�simplify�collect�powsimp�posify� powdenest� nsimplify�denom�
logcombine�
sqrtdenest�fraction�separatevars)�
sqrt_depth)�TR1�TR2i�TR10�TR11)�rebuild)�NonInvertibleMatrixError)�Matrix�zeros)�roots�cancel�factor�Poly)�sympy_eqs_to_ring�
solve_lin_sys)�GeneratorsNeeded�PolynomialError)�gcd)�lambdify)�
filldedent�debugf)�connected_components�
generate_bell�uniq�iterable�is_sequence�subsets�flatten�sift)�conserve_mpmath_dps)�findroot)�solve_poly_system)�
GeneratorType)�defaultdict)�combinations�productNc �& �� t | � � st |� � rt d� � �t |� � }t t |� � � � }i �d}|D ]5}t |t
� � s|�vrt
d|z � � �|<