
    RieH                        d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZmZmZmZmZ d dlmZmZ d dlmZmZmZmZmZmZ d d	lm Z  d d
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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? d dl@mAZA d dlBmCZCmDZDmEZEmFZFmGZGmHZH d ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRd ZSd ZTd ZUd ZVd ZWd ZXd ZYd ZZd Z[d  Z\d! Z]d" Z^d# Z_d$ Z`d% Zad& Zbd' Zcd( Zdd)S )*    )AddMul)IRationalpi)S)DummySymbolsymbols)coshcothcschsechsinhtanh)rootsqrt)coscotcscsecsintan)powsimp)LTR1TR10TR10iTR11_TR11TR12TR12iTR13TR14TR15TR16TR111TR2TR2iTR3TR5TR6TR7TR8TR9TRmorrie_TR56TRpowerhyper_as_trigfuprocess_common_addends
trig_splitas_f_sign_1)verify_numerically)abcxyzc                      t          dt          t                    z  t          t                    z             dt	          t                    z  dt          t                    z  z   k    sJ d S )N      )r   r   r=   r   r   r        <lib/python3.11/site-packages/sympy/simplify/tests/test_fu.pytest_TR1rF      sO    qQx#a&& !!Qs1vvX#a&&%8888888rD   c            	         t          t          t                              t          t                    t	          t                    z  k    sJ t          t          t                              t	          t                    t          t                    z  k    sJ t          t          t          t                    t          t                    t	          t                    z  z
                      dk    sJ d S )Nr   )r)   r   r=   r   r   r   rC   rD   rE   test_TR2rH      s    s1vv;;#a&&Q-''''s1vv;;#a&&Q-''''s3q66CFF3q66M)**++q000000rD   c                  l   t          dt          z  t          t          z  z            dt          z  t          z  k    sJ t          t	          t                    t          t                    z            t          t                    k    sJ t          t	          t                    t	          t                    z  t          t                    z            t          t                    t	          t                    z  k    sJ t          dt	          t                    t          t                    z  z            dt          t                    z  k    sJ t          dt	          t                    t	          t                    z  t          t                    z  z            dt          t                    z  t	          t                    z  k    sJ t          t	          t                    dz  t          t                    dz   z            t	          t                    t          t                    dz   z  dz  k    sJ t          t	          t                    dz  t          t                    dz   z  d          t          t          dz            dz  k    sJ t          t	          d          t          d          dz   z  d          t          t          j                  k    sJ t          t	          d          t          d          dz   z  d          t          d          k    sJ t          t	          d          t          d          dz   z  d          t          d          k    sJ t          t	          d          t          d          dz   z  d          t          dt          j        z            k    sJ t          t          d          dz   t	          d          z  d          dt          t          j                  z  k    sJ t          t          d          dz   t	          d          z  d          dt          d          z  k    sJ t          t          d          dz   t	          d          z  d          dt          d          z  k    sJ t          t          d          dz   t	          d          z  d          dt          dt          j        z            z  k    sJ t          t          d          dz   t           z  t	          d          t          z  z  d          t          t          j                  t          z  k    sJ t          t          d          dz   t           z  t	          d          t          z  z  d          t          d          t          z  k    sJ t          t          d          dz   t           z  t	          d          t          z  z  d          t          d          dz   t           z  t	          d          t          z  z  k    sJ t          t          d          dz   t           z  t	          d          t          z  z  d          t          d          dz   t           z  t	          d          t          z  z  k    sJ t          t          d          dz   t          z  t	          d          t           z  z  d          t          t          j                  t           z  k    sJ t          t          d          dz   t          z  t	          d          t           z  z  d          t          d          t           z  k    sJ t          t          d          dz   t          z  t	          d          t           z  z  d          t          d          dz   t          z  t	          d          t           z  z  k    sJ t          t          d          dz   t          z  t	          d          t           z  z  d          t          d          dz   t          z  t	          d          t           z  z  k    sJ t          dd          } t          t          d          dz   | z  t	          d          |  z  z  d          t          dt          j        z            |  z  k    sJ t          dt          d          dz   | z  t	          d          |  z  z  z  d          t          dt          j        z            | z  k    sJ d S )	NrA   rB   T)half      iinteger)r   r=   r>   r*   r   r   r   r	   Halfr:   r   )rM   s    rE   	test_TR2irQ      s   
 1a419!A#))))As1vv#a&&((((As1vvc!ff$%%QA66663q66#a&&=!""aAh....3q66#a&&=Q'())Qs1vvXc!ff_<<<<Aq#a&&1*%&&#a&&#a&&1**=a*?????Aq#a&&1*%D111S1XXaZ????AA
