�
��g�I � �� � d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl m
Z
ddlmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ dd lm Z dd
l!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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZDmEZE ddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZS dd
lTmUZUmVZVmWZW ddlXmYZYmZZZm[Z[ ddl\m]Z] ddl^m_Z_ ddl`maZa d� Zbd� Zcd� Zdd� Zed� Zf G d� de� � Zg G d� de� � Zh e
d� � Zi G d� d� � Zj G d� d� � Zk G d � d!� � Zl G d"� d#� � Zm G d$� d%� � Zn G d&� d'en� � Zo G d(� d)en� � Zp G d*� d+en� � Zq G d,� d-en� � Zr G d.� d/en� � Zs G d0� d1en� � Zt G d2� d3en� � Zu G d4� d5en� � Zv G d6� d7en� � Zw G d8� d9en� � Zx G d:� d;en� � Zy G d<� d=en� � Zz G d>� d?en� � Z{ G d@� dAen� � Z|dB� Z}dC� Z~dD� ZdE� Z�dF� Z�dG� Z�dH� Z�dI� Z�dJ� Z�dK� Z�dL� Z�dMa�g e
dN� � dOddPfdQ�Z�dR� Z�dMa� dVdT�Z�dVdU�Z�dMS )Wa@
Expand Hypergeometric (and Meijer G) functions into named
special functions.
The algorithm for doing this uses a collection of lookup tables of
hypergeometric functions, and various of their properties, to expand
many hypergeometric functions in terms of special functions.
It is based on the following paper:
Kelly B. Roach. Meijer G Function Representations.
In: Proceedings of the 1997 International Symposium on Symbolic and
Algebraic Computation, pages 205-211, New York, 1997. ACM.
It is described in great(er) detail in the Sphinx documentation.
� )�defaultdict)�product)�reduce)�prod)�SYMPY_DEBUG)�S�Dummy�symbols�sympify�Tuple�expand�I�pi�Mul�
EulerGamma�oo�zoo�expand_func�Add�nan�Expr�Rational)�Mod��default_sort_key)!�exp�sqrt�root�log�
lowergamma�cos�besseli�gamma�
uppergamma�expint�erf�sin�besselj�Ei�Ci�Si�Shi�sinh�cosh�Chi�fresnels�fresnelc�
polar_lift� exp_polar�floor�ceiling�rf� factorial�lerchphi� Piecewise�re�
elliptic_k�
elliptic_e)�polarify�
unpolarify)
�hyper�HyperRep_atanh�HyperRep_power1�HyperRep_power2�
HyperRep_log1�HyperRep_asin1�HyperRep_asin2�HyperRep_sqrts1�HyperRep_sqrts2�
HyperRep_log2�HyperRep_cosasin�HyperRep_sinasin�meijerg)�Matrix�eye�zeros)�apart�poly�Poly)�residue)� powdenest��siftc � � | j rt | d� � S | � � � \ }} t |d� � | z S �N� )� is_Numberr �as_coeff_Add)�x�cs �j/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sympy/simplify/hyperexpand.py�_mod1r^ U sA � � �{� ��1�a�y�y���>�>���D�A�q��q�!�9�9�q�=�� c �= � ���� �
� t dt �� � \ ����
���� �
fd�}���� �
fd�} |ddt �
� � � � |�fdt � �
� � � � |��t j z
fd�z ft
t ��
� � t �t j z �
� � dz g� � t
ddgg� � t
�t j z
�
z d�
z
z t j �z
�
z d�
z
z g�d�
z
z ��
dz
z d�
z
z gg� � � � |d d
t
t �
� � dg� � t
d�
z dgg� � t
d�
�
dz
z gddgg� � � � |t j dft d� � ft
t �
� � dg� � t
ddgg� � t
t dd� � dd�
z
z dz gddgg� � � � |t j t j ft d� � ft
t �
� � t t dd� � �
� � g� � t
ddgg� � t
t dd� � t j gd�
d�
z
z dz gg� � � � |�t j �z ft j ft
t � �
� � t � t j z
�
� � g� � t
ddgg� � t
d� g�
d
�z dz
z dz d�
z
z t j �
d
�z dz
z d�
z
z z
gg� � � � |�� gt j gt
t ��
� � t ��
� � g� � t
ddgg� � t
d� g��
z d�
z
z dd�
z
z dz gg� � � � |ddgdt j z gt
t! �
� � dg� � t
ddgg� � t
�
t j z
d�
z
z dd�
z
z dz gddgg� � � � |t j t j gt j gt
t% �
� � t'