
    MZdH                        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( Zdy))*    )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 y )N      )r   r   r<   r   r   r        >/usr/lib/python3/dist-packages/sympy/simplify/tests/test_fu.pytest_TR1rE      s;    qQx#a& !Qs1vX#a&%8888rC   c            	      x   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 y )Nr   )r(   r   r<   r   r   r   rB   rC   rD   test_TR2rG      ss    s1v;#a&Q-'''s1v;#a&Q-'''s3q6CF3q6M)*+q000rC   c                     t        dt        z  t        t        z  z        dt        z  t        z  k7  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 y )	Nr@   rA   T)half      iinteger)r   r<   r=   r)   r   r   r   r   Halfr9   r   )rL   s    rD   	test_TR2irP      s   
 1a419!A#)))As1v#a&(((As1vc!f$%QA6663q6#a&=!"aAh...3q6#a&=Q'()Qs1vXc!f_<<<Aq#a&1*%&#a&#a&1**=a*????Aq#a&1*%D1S1XaZ???AA
#$/3qvv;>>>AA
#$/3q6999AA
#$/3q6999AA
#$/3qx=@@@Q!SV#$/1S[=@@@Q!SV#$/1SV8;;;Q!SV#$/1SV8;;;Q!SV#$/1S166]?BBBQ!r"3q619,48CKNJJJQ!r"3q619,48CFAIEEEQ!r"3q619,48SVaZA2<NsSTvWXy<XXXXQ!r"3q619,48SVaZA2<NsSTvWXy<XXXXQ!aA!,48CK1"<MMMMQ!aA!,48CFaRLHHHQ!aA!,48SVaZ!OCPQFVWUWL<XXXXQ!aA!,48SVaZ!OCPQFVWUWL<XXXXT"A#a&1*qQ1"-T:c!AFF(mqb>QQQQCFQJ?3q6QB</0t<AaffHq@PPPPrC   c                  B   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 ]M  }  | t        t        dd      z        }t        |      }t        ||      r|j                  |j                  k7  rMJ  y )Nr@            )r*   r   r=   r<   r   r   r   r   r   r   r   r8   func)frL   js      rD   test_TR3rX   A   s    s1q!a%y=!"c!QU)a-&8888r!tax=SVG###r"uQw{Aw&&&3S#s+ =b!Q F!!Q'AFFaff,<<<=rC   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 y )Nc                     d| z
  S NrA   rB   r<   s    rD   <lambda>ztest__TR56.<locals>.<lambda>M   s
    !a% rC   rS   rJ   Fr@   rA   
      T   )Tr   r<   r   r   )hs    rD   
test__TR56rc   L   s{   ASVQYS!Q.#a&3q619*q.2IIIISVRZc1a/3q62:===SVQYS!Q.CFAI:>A2EEEESVQYS!Q-Q:::SVQYS!R.CFAI:>A2EEEE SVQYS!Q-Q:::SVacAgS!Q5Q!A#'9JJJJrC   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 y Nr@   rA   rJ   )r+   r   r<   r   rB   rC   rD   test_TR5rg   Y   y    s1vqy>c!faiZ!^+++s1vrz?c!frl***s1vqy>s1vqyj1nq0000rC   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 y re   )r,   r   r<   r   rB   rC   rD   test_TR6rj   _   rh   rC   c                     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 y )Nr@   rA   rS   )r-   r   r<   r   rO   r   rB   rC   rD   test_TR7rl   e   sg    s1vqy>S1XaZ!&&0000s1vqy1}QqS!hq!n!<<<<rC   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 y )Nr@   rS   rK   rA   rJ   r_   r^   r`               rT   @   )r.   r   r   r   r   rB   rC   rD   test_TR8rs   j   s   s1vc!f}QCF1H!4444s1vc!f}QCF1H!4444s1vc!f}#a&SVAX!5555s1vc!f}SV#$Aq3q6!8(;c!fQh(FFFFs1vc!f}SV#CF*+Aq3r719s1vax'#a&(2SWQY>Aq	Aq>	"" " " s1vc!f}SV#CF*3q612B	CF1HqQx{*SWRZ7#a&(BB
	WRZ	 "%b'"*	-/72	?ADQ	JJ J J s2hq!n$%q(RA->)?)BBBs2a4yRS|OTUYabcegYhhhhrC   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 cg c]
  }t        |  c} }t        |      }| d
   j                  | d   j                  k(  r(t        ||j                  d            r2|j                  s&| d   j                  | d
   j                  k7  s||k7  sJ   y c c}w )NrS   rA   r@   rf   rJ   rK   r_   	   )rA   rA   )rA   )rw   rA   )rw   rw   r   Ttrig)r   rO   r/   r   r   r   r=   r<   zipr   r   rU   r8   expandis_Add)	r9   r:   r;   ssiargsaiexts	            rD   test_TR9r   w   s   	A	!Aq6Q;;s1vA1SV8CF?222s1vA1SV8CF?222s1vA2c!f9SV#3333s1vA1SV8CF?222s1v#a& 1SV8+,A3q6#a&0HHHHs1vA3q6#a&01Qs1vXc!f_DDDAQQ')CF23qQxAFFFs1vAQ'#a&01	#aff+c!fS!Q001 1 1s1vAs1v%&#a&3q6#a&=*@@@@AwQqS!"bQqSUQqS[)9&9#ac!eack:J&JJJJAwQqS!"aAaCEAaCK(8&8QqSUQqS[9I&IIIIAAAA2 7a&1a&3q63qs8"4s1vs1Q3x6HI 	7Ar1:D$/BsBx/0BBA!		QqTYY.&r1888+>?188Q499!		)bAg7 7		77 0s   5T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 y N)r   r   r9   r:   r   r;   rB   rC   rD   	test_TR10r      sn   AE