#$///3qv;;>>>>AA
#$///3q669999AA
#$///3q669999AA
#$///3qx==@@@@Q!SVV#$///1S[[=@@@@Q!SVV#$///1SVV8;;;;Q!SVV#$///1SVV8;;;;Q!SVV#$///1S16]]?BBBBQ!r"3q6619,4888CKKNJJJJQ!r"3q6619,4888CFFAIEEEEQ!r"3q6619,4888SVVaZA2<NsSTvvWXy<XXXXXQ!r"3q6619,4888SVVaZA2<NsSTvvWXy<XXXXXQ!aA!,4888CKK1"<MMMMMQ!aA!,4888CFFaRLHHHHQ!aA!,4888SVVaZ!OCPQFFVWUWL<XXXXXQ!aA!,4888SVVaZ!OCPQFFVWUWL<XXXXXT"""A#a&&1*qQ1"-T:::c!AF(mmqb>QQQQQCFFQJ?3q66QB</0t<<<AafHq@PPPPPPPrD   c                     t          t          t          t          t          t          z
  z  z
                      t          t          t          t          z
  z  t          z             k    sJ t          t          dz  t          z             t          t                     k    sJ t          dt          z  dz  t          z             t          t                     k    sJ t          t
          t          t          t          t          fD ]T}  | t          t          dd          z            }t          |          }t          ||          r|j        |j        k    sJ Ud S )NrA            )r+   r   r>   r=   r   r   r   r   r   r   r   r9   func)frM   js      rE   test_TR3rY   A   s   s1q!a%y=!!""c!QU)a-&8&88888r!tax==SVVG####r"uQw{Aw&&&&3S#s+ = =Ab!Q  FF!!Q''<AFaf,<,<,<,<,<= =rD   c                     d } t          t          t                    dz  t          t          | dd          t          t                    t          t                    dz   dz   z  k    sJ t          t          t                    dz  t          t          | dd          t          t                    dz  k    sJ t          t          t                    dz  t          t          | dd          t          t                    dz   dz   dz  k    sJ t          t          t                    dz  t          t          | dd	          t          t                    dz  k    sJ t          t          t                    d
z  t          t          | dd	          t          t                    dz   dz   dz  k    sJ t          t          t                    t          z  t          t          | dd	          t          t                    t          z  k    sJ t          t          t                    dt          z  dz   z  t          t          | dd	          t          t                    dt          z  dz   z  k    sJ d S )Nc                     d| z
  S NrB   rC   r=   s    rE   <lambda>ztest__TR56.<locals>.<lambda>M   s
    !a% rD   rT   rK   FrA   rB   
      T   )Tr   r=   r   r   )hs    rE   
test__TR56rd   L   s   ASVVQYS!Q..#a&&3q6619*q.2IIIIISVVRZc1a//3q662:====SVVQYS!Q..CFFAI:>A2EEEEESVVQYS!Q--Q::::SVVQYS!R..CFFAI:>A2EEEEE SVVQYS!Q--Q::::SVVacAgS!Q55Q!A#'9JJJJJJJrD   c                     t          t          t                    dz            t          t                    dz   dz   k    sJ t          t          t                    dz            t          t                    dz  k    sJ t          t          t                    dz            t          t                    dz   dz   dz  k    sJ d S NrA   rB   rK   )r,   r   r=   r   rC   rD   rE   test_TR5rh   Y       s1vvqy>>c!ffaiZ!^++++s1vvrz??c!ffrl****s1vvqy>>s1vvqyj1nq0000000rD   c                     t          t          t                    dz            t          t                    dz   dz   k    sJ t          t          t                    dz            t          t                    dz  k    sJ t          t          t                    dz            t          t                    dz   dz   dz  k    sJ d S rf   )r-   r   r=   r   rC   rD   rE   test_TR6rk   _   ri   rD   c                  P   t          t          t                    dz            t          dt          z            dz  t          j        z   k    sJ t          t          t                    dz  dz             t          dt          z            dz  t          dd          z   k    sJ d S )NrA   rB   rT   )r.   r   r=   r	   rP   r   rC   rD   rE   test_TR7rm   e   s    s1vvqy>>S1XXaZ!&00000s1vvqy1}QqS!hq!nn!<<<<<<<rD   c            
         t          t          d          t          d          z            t          d          dz  t          d          dz  z   k    sJ t          t          d          t          d          z            t          d          dz  t          d          dz  z   k    sJ t          t          d          t          d          z            t          d           dz  t          d          dz  z   k    sJ t          t          d          t          d          z  t          d          z            t          d          dz  t          d          dz  z
  t          d          dz  z   k    sJ t          t          d          t          d          z  t          d          z  t          d          z            t          d          dz  t          d          dz  z   t          d          dz  z   t          d          dz  z   t          d	          dz  z   t          d          dz  z   t          dd          z   k    sJ t          t          d          t          d          z  t          d          z  t          d          z  t          d          z            t          d          dz  t          d          dz  z   dt          d          z  d
z  z   t          d
          d
z  z   t          d          dz  z   t          d	          d
z  z   t          d          d
z  z   t          d          d
z  z   t          dd
          z   t          d          dz  z   k    sJ t          t          t          t          dd          z            dz  t          t          t          dd          z            dz  z  d
