�
��gf� � �� � d dl mZ d dlmZ d dlmZ d dlmZmZm Z d dl
mZ d dlm
Z
d dlmZmZ d dlmZ d d lmZ d d
lmZ d dlmZ d dlmZ d d
lmZ d dlmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z: d� Z;d� Z<d� Z=d@d�Z>d� Z?d� Z@d� ZAdAd�ZBdAd �ZCd!� ZDdBd#�ZEd$� ZFdBd%�ZGd&� ZHdCd(�ZId)� ZJdBd*�ZKd+� ZLd,� ZMd-� ZNdBd.�ZOdAd/�ZPdAd0�ZQd1� ZRdAd2�ZSd3� ZTd4� ZUe:rB eV eWe8e;e<e=e?e@eBeCeDeEeFeGeIeKeMe>eNeOePeQeLeReSf� � � � \ Z;Z<Z=Z?Z@ZBZCZDZEZFZGZIZKZMZ>ZNZOZPZQZLZRZSeBe;feCe;fe7gZXeIeBe;feCe;fe;gfZYeNeEe;feNeEeHe;fe7gZZe@eHfe7gZ[e@e?e@eKe@eMe@e;fZ\e@e?eGe@e?eIfeBeDeIe@feZeXeFeYe@eFeFe[fe7gZ]d5� fd6�Z^dDd7�Z_d8�` � � Za eb eV ecea eV eW ed� � je ea� � � � � � � � � � Zfd9� Zgd'ahd@d:�Zid;� Zjd<� Zkd=� Zld>� Zmd?� Znd'S )E� )�defaultdict��Add)�Expr)�Factors� gcd_terms�factor_terms��
expand_mul)�Mul)�pi�I)�Pow)�S)�ordered��Dummy)�sympify�� bottom_up)�binomial)�cosh�sinh�tanh�coth�sech�csch�HyperbolicFunction)�cos�sin�tan�cot�sec�csc�sqrt�TrigonometricFunction)�
perfect_power)�factor)�greedy)�identity�debug)�SYMPY_DEBUGc �r � | � � � � � � � � � S )zSimplification of rational polynomials, trying to simplify
the expression, e.g. combine things like 3*x + 2*x, etc....
)�normalr( �expand��rvs �a/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sympy/simplify/fu.py�TR0r3 s* � � �9�9�;�;�����&�&�(�(�(� c �( � d� }t | |� � S )z�Replace sec, csc with 1/cos, 1/sin
Examples
========
>>> from sympy.simplify.fu import TR1, sec, csc
>>> from sympy.abc import x
>>> TR1(2*csc(x) + sec(x))
1/cos(x) + 2/sin(x)
c �� � t | t � � r)| j d }t j t |� � z S t | t � � r)| j d }t j t |� � z S | S �Nr )�
isinstancer# �argsr �Oner r$ r �r1 �as r2 �fzTR1.<locals>.f4 se � ��b�#��� ����
�A��5��Q���<��
��C�
�
� ����
�A��5��Q���<��� r4 r �r1 r= s r2 �TR1r? ( s# � �� � � �R����r4 c �( � d� }t | |� � S )a@ Replace tan and cot with sin/cos and cos/sin
Examples
========
>>> from sympy.simplify.fu import TR2
>>> from sympy.abc import x
>>> from sympy import tan, cot, sin, cos
>>> TR2(tan(x))
sin(x)/cos(x)
>>> TR2(cot(x))
cos(x)/sin(x)
>>> TR2(tan(tan(x) - sin(x)/cos(x)))
0
c �
� t | t � � r,| j d }t |� � t |� � z S t | t
� � r,| j d }t |� � t |� � z S | S r7 )r8 r! r9 r r r"