Aws1v~As1v====AE
s1vc!f}s1vc!f}<<<<AEAI
a&Q#a&Q-	'Q/	QAQA	&A.	// / / AEAI
a&Q#a&Q-	'Q/	QAQA	&A.	// / /rC   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        | j                               cxk(  rt        d      k(  sJ  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 ]q  }||z  ||z  f||z  ||z  ffD ]X  }t        ||      }t        |D 	cg c]
  }	t        |	  c}	 }
t        |
      }|
|j                  d      z
  s|j                  sXJ  s t        t
              }t        t
              }t        t        dz        }t        t        dz        }dD ]q  }||z  ||z  f||z  ||z  ffD ]X  }t        ||      }t        |D 	cg c]
  }	t        |	  c}	 }
t        |
      }|
|j                  d      z
  s|j                  sXJ  s y c c}	w c c}	w )NrA   rS   r@   rJ   rT   rK   r_   ru   AF)commutativerv   Trx   )r   r   r   r{   r   r<   r   r=   r
   rz   r   r   r|   )eqr   r;   r}   rb   rr~   argsir   r   r   r   s               rD   
test_TR10ir      s   QAQA./3q6999QAQA./3q6999QAQA./3q6999QAQA./3q6999QAQA.23s1vzAAAQAQA.Q78CFSVOKKK3q6#a&1SV8CF?2SV;<	#a&3q6  QAQQAQA)F!GGHA  
a&Q-#a&As1vAs1v%' '(+A
/14QA
?B9biik*4c!f44444aQ!DGCFN1$445	$q'	!CBqDM!" " "QQ#a&a.0F47N1"1vd1g~a/0 145d1gIc!bd(m4KA4MN N NQQ#a&a.0F47N1"1vd1g~a/0 1QA1Ha$q'#a"Q$h-"7"99: : : Q$q'#a&.(1T!W9SRT]+BBCqQxOOOQ$q'#a&.(d1gIc!bd(m#$&'Ah/ 034T!W9SRT]3JK K KQAQA./As1vAs1v%& & & 	s&AaQ!DGCFN1$445	$q'	#a"Q$h-!" " " 	AAAAAAAA2 >sAaCj1Q3!*- 	>Er5>D$/BsBx/0Bb	AQXX4X00AHH==		>> 	AAAABqD	ABqD	A2 >sAaCj1Q3!*- 	>Er5>D$/BsBx/0Bb	AQXX4X00AHH==		>> 0 0s   'b%b*c            	      4   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 y )Nr@   rJ   rS   rT   r_   )r   r   r<   r   r   r   rB   rC   rD   	test_TR11r      sq   AaC>Qs1vXc!f_,,,AaC>Q#a&!)c!fai!7Q ?A FGGGGAhq!n$%&	S1Xq[L3qs8Q;&AaC0QqS9:; ; ; AaC>c!faiZ#a&!)3333AaC>
a&!)c!fai	!#aA	k#a&!)&;;< < < A<3q6!!!Bx1~%&8Aq>(9:s2hqRSnCT?UWX?X>X[^_abjklnobp_p[qst[t>ttttA?s1vqyj3q6194444A?c!f$$$As1Q3x1%3qs8333rC   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(  slJ 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(  sFJ 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 y )NrS   r@   rJ   r_   r`   rA   )r    r   r<   r   rB   rC   rD   
test__TR11r      s   QqS#ac("3qs8+S1Xc!A#h->?@	#ac(
3qs8C!H$% [%*3qs8C!H+<S1X+Es1Q3xPSTUVWTWPXGX+Y%Z[ %QqS#ac("#qQqSz111QqS#ac("#q!C!H*~555QqS#ac("3qs8+,AaC!C!H*0EEhuSQRSTQTXVYZ[\]Z]V^M^_bcdefcf_gMgGhhEQAaC!Qs1Q3xZ///rC   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 y r[   )r!   r   r<   r=   r>   rB   rC   rD   	test_TR12r      s    AE
AQ3q6'#a&.12DEEEEAEAI	Q3q6CF?c!fWSV^a%78	8	SVc!f_c!f$s1vgc!fnq&899	;; ; ; AaC>S1X%%%rC   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 y )NrS   r@   rK   rA   )r#   r   r   rB   rC   rD   	test_TR13r      s>   As1v3q6'#a&.3q6#a&="@1"DDDDAs1v!c!fSVm"3c!fSVm"CCCCAs1vc!f$%
a&Q#a&Q-	'!	+SV34 4 4As1vc!f$%
a&Q!	c!fSVm	+SV34 4 4rC   c                  ^    t        t        t              t        t              z         dk(  sJ y Nr@   )r   r   r<   r   rB   rC   rD   test_Lr     s!    SVc!f_"""rC   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        t        d      D cg c]  }t        d|z         c} }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 y c c}w )N2   r@   r_   rS   rJ   rA   ru      ro   rT   rK   r^   i   i#   )r4   r   r   r   r   r   r<   r=   r   rO   r9   r:   r   r   range)r   rL   exprs      rD   test_fur     s   c"gqj3r7A:%BqD	12hq!nDDDd1gc!fntAws1v~-.!DG)CBqDM2IIII 
QSVQY	Q	*Qs1vqy[	8Bb6SVQY3q619,q0000affs1Q3xz!"c!fai///c!fc!fs1vo&QQ#a&)AABQAEBqDL!!" " " d1gc!fnQQ)*c!bd(m;;;a#ac(A+a-#a&!)+c!fai78	Q
SVQY   c"Xa^#$%RU333c"Q$iBx1~-..s2hq!n3D/EEc"XVWYZ^J[F\\]aijkmoappppBx2#b!R&8"99DGC8TUWY?HZD[<[\_`bcklmoqcr`r\s<ssu	a   c!fSVmAs1v---E"I.qQT./Dd8s4y$s1v+.... c!ftCFAI&'3q6DQO+CCCCs3q619}r#a&y(1T!W9SVQY+>>473q6AQQUXYZ[\Y\U]`aUacd	#a&1T!W9SV##$ $ $ /s   =Wc                     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 y )Nc                 $     | j                          S r   	count_opsr\   s    rD   r]   z test_objective.<locals>.<lambda>.  s    {q{{} rC   )measurec                 &     | j                           S r   r   r\   s    rD   r]   z test_objective.<locals>.<lambda>0  s    ~ rC   )r4   r   r<   r   r   rB   rC   rD   test_objectiver   -  sd    c!fSVm%<=F  c!fSVm%=>F3q6M  rC   c                  J    d } t        t        g dddi| d d      dk(  sJ y )Nc                 X    t        | j                  D cg c]
  }||dz  z   c} S c c}w r   )r   r   )r<   rL   s     rD   r]   z-test_process_common_addends.<locals>.<lambda>7  s%    31662aQqS23 2s   ')rA   r@   rS   rJ   evaluateFc                     | dz  S r   rB   r\   s    rD   r]   z-test_process_common_addends.<locals>.<lambda>9  s
    qs rC   )key2key1r_   )r5   r   )dos    rD   test_process_common_addendsr   4  s9     
4B!#|"De"Db(+DE E ErC   c                  n   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 y )NrA   Tr@   rf   rw   rS   )twor_   FrJ   rK   rT   )	r6   r   r<   r=   r   r   r   r>   r   rB   rC   rD   test_trig_splitr   <  s[   c!fc!f%!Q1a)>>>>aAh3q6	*q!RAt.DDDDc!fSVmSVCF]3	QAq!T"# # # c!ftAwhs1vo48	
Ar1bdE"# # #c!fc!f$/	a!Q2a4'( ( (c!fs1vg40	a!RBqD%() ) )d1gc!fntAwhs1vo4@	
47Ar1bdE*+ + +tAwhs1voQxADA	DGQ1bdE*+ + +c!fT!Wnc!fT!Wn$?	aAq!RT5)* * *tAwhs1voc!f,!WHSVOCF".	DGCF	Aq!RT512 2 2 c!fc!f%---c!fc!f%---aAhQ(000c!ftAwhs1vo.666c!fSVmSVCF]3;;;c!fSVmSVCF]3;;;tAwhs1votAws1v~c!f'<$G   d1gd1gos1v48@@@d1gd1aj(#a&Q-TBJJJc!fSVmSVCF]=EEErC   c                     t        dt        t        d      D  cg c]  } t        |        c}  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        t        dd      D  cg c]  } t        d
| z  t        z  dz         c}  }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 y c c} w c c} w )NrT   r^   rq   ro   rK   ru   rr   rA   rS   r@   rJ   rw   r`      i   )
r0   r   r   r   r   r<   r   r   r.   r*   )rL   er   s      rD   test_TRmorrier   `  s   AcE"I6qCF6778	#b'	#b'#a& Q'A.3q6	#a&0@AB B BA;!AaC=AaCBqD	#b!Q'((RA->)??Ax{xA...uQ|4!c!Q$r'"*o45As8A; HQ$6666	QAaCBB<2	QqS#ac(	3q619	$BB<3qs8CFAI-a//// 7 5s   H9	H>c            	         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 ]p  } t        t        t              | z  t        t        t              | z              sJ t        t        t              | z  t        t        t              | z              rpJ  y )NrA   r@   rS   rJ   r`   )r2   r   r<   r   r   r   r8   )ks    rD   test_TRpowerr   q  s   1SVQY;1SVQY;...3q619S1Xq[()	
3q6!c!A#hqj	 CF719s1Q3xz#9HQN#JKL L L1a[ A!#a&!)WSVQY-?@@@!#a&!)WSVQY-?@@@ArC   c                  *   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(  r#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 y )Nr   )_osborne	_osborneir@   rA   )sympy.simplify.fur   r   r   r<   r   r3   r4   r   r=   r!   r	   r   r   r   r   r   r   r   r   r   r   r   r>   )	r   r   r   r   rV   r   drU   rb   s	            rD   test_hyper_as_trigr   z  s   5	a!d1gqj	 BDAqRU8tAaCy   a!e%DAqT!W:$q'DG+d1gd1go.ABBBBADGQ1S1X:---DGQ1S1X:---DGQ3qs8A:---DGQ3qs8+++DGQ3qs8+++DGQ3qs8A:---tT4t4 1H!Q+q0001 S1q\1%a!A#g666S1q\1%a!A#gq888S1q\1%a!A#gq888S1q\1%a!A#gq888S1q\1%a!A#g666S1q\1%a!A#gq888rC   c                     t         t        t        fD  cg c]  } t        |        c} \  }}}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	        |j                               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  j                         dz  ||z  dz
  z  }t	        |      t         dz   dz   t        t         t        z         z  k(  sJ y c c} w )NrA   r@   rS   )	r9   r:   r;   r   r"   r{   r<   r   r   )rL   tatbtcr   s        rD   
test_TR12ir     sD   #$a),Q#a&,JBB"r'RCFQJ'(CAJ666"r'BrEAI&'CAJ;6662#(RUQY'(CAJ666
r'RCFQJ?	"BrEAbDL	11beai=	AB
3q1u:c!a%j #a&3q6/A"56q89 9 9QA3q6#a&=000
s1v+B
	#B9??
r'A+	B3r6A:	&B9??	bSVaZB9??Ga!e
$
$
&	*BrEAI	6B9!a%!CAJ.... -s   I+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 y )	NrA   r@   rS   rL   TrM   irJ   )r   r<   r   r$   r=   r   r   )r   ansrL   p1p2p3s         rD   	test_TR14r     s9   
a&1*s1vz	"Bq619*C8s??":3Q!aQ!a/0CF:::Q!aQ!a/0CFCFQJ4GGGGQ!aQ!a/0CFCFQJ4GGGG
a&1*q#a&1*q	(B8r>>
a&1*q#a&1*	%B8r>>
a&1*q#a&1*	%B8r>>T"AQ!aQ!a/0CF:::Q!aQ!a/0c!faiZ!OCCC
a&1*A	A
Q	.B8Q!S!V+R0000Q!c!fqj)*s1vqyj888
a&1*s1vz	"B
a&1*aQ!	$B
SVaZ.1c!fqj>	*B2b!a% !S1q5#a&!)*;CFAI*E%FFFFrC   c                  R   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 y )NrA   r@   )r%   r   r<   r   r&   r   r   r'   rB   rC   rD   test_TR15_16_17r     s    Ac!faiK SVQYJ...Ac!faiK SVQYJ...Qs1vqy[!QQ]222rC   c                     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 y )NrA   rw   r@   )r7   r<   r=   rB   rC   rD   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///rC   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.   r/   r0   r1   ra   r2   r3   r4   r5   r6   r7   sympy.core.randomr8   	sympy.abcr9   r:   r;   r<   r=   r>   rE   rG   rP   rX   rc   rg   rj   rl   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   rC   rD   <module>r      s      0 0 " 6 6 V V A S S *       
 1 & &91!QH=
K11=
i78/4>n4$0&4##$LE!FH0"A9</&G830rC   