t          t          dz            dz  z  z            t          dd          k    sJ d S )NrA   rT   rL   rB   rK   r`   r_   ra               rU   @   )r/   r   r   r   r   rC   rD   rE   test_TR8rt   j   sQ   s1vvc!ff}QCFF1H!44444s1vvc!ff}QCFF1H!44444s1vvc!ff}#a&&SVVAX!55555s1vvc!ff}SVV#$$Aq3q66!8(;c!ffQh(FFFFFs1vvc!ff}SVV#CFF*++Aq3r7719s1vvax'#a&&(2SWWQY>Aq	Aq>>	"" " " " s1vvc!ff}SVV#CFF*3q66122B	CFF1HqQx{*SWWRZ7#a&&(BB
	WWRZ	 "%b''"*	-/72	?ADQ	JJ J J J s2hq!nn$%%q(RA->)?)?)BBBs2a4yyRS|OTUUYabcegYhYhhhhhhhrD   c            	         t           j        } d| z  }t          |           | k    sJ t          t          d          t          d          z             dt          |           z  t          |          z  k    sJ t          t          d          t          d          z
            dt	          |           z  t	          |          z  k    sJ t          t	          d          t	          d          z
            dt	          |           z  t          |          z  k    sJ t          t	          d          t	          d          z             dt	          |          z  t          |           z  k    sJ t          t          d          dt	          d          z  z   dt	          d          z  z             t          d          dt	          |          z  t          |           z  z   k    sJ t          t          d          t          d          z   dt          d          z  t          d          z  z             dt          d          z  t          d          z  k    sJ t          t          d          t          d          z   t          d          z  dz  t          d          z             dt          d          z  t          d          z  k    sJ t          t          d          t          d          z   t          d          z   t          d          z             dt          t           j                  z  t          d          z  t          t          dd                    z  k    sJ t          t          d          t          d          t          d          z  z             t          d          t          d          t          d          z  z   k    sJ t          t          t                     t          t          t          z            z             dt	          t          t          z  dz  t          dz  z
            z  t	          t          t          z  dz  t          dz  z             z  k    sJ t          t	          t                     t	          t          t          z            z             dt	          t          t          z  dz  t          dz  z
            z  t          t          t          z  dz  t          dz  z             z  k    sJ t          t                    }t	          t                    }d	D ]	}||f||ft          t                    t          t          t          z            ft	          t                    t	          t          t          z            ffD ]} t          ||           }t          d
 |D              }t          |          }| d         j
        | d         j
        k    r+t          ||                    d                    r)|j        s"| d         j
        | d         j
        k    r||k    rJ d S )NrT   rB   rA   rg   rK   rL   r`   	   )rB   rB   )rB   )rx   rB   )rx   rx   c                      g | ]}t          | S rC   r   .0ais     rE   
<listcomp>ztest_TR9.<locals>.<listcomp>       ///BsBx///rD   r   Ttrig)r	   rP   r0   r   r   r   r>   r=   zipr   rV   r9   expandis_Add)r:   r;   r<   ssiargsexts           rE   test_TR9r   w   s   	A	!Aq66Q;;;;s1vvA1SVV8CFF?2222s1vvA1SVV8CFF?2222s1vvA2c!ff9SVV#33333s1vvA1SVV8CFF?2222s1vv#a&& 1SVV8+,,A3q66#a&&0HHHHHs1vvA3q66#a&&011Qs1vvXc!ff_DDDDAQQ')CFF233qQxAFFFFs1vvAQ'#a&&011	#af++c!ffS!Q0001 1 1 1s1vvAs1vv%&&#a&&3q66#a&&=*@@@@@AwQqS!""bQqSUQqS[)9)9&9#ac!eack:J:J&JJJJJAwQqS!""aAaCEAaCK(8(8&8QqSUQqS[9I9I&IIIIIAAAA2 7 7a&1a&3q663qs88"4s1vvs1Q3xx6HI 	7 	7Ar1::D//$///0BBA!	QqTY..&r1888+>+>?? /CD8 /Q49!	))bAgggg	77 7rD   c                  $   t          t          t          t          z                       t	          t                     t	          t                    z  t          t                    t          t                    z  z   k    sJ t          t	          t          t          z                       t	          t                    t          t                    z  t	          t                    t          t                    z  z   k    sJ t          t	          t          t          z   t
          z                       t	          t                     t	          t                    z  t          t                    t          t                    z  z   t	          t
                    z  t	          t                    t          t                    z  t	          t                    t          t                    z  z   t          t
                    z  z   k    sJ t          t          t          t          z   t
          z                       t	          t                     t	          t                    z  t          t                    t          t                    z  z   t          t
                    z  t	          t                    t          t                    z  t	          t                    t          t                    z  z   t	          t
                    z  z
  k    sJ d S N)r   r   r:   r;   r   r<   rC   rD   rE   	test_TR10r      s   AE

Aws1vv~As1vv=====AE

s1vvc!ff}s1vvc!ff}<<<<<AEAI
a&&Q#a&&Q-	'Q/	QAQA	&A.	// / / / AEAI
a&&Q#a&&Q-	'Q/	QAQA	&A.	// / / / / /rD   c            	         t          t          d          t          d          z  t          d          t          d          z  z             t          d          k    sJ t          t          d          t          d          z  t          d          t          d          z  z
            t          d          k    sJ t          t          d          t          d          z  t          d          t          d          z  z
            t          d          k    sJ t          t          d          t          d          z  t          d          t          d          z  z             t          d          k    sJ t          t          d          t          d          z  t          d          t          d          z  z   dz             t          d          dz   k    sJ t          t          d          t          d          z  t          d          t          d          z  z   t          d          z             t          d          t          d          z   k    sJ t          dt          d          z  t          d          z  dt          d          z  t          d          z  z   t          d          z             dt          d          z  t          d          z   k    sJ t          t          d          t          d          z  t          d          t          d          t          d          z  t          d          t          d          z  z   z  z             t          d          k    sJ t          d          t          d          z  t          d          t          d          t          d          z  t          d          t          d          z  z   z  z   t          d          z  t          d          t          d          z  z   } t          |           t          |                                           cxk    rt          d          k    sn J t          t	          d          t          t
                    z  t
          z  t	          d          t          t
                    z  t
          z  z             dt	          d          z  t
          z  t          t
          t          dz  z             z  k    sJ t          t          t
                    t	          d          z  t          t
                    t	          d          z  z   t          t
                    t	          d          z  dz  z   t          t
                    t	          d          z  dz  z             dt	          d          z  t          t
          t          dz  z             z  dz  k    sJ t          t          t
                    t	          d          z  t          t
                    t	          d          z  z   t          t                    t	          d          z  dz  z   t          t                    t	          d          z  dz  z             t	          d          t          t
          t          dz  z             z  dz  t	          d          t          t          t          dz  z             z  dz  z   k    sJ t          t          t
                    t	          d          t          t
                    z  z   dt	          d          z  t          t
          t          dz  z             z  z             dt          t
                    z  k    sJ t          t          t
                    t	          d          t          t
                    z  z   dt	          d          z  t          t
          t          dz  z             z  z   dt          t
                    z  z             dt	          d          z  t          t
          t          dz  z             z  k    sJ t          t          d          t          d          z  t          d          t          d          z  z             t          d          t          d          z  t          d          t          d          z  z   k    sJ t          d	d
          }t          t	          d          t          t
                    z  |z  t	          d          t          t
                    z  |z  z             dt	          d          z  t          t
          t          dz  z             z  |z  k    sJ t          t
                    }t          t
                    }t          t                    }t          t                    }dD ]m}||z  ||z  f||z  ||z  ffD ]V}t          ||          }t          d |D              }	t          |	          }
|	|
                    d          z
  s|
j        rJ Wnt          t
                    }t          t
                    }t          t          dz            }t          t          dz            }dD ]m}||z  ||z  f||z  ||z  ffD ]V}t          ||          }t          d |D              }	t          |	          }
|	|
                    d          z
  s|
j        rJ Wnd S )NrB   rT   rA   rK   rU   rL   r`   rv   AF)commutativerw   c                      g | ]}t          | S rC   r   rz   s     rE   r}   ztest_TR10i.<locals>.<listcomp>   r~   rD   Tr   c                      g | ]}t          | S rC   r   rz   s     rE   r}   ztest_TR10i.<locals>.<listcomp>   r~   rD   )r   r   r   r   r   r=   r   r>   r   r   r   r   )eqr   r<   r   rc   rr   argsir   r   r   s              rE   
test_TR10ir      s   QAQA.//3q669999QAQA.//3q669999QAQA.//3q669999QAQA.//3q669999QAQA.233s1vvzAAAAQAQA.Q788CFFSVVOKKKK3q66#a&&1SVV8CFF?2SVV;<<	#a&&3q66   QAQQAQA)F!GGHHA   
a&&Q-#a&&As1vvAs1vv%' '(+A
/14QA
?B99biikk**4444c!ff444444aQ!DGGCFFN1$4455	$q''	!CBqDMM!" " " "QQ#a&&a.0FF477N1"1vvd1gg~a/0 1 145d1ggIc!bd(mm4KA4MN N N NQQ#a&&a.0FF477N1"1vvd1gg~a/0 1 1QA1Ha$q''#a"Q$h--"7"99: : : : Q$q''#a&&.(1T!WW9SRT]]+BBCCqQxOOOOQ$q''#a&&.(d1ggIc!bd(mm#$&'Ah/ 0 034T!WW9SRT]]3JK K K KQAQA.//As1vvAs1vv%& & & & 	s&&&AaQ!DGGCFFN1$4455	$q''	#a"Q$h--!" " " " 	AAAAAAAA2 > >sAaCj1Q3!*- 	> 	>Er5>>D//$///0Bb		AQXX4X000=AH====		> 	AAAABqD		ABqD		A2 > >sAaCj1Q3!*- 	> 	>Er5>>D//$///0Bb		AQXX4X000=AH====		>> >rD   c            	         t          t          dt          z                      dt          t                    z  t          t                    z  k    sJ t          t          dt          z                      dt          t                    dz   t          t                    dz  z   t          t                    z  t          t                    z  z  k    sJ t          t          t          t	          dd          z                      dt          t          dz            dz   t          t          dz            dz  z   t          t          dz            z  t          t          dz            z  z  k    sJ t          t          dt          z                      t          t                    dz   t          t                    dz  z   k    sJ t          t          dt          z                      t          t                    dz   t          t                    dz  z   dz  dt          t                    dz  z  t          t                    dz  z  z
  k    sJ t          t          d                    t          d          k    sJ t          t          t
          t	          dd          z            t
          t	          dd          z            t          t
          t	          dd          z            dz   t          t
          t	          dd          z            dz  z   k    sJ t          t          d          d          t          d          dz   t          d          dz  z   k    sJ t          t          d          d          t          d          k    sJ t          t          t                    t          t          dz            z  t          dz            dt          t          dz            z  k    sJ d S )NrA   rK   rT   rU   r`   )r    r   r=   r   r   r   rC   rD   rE   	test_TR11r      s   AaC>>Qs1vvXc!ff_,,,,AaC>>Q#a&&!)c!ffai!7Q ?A FGGGGGAhq!nn$%%&&	S1XXq[L3qs88Q;&AaC0QqS9:; ; ; ; AaC>>c!ffaiZ#a&&!)33333AaC>>
a&&!)c!ffai	!#aA	k#a&&!)&;;< < < < A<<3q66!!!!Bx1~~%&&8Aq>>(9::s2hqRSnnCT?U?UWX?X>X[^_abjklnobpbp_p[q[qst[t>tttttA??s1vvqyj3q661944444A??c!ff$$$$As1Q3xx1%%3qs88333333rD   c            	         t          t          t          dz            t          dt          z            z  t          t          dz            z  t          t          dz            t          t          dz            z  z            dt          t          dz            z  t          t          dz            z  t          dt          z            z  k    sJ t          t          t          dz            t          dt          z            z  t          t          dz            z  t          t          dz            t          t          dz            z  z                        t          t          t          dz            t          t          dz            z            dt          t          dz            z  k    sJ t          t          t          dz            t          t          dz            z            ddt          t          dz            z  z  k    sJ t          t          dt          z            t          t          dz            z  t          t          dz            z            t          dt          z            dt          t          dz            z  z  k    s\J t          t          dt          z            t          t          dz            z  t          t          dz            z                        t          t          t                    t          t          dz            z            dt          t          dz            z  k    sJ d S )NrT   rA   rK   r`   ra   rB   )r!   r   r=   r   rC   rD   rE   
test__TR11r      sa   QqS#ac(("3qs88+S1XXc!A#hh->?@@	#ac((
3qs88C!HH$% % %%*3qs88C!HH+<S1XX+Es1Q3xxPSTUVWTWPXPXGX+Y%Z%Z% % %QqS#ac(("##qQqSz1111QqS#ac(("##q!C!HH*~5555QqS#ac(("3qs88+,,AaC!C!HH*0EEEEuSQRSTQTXXVYZ[\]Z]V^V^M^_bcdefcf_g_gMgGhGhEEEQAaC!!Qs1Q3xxZ//////rD   c                     t          t          t          t          z                       t          t                    t          t                    z   t          t                     t          t                    z  dz   z  k    sJ t          t          t          t          z   t          z                       t          t                    t          t                    t          t                    z   t          t                     t          t                    z  dz   z  z   dt          t                    t          t                    z   t          t                    z  t          t                     t          t                    z  dz   z  z
  z  k    sJ t          t          t          t          z                      t          t          t          z            k    sJ d S r\   )r"   r   r=   r>   r?   rC   rD   rE   	test_TR12r      s/   AE

AQ3q66'#a&&.12DEEEEEAEAI	Q3q66CFF?c!ffWSVV^a%78	8	SVVc!ff_c!ff$s1vvgc!ffnq&899	;; ; ; ; AaC>>S1XX%%%%%%rD   c                     t          t          d          t          d          z            t          d           t          d          z  t          d          t          d          z  z
  dz   k    sJ t          t          d          t          d          z            dt          d          t          d          z  z   t          d          t          d          z  z   k    sJ t          t          d          t          d          z  t          d          z            t          d           t          d          z  t          d          t          d          z  z
  dz   t          d          z  k    sJ t          t          d          t          d          z  t          d          z            t          d           t          d          z  dz   t          d          t          d          z  z
  t          d          z  k    sJ d S )NrT   rA   rL   rB   )r$   r   r   rC   rD   rE   	test_TR13r      s   As1vv3q66'#a&&.3q66#a&&="@1"DDDDDAs1vv!c!ffSVVm"3c!ffSVVm"CCCCCAs1vvc!ff$%%
a&&Q#a&&Q-	'!	+SVV34 4 4 4As1vvc!ff$%%
a&&Q!	c!ffSVVm	+SVV34 4 4 4 4 4rD   c                  ~    t          t          t                    t          t                    z             dk    sJ d S NrA   )r   r   r=   r   rC   rD   rE   test_Lr     s1    SVVc!ff_""""""rD   c                     t          t          d          dz  t          d          dz  z   t          t          dz            z             t	          dd          k    sJ t          t          d          t          t                    z  t          d          t          t                    z  z             dt          d          z  t          t          t          dz  z             z  k    sJ t          t                    dz  t          t                    dz  z
  t          t                    dz  z   dt          t                    dz  z  z   } t          |           t          t                    dz  dt          t                    dz  z  z
  dz   k    sJ t          t          j	        t          dt          z            dz  z
            t          t                    dz  k    sJ t          t          t                    t          t                    t          t                    z
  z  t          t                    t          t                    t          t                    z   z  z             t          d          t          t          t          z   t          dz  z             z  k    sJ t          t          d          t          t                    z  dz  t          t                    dz  z             t          t          t          dz  z             k    sJ t          dt          dt          z            dz  dz  z
  t          t                    dz  z
  t          t                    dz  z
            t          t                    dz   t          t                    dz  z   k    sJ t          t          t          t	          dd          z                      t          t          dz            k    sJ t          t          t          dz            t          t          t	          dd          z            z  t          t          t	          dd          z            z  t          t          t	          dd          z            z            t	          dd	          k    sJ t          t          t          t	          d
d          z            t          t          t	          dd          z            z   t          d          t          t          t	          dd          z            z  t          t          t	          d
d          z            z  z
            t          d           k    sJ t          t          d          t          d          z            t          d          t          d          z  k    sJ t          d t          d          D              }t          |          t          d          dt          d          z  z  k    sJ t          t          t                    t          t          t                    dz            z             t          t                    t          t          t                    dz            z   k    sJ t          dt          t                    dz  z  dt          t                    z  z   dt          d          z  t          t                    dz  z  z   dt          d          z  t          t                    z  z   t          dt          z            dz   z            d
t          t                    z  dt          d          z  t          t                    z  z   k    sJ d S )N2   rA   r`   rT   rK   rB   rv      rp   rU   rL   c                 2    g | ]}t          d |z            S rA   r   r{   rM   s     rE   r}   ztest_fu.<locals>.<listcomp>#  s"    ...qQT...rD   r_   i   i#   )r5   r   r   r   r   r   r=   r>   r	   rP   r:   r;   r   r   range)r   exprs     rE   test_fur     s   c"ggqj3r77A:%BqD		122hq!nnDDDDd1ggc!ffntAwws1vv~-..!DGG)CBqDMM2IIIII 
QSVVQY	Q	*Qs1vvqy[	8Bb66SVVQY3q6619,q00000afs1Q3xxz!""c!ffai////c!ffc!ffs1vvo&QQ#a&&)AABBQAEBqDL!!!" " " " d1ggc!ffnQQ)**c!bd(mm;;;;a#ac((A+a-#a&&!)+c!ffai788	Q
SVVQY    c"Xa^^#$$%%RU3333c"Q$iiBx1~~-...s2hq!nn3D/E/EEc"XVWYZ^^J[F\F\\]]aijkmoapapppppBx2#b!R&8"9"99DGGC8TUWY??HZD[D[<[\_`bcklmoqcrcr`r\s\s<ssu u	a    c!ffSVVmAs1vv----..E"II.../Dd88s4yy$s1vv+..... c!fftCFFAI&''3q66DQOO+CCCCCs3q6619}r#a&&y(1T!WW9SVVQY+>>4773q66AQQUXYZ[\Y\U]U]`aUacdd	#a&&1T!WW9SVV##$ $ $ $ $ $rD   c                  t   t          t          t                    t          t                    z  d           t	          t                    k    sJ t          t          t                    t          t                    z  d           t          t                    t          t                    z  k    sJ d S )Nc                       | j                     S r   	count_opsr]   s    rE   r^   z test_objective.<locals>.<lambda>.  s    {q{}} rD   )measurec                 "     | j                      S r   r   r]   s    rE   r^   z test_objective.<locals>.<lambda>0  s    ~ rD   )r5   r   r=   r   r   rC   rD   rE   test_objectiver   -  s    c!ffSVVm%<%<===FF   c!ffSVVm%=%=>>>FF3q66M     rD   c                  X    d } t          t          g dddi| d d          dk    sJ d S )Nc                 2    t          d | j        D              S )Nc                     g | ]
}||d z  z  S r   rC   r   s     rE   r}   zAtest_process_common_addends.<locals>.<lambda>.<locals>.<listcomp>7  s     222aQqS222rD   )r   r   r]   s    rE   r^   z-test_process_common_addends.<locals>.<lambda>7  s    322162223 rD   )rB   rA   rT   rK   evaluateFc                     | dz  S r   rC   r]   s    rE   r^   z-test_process_common_addends.<locals>.<lambda>9  s
    qs rD   )key2key1r`   )r6   r   )dos    rE   test_process_common_addendsr   4  sa     
4	3B!#|||"De"D"Db]( ( (+DE E E E E ErD   c                     t          t          t                    t          t                              dddt          t          dfk    sJ t          dt          t                    z  dt          t                    z            dddt          t          dfk    sJ t          t          t                    t	          t                    z  t          t                    t	          t                    z            t	          t                    ddt          t          dfk    sJ t          t          t                    t          d           t	          t                    z  d          dddt          t          dz  d	fk    sJ t          t          t                    t	          t                    d          t          d          ddt          t          d
z  d	fk    sJ t          t          t                    t	          t                     d          t          d          ddt          t          d
z  d	fk    sJ t          t          d          t          t                    z  t          d           t	          t                    z  d          dt          d          z  ddt          t          dz  d	fk    sJ t          t          d           t          t                    z  t          d           t	          t                    z  d          dt          d          z  ddt          t          dz  d	fk    sJ t          t          t                    t          d          z  t	          t                    t          d          z  d          t          d          dz  ddt          t          dz  d	fk    sJ t          t          d           t          t                    z  t	          t                    z  t          d           t	          t                    z  t	          t                    z  d          dt          d          z  t	          t                    z  ddt          t          dz  d	fk    sJ t          t          t                    t	          t                              J t          t          t                    t	          t                              J t          dt          t                    z  t	          t                               J t          t          t                    t          d           t	          t                    z            J t          t          t                    t          t                    z  t	          t                    t	          t                    z            J t          t          t                    t          t                    z  t	          t                    t	          t                    z            J t          t          d           t          t                    z  t          d          t	          t                    z  t	          t                    z  d          	 J t          t          d          t          t                    z  t          d          d          J t          t          d          t          t          d          z  t	          d          t          d          z  d          J t          t          d          t          d          z  t          d          t	          d          z  d          J d S )NrB   TrA   rg   rx   rT   )twor`   FrK   rL   rU   )	r7   r   r=   r>   r   r   r   r?   r   rC   rD   rE   test_trig_splitr   <  s   c!ffc!ff%%!Q1a)>>>>>aAh3q66	**q!RAt.DDDDDc!ffSVVmSVVCFF]33	QAq!T"# # # # c!fftAwwhs1vvo4888	
Ar1bdE"# # # #c!ffc!ff$///	a!Q2a4'( ( ( (c!ffs1vvg4000	a!RBqD%() ) ) )d1ggc!ffntAwwhs1vvo4@@@	
477Ar1bdE*+ + + +tAwwhs1vvoQxADAAA	DGGQ1bdE*+ + + +c!ffT!WWnc!ffT!WWn$???	aAq!RT5)* * * *tAwwhs1vvoc!ff,!WWHSVVOCFF". . .	DGGCFF	Aq!RT512 2 2 2 c!ffc!ff%%---c!ffc!ff%%---aAhQ((000c!fftAwwhs1vvo..666c!ffSVVmSVVCFF]33;;;c!ffSVVmSVVCFF]33;;;tAwwhs1vvotAwws1vv~c!ff'<$GGG   d1ggd1ggos1vv4888@@@d1ggd1ajj(#a&&Q-TBBBJJJc!ffSVVmSVVCFF]===EEEEErD   c            	      \   t          dt          d t          d          D              z            dt          d          z  t          d          z  t	          d          z  t	          d          z  t	          d          z  dt          d	          z  t          d
          z  z  k    sJ t          t
                    t
          k    sJ t          dt
          z            dt
          z  k    sJ t	          t          dz            t	          t          t          dd          z            z  t	          t          t          dd          z            z  } t          t          |                     t          dd          k    sJ t          d t          d	d          D              } t          t          t          |                               t          d	d          k    sJ t	          t
                    t	          t
          dz            z  }t          |          |k    sJ t	          t
          dz            t          t
          dz            z  t	          t
                    d
z  z  }t          |          t          dt
          z            t	          t
                    dz  z  dz  k    sJ d S )NrU   c                 ,    g | ]}t          |          S rC   r   r   s     rE   r}   z!test_TRmorrie.<locals>.<listcomp>a  s    666qCFF666rD   r_   rr   rp   rL   rv   rs   rB   rT   rA   rK   rx   ra   c                 H    g | ]}t          d |z  t          z  dz             S )rA      )r   r   r   s     rE   r}   z!test_TRmorrie.<locals>.<listcomp>g  s*    444!c!Q$r'"*oo444rD   r   i   )
r1   r   r   r   r   r=   r   r   r/   r+   )er   s     rE   test_TRmorrier   `  s!   Ac66E"II6667788	#b''	#b''#a&& Q'A.3q66	#a&&0@AB B B BA;;!AaC==AaCBqD		#b!Q'(((RA->)?)??Ax{{xA....44uQ||4445As8A;;  HQ$6$66666	QAaCBB<<2	QqS#ac((	3q6619	$BB<<3qs88CFFAI-a///////rD   c            	      T   t          dt          t                    dz  z            dt          t                    dz  z  k    sJ t          t          t                    dz  t          t          dz            dz  z            dt          t                    z  dz  t          dt          z            dz  z   t          t                     dz  t          dt          z            dz  z   t	          dd          z   z  k    sJ t          dd          D ]} t          t          t                    | z  t          t          t                    | z                      sJ t          t          t                    | z  t          t          t                    | z                      sJ d S )NrB   rA   rT   rK   ra   )r3   r   r=   r   r   r   r9   )ks    rE   test_TRpowerr   q  sX   1SVVQY;1SVVQY;....3q6619S1XXq[())	
3q66!c!A#hhqj	 CFF719s1Q3xxz#9HQNN#JKL L L L1a[[ A A!#a&&!)WSVVQY-?-?@@@@@!#a&&!)WSVVQY-?-?@@@@@@A ArD   c                  p
   ddl m} m} t          t                    dz  t          t                    dz  z   }t          |          \  }} |t          |                    t          dt          z            k    sJ t          t          t          t          z                       \  }} |t          |                    t          t                    t          t                    z   t          t                    t          t                    z  dz   z  k    sJ t                      } | t          t                    |          t          t          t          |z            z  k    sJ  | t          t                    |          t          t          t          |z            z  k    sJ  | t          t                    |          t!          t          |z            t          z  k    sJ  | t          t                    |          t#          t          |z            k    sJ  | t%          t                    |          t'          t          |z            k    sJ  | t)          t                    |          t+          t          |z            t          z  k    sJ t          t
          t          t          t$          t(          fD ].} |t,                    } | | ||          |          |k    sJ / |t#          t          t          z  t.          z             t                    t          t          t.          t          z  z             k    sJ  |t          t          t          z  t.          z             t                    t          t          t.          t          z  z             t          z  k    sJ  |t          t          t          z  t.          z             t                    t          t          t.          t          z  z             t          z  k    sJ  |t!          t          t          z  t.          z             t                    t          t          t.          t          z  z             t          z  k    sJ  |t'          t          t          z  t.          z             t                    t%          t          t.          t          z  z             k    sJ  |t+          t          t          z  t.          z             t                    t)          t          t.          t          z  z             t          z  k    sJ d S )Nr   )_osborne	_osborneirA   rB   )sympy.simplify.fur   r   r   r=   r   r4   r5   r   r>   r"   r
   r   r   r   r   r   r   r   r   r   r   r   r?   )	r   r   r   r   rW   r   drV   rc   s	            rE   test_hyper_as_trigr   z  s   55555555	a!d1ggqj	 BDAq1RUU88tAaCyy    a!e%%DAq1T!WW::$q''DGG+d1ggd1ggo.ABBBBBA8DGGQ1S1XX:----8DGGQ1S1XX:----8DGGQ3qs88A:----8DGGQ3qs88++++8DGGQ3qs88++++8DGGQ3qs88A:----tT4t4 1 1DHHy!Q++q00000 9S1q\\1%%a!A#g66669S1q\\1%%a!A#gq88889S1q\\1%%a!A#gq88889S1q\\1%%a!A#gq88889S1q\\1%%a!A#g66669S1q\\1%%a!A#gq888888rD   c                     d t           t          t          fD             \  } }}t          | |z   |  |z  dz   z            t	          t           t          z             k    sJ t          | |z   | |z  dz
  z            t	          t           t          z              k    sJ t          |  |z
  | |z  dz
  z            t	          t           t          z             k    sJ | |z   |  |z  dz   dz  z  d| z  d|z  z
  z  d| |z  dz
  z  z  }t          |                                          dt	          t           t          z             z  t	          t           t          z             z  t	          t                     t	          t                    z   dz
  z  dz  k    sJ t          t	          t                    t          t                    z            t	          t                    t          t                    z  k    sJ | t          d          z   |  |z  dz   z  }t          |          |k    sJ | |z   dz   dz  |  |z  dz   z  }t          |          |k    sJ | |  |z  dz   z  }t          |          |k    sJ | |z   t           dz   z                                  dz  | |z  dz
  z  }t          |          t           dz   dz   t	          t           t          z             z  k    sJ d S )Nc                 ,    g | ]}t          |          S rC   )r   r   s     rE   r}   ztest_TR12i.<locals>.<listcomp>  s    ,,,Q#a&&,,,rD   rB   rA   rT   )	r:   r;   r<   r#   r   r   r=   r   r   )tatbtcr   s       rE   
test_TR12ir     s   ,,1a),,,JBB"r'RCFQJ'((CAJJ6666"r'BrEAI&''CAJJ;66662#(RUQY'((CAJJ6666
r'RCFQJ?	"BrEAbDL	11beai=	AB
3q1u::c!a%jj #a&&3q66/A"56q89 9 9 9QA3q66#a&&=0000
s1vv+B
	#B99????
r'A+	B3r6A:	&B99????	bSVaZB99????Ga!e
$
$
&
&	*BrEAI	6B99!a%!CAJJ.......rD   c                  	   t          t                    dz
  t          t                    dz   z  } t          t                    dz   }t          |           |k    sJ t          d| z            d|z  k    sJ t          t          t                    dz
  dz  t          t                    dz   dz  z            |dz  k    sJ t          t          t                    dz
  dz  t          t                    dz   dz  z            |dz  t          t                    dz   z  k    sJ t          t          t                    dz
  dz  t          t                    dz   dz  z            |dz  t          t                    dz
  z  k    sJ t          t                    dz
  t          z  t          t                    dz   t          z  z  } t          |           | k    sJ t          t                    dz
  t          z  t          t                    dz   z  } t          |           | k    sJ t          t                    dz
  dz  t          t                    dz   z  } t          |           | k    sJ t          dd          }t          t          t                    dz
  |z  t          t                    dz   |z  z            ||z  k    sJ t          t          t                    dz
  |z  t          t                    dz   |z  z            t          t                    dz   |z  k    sJ t          t                    dz
  |dz   z  t          t                    dz   |z  z  } t          |           t          t                    dz
  ||z  z  | fv sJ t          t          t                    dz
  t          t                    dz   z            t          t                    dz   k    sJ t          t                    dz   t          t                    dz
  z  }t          t                    dz
  dz  t          t                    dz   z  }dt          t                    dz
  z  dt          t                    dz   z  z  }t          ||z  |z  t          dz
  z            dt          dz
  t          t                    dz  z  t          t                    dz  z  z  k    sJ d S )	NrB   rA   rT   rM   TrN   irK   )r   r=   r   r%   r>   r   r   )r   ansrM   p1p2p3s         rE   	test_TR14r     s   
a&&1*s1vvz	"Bq6619*C88s????"::3Q!aQ!a/00CF::::Q!aQ!a/00CFCFFQJ4GGGGGQ!aQ!a/00CFCFFQJ4GGGGG
a&&1*q#a&&1*q	(B88r>>>>
a&&1*q#a&&1*	%B88r>>>>
a&&1*q#a&&1*	%B88r>>>>T"""AQ!aQ!a/00CF::::Q!aQ!a/00c!ffaiZ!OCCCC
a&&1*A	A
Q	.B88Q!S!V+R00000Q!c!ffqj)**s1vvqyj8888
a&&1*s1vvz	"B
a&&1*aQ!	$B
SVVaZ.1c!ffqj>	*B2b!a% !!S1q5#a&&!)*;CFFAI*E%FFFFFFFrD   c                     t          ddt          t                    dz  z  z
            t          t                    dz   k    sJ t	          ddt          t                    dz  z  z
            t          t                    dz   k    sJ t          ddt          t                    dz  z  z
            dt          t                    dz  z
  k    sJ d S )NrB   rA   )r&   r   r=   r   r'   r   r   r(   rC   rD   rE   test_TR15_16_17r     s    Ac!ffaiK  SVVQYJ....Ac!ffaiK  SVVQYJ....Qs1vvqy[!!QQ]222222rD   c                  b   t          t          dz             dt          dfk    sJ t          t          dz
            dt          dfk    sJ t          t           dz             dt          dfk    sJ t          t           dz
            dt          dfk    sJ t          dt          z  dz             dt          dfk    sJ t          t          t          z  t          z
            t          t          dfk    sJ t          t           t          z  t          z             t           t          dfk    sJ d S )NrB   rx   rA   )r8   r=   r>   rC   rD   rE   test_as_f_sign_1r     s   q1u!Q****q1u!Q++++rAv2q"+----rAv2q!*,,,,qsQwAq!9,,,,qsQwAq":----r!tax  aRBK//////rD   N)esympy.core.addr   sympy.core.mulr   sympy.core.numbersr   r   r   sympy.core.singletonr	   sympy.core.symbolr
   r   r   %sympy.functions.elementary.hyperbolicr   r   r   r   r   r   (sympy.functions.elementary.miscellaneousr   r   (sympy.functions.elementary.trigonometricr   r   r   r   r   r   sympy.simplify.powsimpr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   rb   r3   r4   r5   r6   r7   r8   sympy.core.randomr9   	sympy.abcr:   r;   r<   r=   r>   r?   rF   rH   rQ   rY   rd   rh   rk   rm   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   rD   rE   <module>r      sB               0 0 0 0 0 0 0 0 0 0 " " " " " " 6 6 6 6 6 6 6 6 6 6 V V V V V V V V V V V V V V V V A A A A A A A A S S S S S S S S S S S S S S S S * * * * * *                                                             
 1 0 0 0 0 0 & & & & & & & & & & & & & & & &9 9 91 1 1!Q !Q !QH= = =
K 
K 
K1 1 11 1 1= = =
i i i7 7 78/ / /4> 4> 4>n4 4 4$0 0 0& & &4 4 4# # ##$ #$ #$L  E E E!F !F !FH0 0 0"A A A9 9 9</ / /&G G G83 3 30 0 0 0 0rD   