
    MZdܧ                        d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlm Z  d dl!m"Z"m#Z# d dl$m%Z%m&Z&m'Z' d dl(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP d dlQmRZRmSZS d dlTmUZU  e#d      \  ZVZWZXZYd ZZd Z[d Z\d Z]d Z^d  Z_d! Z`d" Zad# Zbd$ Zcd% Zdd& Zed' Zfd( Zgd) Zhd* Zied+        Zjd, Zkd- Zld. Zmd/ Znd0 Zod1 Zpd2 Zqd3 Zrd4 Zsd5 Ztd6 Zud7 Zvd8 Zwd9 Zxd: Zyd; Zzd< Z{d= Z|d> Z}d? Z~d@ ZdA ZdB ZedC        ZdD ZdE ZdF ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zy^)_    )	fuzzy_and)_sympify)dispatch)XFAILraises)QAdd)BasicExpr)FunctionMul)FloatIRationalnanoopizooPow)S)Symbolsymbols)exp	exp_polarlog)ceilingfloor)sqrt)cossin)AndImpliesNotOrXor)Reals)simplify)trigsimp)
RelationalEquality
UnequalityGreaterThanLessThanStrictGreaterThanStrictLessThanRelEqLtLeGtGeNeis_leis_gtis_geis_ltis_eqis_neq)Interval	FiniteSet)combinationszx,y,z,tc                     ddl m}  j                  rj                  sJ t        t	        t               t              h            D ]  }t        j                   fv r k(   k7  g}t	        t        |            dk(  r|d   dk(  sJ  k7  s k(  rJ  |t         fd      sJ  |t         fd      sJ  |t         fd      sJ  |t         fd      s}J  k(   k7  g}t	        t        |            d	k(  sJ  k   k   kD   k\  g}g d
g dg dgj                  |      }|dk(  r |d   s" j                  j                  k7  s	J |d   sJ  c  y)Nr   )r      Fc                       k  S N abs   B/usr/lib/python3/dist-packages/sympy/core/tests/test_relational.py<lambda>zrel_check.<locals>.<lambda>*       QU     c                       k  S rG   rH   rI   s   rL   rM   zrel_check.<locals>.<lambda>+       Q!V rO   c                       kD  S rG   rH   rI   s   rL   rM   zrel_check.<locals>.<lambda>,   rN   rO   c                       k\  S rG   rH   rI   s   rL   rM   zrel_check.<locals>.<lambda>-   rQ   rO      )TTFF)FTFT)FFTTT)sympy.testing.pytestr   	is_numberrangelentyper   NaNset	TypeErrorindexis_Float)rJ   rK   r   dovEis   ``     rL   	rel_checkrc   "   s{   +;;1;;&&Ca$q'*+, 55QF?q&AF$As1v;!#!55Qa00)]333)^444)]333)^444q&AF$As1v;!###Ua1fAa2A 0..0 16a  Avt

ajj 899tt!1-. rO   c                      t        t        t        d      t        t        t              k(  sJ t	        dd      } t        | d      t
        j                  u sJ y )N!=pTpositiver   )r-   xyr:   r   r   truerf   s    rL   test_rel_nerm   ?   sE    aD!R1X--- 	sT"Aa8qvvrO   c                     t        t        t        d      } | j                  t        t              } t        | t              sJ | j                  t        k(  sJ | j                  t        k(  sJ t        t        t        d      } | j                  t        t              } t        | t              sJ | j                  t        k(  sJ | j                  t        k(  sJ t        t        t        d      } | j                  t        t              } t        | t              sJ | j                  t        k(  sJ | j                  t        k(  sJ t        t        t        d      } | j                  t        t              } t        | t              sJ | j                  t        k(  sJ | j                  t        k(  sJ t        t        t        d      } | j                  t        t              } t        | t              sJ | j                  t        k(  sJ | j                  t        k(  sJ t        t        d      } | j                  t        d      t        j                  u sJ | j                  t        d      t        j                   u sJ y )N==>=<=><r   rE   )r-   ri   rj   subsz
isinstancer.   lhsrhsr0   r1   r2   r3   r5   r   rk   false)es    rL   test_rel_subsr{   G   s   1aA	q!Aa"""55A::55A::1aA	q!Aa%%%55A::55A::1aA	q!Aa"""55A::55A::1aA	q!Aa*+++55A::55A::1aA	q!Aa(((55A::55A::
1aA66!Q<166!!!66!Q<177"""rO   c                     t         t         dz  z   } t        t        | d      }t        t        t         t         dz  z   d      |k(  sJ t	        t        t         t         dz  z         |k(  sJ t        t        | d      }t        t        t         t         dz  z         |k(  sJ t        t        | d      }t        t        t         t         dz  z         |k(  sJ t        t        | d      }t        t        t         t         dz  z         |k(  sJ t        t        | d      }t        t        t         t         dz  z         |k(  sJ t        t        | d      }t        t        t         t         dz  z         |k(  sJ y )NrT   ro   rs   rq   rr   rp   re   )
ri   r-   rj   r4   r5   r6   r7   r8   r9   r:   )rz   ress     rL   test_wrappersr~   p   s*   	AqDA
Q4
 Cq!ad(D!S(((aQT?c!!!
Q3
CaQT?c!!!
Q4
 CaQT?c!!!
Q3
CaQT?c!!!
Q4
 CaQT?c!!!
Q4
 CaQT?c!!!rO   c                     t        t        t              sJ t        dd      } t        | d      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        t         d      t        j                  u sJ t        t         d      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        t         d      t        j                  u sJ t        t         d      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ y )Nrf   Trg   r   rE   FrH   )r5   ri   r   r   ry   r:   rk   rl   s    rL   
test_Eq_Ner      s/   a8O8 	sT"Aa8qww
 dA;!''!!!eQ<177"""qb!9qb!9dA;!&&   eQ<166!!!qb!9qb!9b!9b!9rO   c                  (   ddl m}  t        t        d      j	                          | t        dz
  t        d      k(  sJ t        t        d        t        t        d        t        t        d        t        t        d	        t        t        d
        y )Nr   PolyrE   ZZ)domainc                  >    t        t        d      j                         S NrE   )r:   ri   as_polyrH   rO   rL   rM   ztest_as_poly.<locals>.<lambda>       2a8#3#3#5 rO   c                  >    t        t        d      j                         S r   )r9   ri   r   rH   rO   rL   rM   ztest_as_poly.<locals>.<lambda>   r   rO   c                  >    t        t        d      j                         S r   )r8   ri   r   rH   rO   rL   rM   ztest_as_poly.<locals>.<lambda>   r   rO   c                  >    t        t        d      j                         S r   )r7   ri   r   rH   rO   rL   rM   ztest_as_poly.<locals>.<lambda>   r   rO   c                  >    t        t        d      j                         S r   )r6   ri   r   rH   rO   rL   rM   ztest_as_poly.<locals>.<lambda>   r   rO   )sympy.polys.polytoolsr   r5   ri   r   r   AttributeErrorr   s    rL   test_as_polyr      sf    *a8a!eQt!<<<<
>56
>56
>56
>56
>56rO   c                     t         t         kD  t        j                  u sJ t         t          kD  t        j                  u sJ t         dkD  t        j                  u sJ t         t         k  t        j                  u sJ t         t          k  t        j                  u sJ t         dk  t        j                  u sJ t         t         k\  t        j                  u sJ t         t          k\  t        j                  u sJ t         dk\  t        j                  u sJ t         t         k  t        j                  u sJ t         t          k  t        j                  u sJ t         dk  t        j                  u sJ t          t         kD  t        j                  u sJ t          t          kD  t        j                  u sJ t          dkD  t        j                  u sJ t          t         k  t        j                  u sJ t          t          k  t        j                  u sJ t          dk  t        j                  u sJ t          t         k\  t        j                  u sJ t          t          k\  t        j                  u sJ t          dk\  t        j                  u sJ t          t         k  t        j                  u sJ t          t          k  t        j                  u sJ t          dk  t        j                  u sJ y r   )r   r   ry   rk   rH   rO   rL   test_rel_Infinityr      s<    G"HFqvvG"H   Fqww"H2#I!&&   !G"H2#I!''!!!!GC"H   C2#I!''!!!C!GC"HC2#I!''!!!C!GC2I!''!!!CB3J166!!!C1H   C2I!&&   CB3J166!!!C1HrO   c                  4   t        ddd      } t        ddd      }t        ddd      }t        ddd      }| |t        f}||t         f}|D ]  }|dk  t        j                  u sJ |dkD  t        j                  u sJ |dk  t        j                  u sJ |dk\  t        j                  u sJ |D ]^  }||k  t        j                  u sJ ||kD  t        j                  u sJ ||k  t        j                  u sJ ||k\  t        j                  u r^J  |D ]  }||k  t        j                  u sJ ||kD  t        j                  u sJ ||k  t        j                  u sJ ||k\  t        j                  u sJ ||k  t        j                  u sJ ||kD  t        j                  u sJ ||k  t        j                  u sJ ||k\  t        j                  u rJ   |D ]  }|dk  t        j                  u sJ |dkD  t        j                  u sJ |dk  t        j                  u sJ |dk\  t        j                  u sJ |D ]^  }	||	k  t        j                  u sJ ||	kD  t        j                  u sJ ||	k  t        j                  u sJ ||	k\  t        j                  u r^J   y )	Nri   T)extended_positiveinfiniterj   ru   )extended_negativer   wrE   )r   r   r   ry   rk   )
ri   rj   ru   r   inf_setninf_setinf1inf2ninf1ninf2s
             rL   !test_infinite_symbol_inequalitiesr      s   sdT:AsdT:AsdT:AsdT:A!RjG1rc{H .qQWW$$$qQVV###	agg%%%	aff$$$ 	,D4KAGG+++4KAGG+++DLQVV+++DLQVV+++		,  	.E5LQWW,,,5LQVV+++EMagg---EMaff,,,DLQVV+++DLQWW,,,TMaff,,,TMagg---	..,  
.	aff$$$	agg%%%
qvv%%%
qww&&& 	.EEMagg---EMagg---UNqvv---UNqvv---		.
.rO   c                     t        dd      t        j                  u sJ t        dd      t        j                  u sJ t	        dd      t        j                  u sJ t	        dd      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        dd      t        j                  u sJ t        t        d      t        j                  u sJ t	        t        d      t        j                  u sJ t        t        d        t        t        d        t        t        d        t        t        d        t        dd	      } t        d
d	      }t        t        | z   t        |z         t        j                  u sJ y )Nr   rE   rT   c                  "    t        t        d      S NrT   r8   r   rH   rO   rL   rM   ztest_bool.<locals>.<lambda>      bAh rO   c                  "    t        t        d      S r   r9   r   rH   rO   rL   rM   ztest_bool.<locals>.<lambda>  r   rO   c                  "    t        t        d      S r   r6   r   rH   rO   rL   rM   ztest_bool.<locals>.<lambda>  r   rO   c                  "    t        t        d      S r   r7   r   rH   rO   rL   rM   ztest_bool.<locals>.<lambda>  r   rO   z.000000000000000000001 z.0000000000000000000001)r5   r   rk   ry   r:   r6   r7   r8   r9   r   r   r\   r   r   rI   s     rL   	test_boolr      s   a8qvva8qwwa8qwwa8qvva8qvva8qwwa8qvva8qwwa8qvva8qvva8qwwa8qvva8qwwa8qvva8qwwa8qvv
9&'
9&'
9&'
9&'&+A',Ab1fb1f(((rO   c                  $   t         t        k  t        t         t              k(  sJ t         t        k  t        t         t              k(  sJ t         t        kD  t	        t         t              k(  sJ t         t        k\  t        t         t              k(  sJ y rG   )ri   rj   r6   r7   r8   r9   rH   rO   rL   test_rich_cmpr     sb    EbAhFr!QxEbAhFr!QxrO   c                  v   ddl m}   | dd      } | dd      } | dd	      } | d
d      }t        |d      j                         t        j
                  u sJ t        |d      j                         t        |d      k(  sJ t        |d      j                         t        j
                  u sJ t        |d      j                         t        j                  u sJ t        |d      j                         t        j
                  u sJ t        |d      j                         t        j
                  u sJ t        |d      j                         t        |d      k(  sJ t        |d      j                         t        j                  u sJ t        t        d      j                         t        t        d      k(  sJ y )Nr   )r   rf   Trg   n)negativenp)nonpositivennnonnegativerE   )sympy.core.symbolr   r8   doitr   rk   r9   r7   ry   r6   r5   ri   )r   rf   r   r   r   s        rL   	test_doitr     sL   (sT"AsT"A	$	'B	$	'Ba8==?aff$$$a8==?bAh&&&a8==?aff$$$a8==?agg%%%a8==?aff$$$b!9>>qvv%%%b!9>>r"ay(((b!9>>qww&&&a8==?bAh&&&rO   c                  P   t        d      t        d      t        d      k(  sJ t        d      t        dd      k(  sJ t        d      t        dd      k(  sJ t        d      t        d      k(  sJ t        d      t        d      k7  sJ t        d      t        dd      k7  sJ t        d      t        dd      k7  sJ t        d      t        d      k7  sJ t        d      t        d      k(  sJ t        d      t        dd      k(  sJ t        d      t        dd      k(  sJ t        d      t        d      k(  sJ t        d      t        d      k7  sJ t        d      t        dd      k7  sJ t        d      t        dd      k7  sJ t        d      t        d      k7  sJ t	        d      t        dd      k(  sJ t	        d      t        dd      k(  sJ t	        d      t        dd	      k(  sJ t	        d      t        d      k(  sJ t	        d      t        dd      k7  sJ t	        d      t        dd      k7  sJ t	        d      t        dd	      k7  sJ t	        d      t        d      k7  sJ t        d      t        dd
      k(  sJ t        d      t        dd      k(  sJ t        d      t        d      k(  sJ t        d      t        dd
      k7  sJ t        d      t        dd      k7  sJ t        d      t        d      k7  sJ dk\  t        dd
      k(  sJ dk\  t        dd      k(  sJ dk\  t        d      k(  sJ dk\  t        dd
      k7  sJ dk\  t        dd      k7  sJ dk\  t        d      k7  sJ t        d      t        dd      k(  sJ t        d      t        dd      k(  sJ t        d      t        d      k(  sJ t        d      t        dd      k7  sJ t        d      t        dd      k7  sJ t        d      t        d      k7  sJ dk  t        dd      k(  sJ dk  t        dd      k(  sJ dk  t        d      k(  sJ dk  t        dd      k7  sJ dk  t        dd      k7  sJ dk  t        d      k7  sJ t        d      t        dd      k(  sJ t        d      t        dd      k(  sJ t        d      t        d      k(  sJ t        d      t        dd      k7  sJ t        d      t        dd      k7  sJ t        d      t        d      k7  sJ dkD  t        dd      k(  sJ dkD  t        dd      k(  sJ dkD  t        d      k(  sJ dkD  t        dd      k7  sJ dkD  t        dd      k7  sJ dkD  t        d      k7  sJ t        d      t        dd      k(  sJ t        d      t        dd      k(  sJ t        d      t        d      k(  sJ t        d      t        dd      k7  sJ t        d      t        dd      k7  sJ t        d      t        d      k7  sJ dk  t        dd      k(  sJ dk  t        dd      k(  sJ dk  t        d      k(  sJ dk  t        dd      k7  sJ dk  t        dd      k7  sJ dk  t        d      k7  sJ ddlm}  t!        d      D ]c  }	  | dd      rt"        dfnt"        df\  }} | | d|             | dd      r | | d|            z  dvrnLt%        t&        fd       e t)        fddD              sJ t)        fddD              sJ t)        fddD              sJ t)        fddD              sJ t)        fd d!D              sJ t)        fd"d#D              sJ y )$Nri   r   ro   eqrE   re   <>nerp   gerq   lerr   gtrs   lt)randintd   i     )ro   r   re   r   r   rp   r   rq   r   rr   r   rs   r   z:=z+=z-=z*=z/=z%=c                      t        d       S r   r-   )relation_typeri   s   rL   rM   z%test_new_relational.<locals>.<lambda>  s    :aM#B rO   c              3   R   K   | ]  }t        d |      j                  dk(     yw)r   ro   Nr-   rel_op.0opri   s     rL   	<genexpr>z&test_new_relational.<locals>.<genexpr>  %     Jrz!Q#**d2J   $')r   ro   c              3   R   K   | ]  }t        d |      j                  dk(     yw)r   re   Nr   r   s     rL   r   z&test_new_relational.<locals>.<genexpr>  s-      - !Q#**d2 -r   )r   r   re   c              3   R   K   | ]  }t        d |      j                  dk(     yw)r   rr   Nr   r   s     rL   r   z&test_new_relational.<locals>.<genexpr>  %     Hbz!Q#**c1Hr   )r   rr   c              3   R   K   | ]  }t        d |      j                  dk(     yw)r   rs   Nr   r   s     rL   r   z&test_new_relational.<locals>.<genexpr>  r   r   )r   rs   c              3   R   K   | ]  }t        d |      j                  dk(     yw)r   rp   Nr   r   s     rL   r   z&test_new_relational.<locals>.<genexpr>  r   r   )r   rp   c              3   R   K   | ]  }t        d |      j                  dk(     yw)r   rq   Nr   r   s     rL   r   z&test_new_relational.<locals>.<genexpr>  r   r   )r   rq   )r   r5   r-   r.   r:   r/   r9   r0   r7   r1   r8   r2   r6   r3   sympy.core.randomr   rW   chrr   
ValueErrorall)r   rb   strtypelengthr   ri   s       @@rL   test_new_relationalr   '  s   sAa8z!Q''''a8z!Q----a8z!Q----a8x1~%%%a8z!Q''''a8z!Q----a8z!Q----a8x1~%%%a9
1b))))a9
1b$////a9
1b$////a9B'''a9
1a((((a9
1a....a9
1a....a9A&&&a8z!Q----a8z!Q----a8z!Q----a8z!Q''''a8z!Q----a8z!Q----a8z!Q----a8z!Q''''a8z!Q----a8z!Q----a8{1a((((a8z!Q----a8z!Q----a8{1a((((Fz!Q----Fz!Q----F{1a((((Fz!Q----Fz!Q----F{1a((((a8z!Q----a8z!Q----a8x1~%%%a8z!Q----a8z!Q----a8x1~%%%Fz!Q----Fz!Q----Fx1~%%%Fz!Q----Fz!Q----Fx1~%%%a8z!Q,,,,a8z!Q----a8(A....a8z!Q,,,,a8z!Q----a8(A....EjAs++++EjAt,,,,E'1----EjAs++++EjAt,,,,E'1----a8z!Q,,,,a8z!Q----a8~a++++a8z!Q,,,,a8z!Q----a8~a++++EjAs++++EjAt,,,,EnQ****EjAs++++EjAt,,,,EnQ**** *3Z D.5amsEl#sOGV#GAv$67Mq!}F);!<< %C C   	zBCD J\JJJJ -+- - - -HKHHHHHKHHHHJ\JJJJJ\JJJJrO   c                     t         t        t        t        t        t
        fD ]  }  | t        t              t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd        y )	Nc                      d z   S Nr   rH   rels   rL   rM   z,test_relational_arithmetic.<locals>.<lambda>      !C% rO   c                      d z  S r   rH   r   s   rL   rM   z,test_relational_arithmetic.<locals>.<lambda>  r   rO   c                      d z  S r   rH   r   s   rL   rM   z,test_relational_arithmetic.<locals>.<lambda>  s    !S& rO   c                       dz  S r   rH   r   s   rL   rM   z,test_relational_arithmetic.<locals>.<lambda>  s    #q& rO   c                      t        d       S r   r	   r   s   rL   rM   z,test_relational_arithmetic.<locals>.<lambda>      #a+ rO   c                      t        d       S r   r   r   s   rL   rM   z,test_relational_arithmetic.<locals>.<lambda>  r   rO   c                      t        d       S r   r   r   s   rL   rM   z,test_relational_arithmetic.<locals>.<lambda>  r   rO   c                      t         d      S r   r   r   s   rL   rM   z,test_relational_arithmetic.<locals>.<lambda>  s    #c1+ rO   )
r5   r:   r7   r6   r9   r8   ri   rj   r   r\   )clsr   s    @rL   test_relational_arithmeticr     s~    BBB' 	/!Qiy-(y-(y.)y.)y-.y-.y-.y-.	/rO   c                      t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        y )Nc                  &    t        t        dkD        S N   boolri   rH   rO   rL   rM   z-test_relational_bool_output.<locals>.<lambda>      d1q5k rO   c                  &    t        t        dk\        S r   r   rH   rO   rL   rM   z-test_relational_bool_output.<locals>.<lambda>      d16l rO   c                  &    t        t        dk        S r   r   rH   rO   rL   rM   z-test_relational_bool_output.<locals>.<lambda>  r   rO   c                  &    t        t        dk        S r   r   rH   rO   rL   rM   z-test_relational_bool_output.<locals>.<lambda>  r   rO   c                  4    t        t        t        d            S r   )r   r5   ri   rH   rO   rL   rM   z-test_relational_bool_output.<locals>.<lambda>      d2a8n rO   c                  4    t        t        t        d            S r   )r   r:   ri   rH   rO   rL   rM   z-test_relational_bool_output.<locals>.<lambda>  r   rO   r   r\   rH   rO   rL   test_relational_bool_outputr     sD    
9)*
9*+
9)*
9*+
9,-
9,-rO   c                     t         t        k  t        t        k  z  t	        t         t        k  t        t        k        k(  sJ t         t        k  t        t        k  z  t        t         t        k  t        t        k        k(  sJ t         t        k   t        t         t        k        k(  sJ t         t        k  t        t        k  z	  t        t         t        k  t        t        k        k(  sJ t         t        k  t        t        k  z  t        t        t        k  t         t        k        k(  sJ t         t        k  t        t        k  z  t        t         t        k  t        t        k        k(  sJ t        t         t        k  t        t        k  z  t              sJ t        t         t        k  t        t        k  z  t
              sJ t        t         t        k   t              sJ t        t         t        k  t        t        k  z	  t              sJ t        t         t        k  t        t        k  z  t              sJ t        t         t        k  t        t        k  z  t
        t        f      sJ y rG   )ri   rj   ru   tr%   r(   r'   r&   r)   rv   r0   rH   rO   rL   test_relational_logic_symbolsr     s   Ea!eAE1q5 1111Ea!e1q5!a% 0000U8s1q5z!!!Eq1uQA!6666Eq1uQA!6666Ea!eAE1q5 1111q1uQ'---q1uQ',,,Ah,,,q1u!a%('222q1u!a%('222q1uQ'"c333rO   c                     t         dkD  j                         t        dt        dd      k(  sJ t         dk\  j                         t        dt              k(  sJ t         dk  j                         t        t         ddd      k(  sJ t         dk  j                         t        t         d      k(  sJ t	        t         d      j                         t        d      k(  sJ t        t         d      j                         t        t         ddd      t        dt        dd      z   k(  sJ t         dz  dk\  j                         t        t         d      t        dt              z   k(  sJ y )Nr   TrT      )ri   as_setrA   r   r5   rB   r:   rH   rO   rL   !test_univariate_relational_as_setr    s"   E>>x2tT::::F??B///E>>xQd;;;;F??"a 0000a8??	!,,,a8??"at <Bd#!$ $ $ $ qDAI8RC#4x2#FFFFrO   c                      t         t        z  dk\  j                         t        dt              t        dt              z  t        t         d      t        t         d      z  z   k(  sJ y r   )ri   rj   r  rA   r   rH   rO   rL   #test_multivariate_relational_as_setr    sW    aC1H(1b/(1b/"A"a2#q))#* * * *rO   c                  t   t        t        t        t                    t	        t        t              k(  sJ t        t	        t        t                    t        t        t              k(  sJ t        t        t        t                    t        t        t              k(  sJ t        t        t        t                    t        t        t              k(  sJ t        t        t        t                    t        t        t              k(  sJ t        t        t        t                    t        t        t              k(  sJ y rG   )	r'   r.   ri   rj   r/   r2   r1   r3   r0   rH   rO   rL   test_Notr	    s    x1~*Q"2222z!Q HQN222 A&'8Aq>999~a#$Aq(9999{1a !^Aq%9999x1~"3Aq"9999rO   c                     t        t        t        t        d            dk(  sJ t        t        t        d      j                         t        j
                  k(  sJ t        t        t        t        d            dk(  sJ t        t        t        d      j                         t        j                  k(  sJ t        t        t        t        d            dk(  sJ t        t        t        t        d            dk(  sJ t        t        t        t        d            dk(  sJ t        t        t        t        d            dk(  sJ y )	NFevaluatezEq(x, x)zNe(x, x)zx >= xzx <= xzx > xzx < x)strr5   ri   r   r   rk   r:   ry   r9   r7   r8   r6   rH   rO   rL   test_evaluater    s    r!Q'(J666aU#((*aff444r!Q'(J666aU#((*agg555r!Q'(H444r!Q'(H444r!Q'(G333r!Q'(G333rO   c                 H    t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       y )	Nc                       kD  S rG   rH   rI   s   rL   rM   z1assert_all_ineq_raise_TypeError.<locals>.<lambda>      a!e rO   c                       k\  S rG   rH   rI   s   rL   rM   z1assert_all_ineq_raise_TypeError.<locals>.<lambda>      a1f rO   c                       k  S rG   rH   rI   s   rL   rM   z1assert_all_ineq_raise_TypeError.<locals>.<lambda>  r  rO   c                       k  S rG   rH   rI   s   rL   rM   z1assert_all_ineq_raise_TypeError.<locals>.<lambda>  r  rO   c                       kD  S rG   rH   rI   s   rL   rM   z1assert_all_ineq_raise_TypeError.<locals>.<lambda>  r  rO   c                       k\  S rG   rH   rI   s   rL   rM   z1assert_all_ineq_raise_TypeError.<locals>.<lambda>  r  rO   c                       k  S rG   rH   rI   s   rL   rM   z1assert_all_ineq_raise_TypeError.<locals>.<lambda>  r  rO   c                       k  S rG   rH   rI   s   rL   rM   z1assert_all_ineq_raise_TypeError.<locals>.<lambda>  r  rO   r   rI   s   ``rL   assert_all_ineq_raise_TypeErrorr    sS    
9m$
9n%
9m$
9n%
9m$
9n%
9m$
9n%rO   c                     ddl m} t        | |kD  |      sJ t        | |k\  |      sJ t        | |k  |      sJ t        | |k  |      sJ t        || kD  |      sJ t        || k\  |      sJ t        || k  |      sJ t        || k  |      sJ y)zDAll inequality operations on `a` and `b` result in class Inequality.r   )_InequalityN)sympy.core.relationalr  rv   )rJ   rK   
Inequalitys      rL   %assert_all_ineq_give_class_Inequalityr    s    ?a!ej)))a1fj)))a!ej)))a1fj)))a!ej)))a1fj)))a!ej)))a1fj)))rO   c                  ,    t        t        t               y rG   )r  r   ri   rH   rO   rL   'test_imaginary_compare_raises_TypeErrorr!    s    #Aq)rO   c                      t        dd      } t        ddd      }| |fD ]  }t        d|        t        d      }t        d	d
      }t        dd      }|||fD ]  }t        d|        y )Nrj   T	imaginaryru   F)complexextended_realrT   r   ri   realr%  )r   r  r  )rj   ru   r   r   ri   s        rL   test_complex_compare_not_realr*    s{    sd#AsD6AV .'1-. 	sAsAsD!AAY 4-a34rO   c                  `    t        dd      } t        t        |        t        t         |        y )Nrj   Tr#  )r   r  r   )rj   s    rL   /test_imaginary_and_inf_compare_raises_TypeErrorr,    s$    sd#A#B*#RC+rO   c                     t        t        d        t        ddd      } t        dd      }t        dd      }t        t        |       t        | z  }t        d	|       t         |z  }t        d	|       t        |z  }t        d	|       y )
Nc                  (    dt         z  dt         z  k  S )NrT   r   r   rH   rO   rL   rM   z4test_complex_pure_imag_not_ordered.<locals>.<lambda>  s    acAaCi rO   ri   T)r(  nonzerorj   r#  ru   r)  rT   )r   r\   r   r  r   r  )ri   rj   ru   r   s       rL   "test_complex_pure_imag_not_orderedr1    sz    
9'( 	st,Asd#AsD!A#Aq)	!A#Aq)	
1A)!Q/	!A)!Q/rO   c                     t         dz   t         dz   t        t        fd       z
  dk  sJ t        d      t        t        fd       j                  j
                  z
  dk  sJ t        dd	
      } d| z   d| z   t        d      t        t        fd       j                  j
                  z
  dk  sJ t         dz   dt         z  dz   t        t        fd       t        t        fd       y)ze
    A consequence of pull request #7792 is that `x - y < 0` and `x < y`
    are not synonymous.
    rT   r   c                       k  S rG   rH   ri   rj   s   rL   rM   z3test_x_minus_y_not_same_as_x_lt_y.<locals>.<lambda>,  r  rO   r   Fr  c                  $     j                         S rG   r   ineqs   rL   rM   z3test_x_minus_y_not_same_as_x_lt_y.<locals>.<lambda>0      diik rO   r   Tr#  c                  $     j                         S rG   r6  r7  s   rL   rM   z3test_x_minus_y_not_same_as_x_lt_y.<locals>.<lambda>7  r9  rO   c                       k  S rG   rH   r4  s   rL   rM   z3test_x_minus_y_not_same_as_x_lt_y.<locals>.<lambda>=  r  rO   c                       z
  dk  S r   rH   r4  s   rL   rM   z3test_x_minus_y_not_same_as_x_lt_y.<locals>.<lambda>>  s    a!eai rO   N)r   r   r\   r6   rw   rx   r   )r   r8  ri   rj   s    @@@rL   !test_x_minus_y_not_same_as_x_lt_yr=  %  s    
 	
AA	AA
9m$q5199aU#D
9)*88dhh"""sd#A	AA	AAaU#D
9)*88dhh""" 	
AA	!aA
9m$
9'(rO   c                     dd l } t        t        t              t        j                  u sJ t        t        t              t        j                  u sJ t        t        j                  t        j                  dz  t        t        t         f}t        t        | j                  |            t        j                  u sJ t        | j                  |      t              t        j                  u sJ t        t        | j                  |            t        j                  u sJ t        | j                  |      t              t        j                  u sJ y )Nr   r   )randomr.   r   r   ry   r/   rk   ri   ZeroOner   r   choice)r?  As     rL   test_nan_equality_exceptionsrD  A  s    C(((c3166))) 
AFFAEE!GRbS)ACq)*agg555FMM!$c*agg555c6==+,666fmmA&,666rO   c            	          t         t        j                  t        d      t        j                  dz  t        t        d      t
        t
         t        f	D ]  } t        | t                y )N
   r   g?)ri   r   r@  rA  r   r   r   r  )qs    rL    test_nan_inequality_raise_errorsrH  O  sF     2aQsVR"cB 0'3/0rO   c                  ^    t         t        t        dd      fD ]  } t        | t                y )Nru   Tr#  )r   r   r   r  r   )rs    rL   test_nan_complex_inequalitiesrK  V  s+     fSD12 0'3/0rO   c                      t        t        d        t        t        d        t        t        d        t        t        d        y )Nc                      t         dkD  S r   r   rH   rO   rL   rM   z4test_complex_infinity_inequalities.<locals>.<lambda>^  
    cAg rO   c                      t         dk\  S r   rN  rH   rO   rL   rM   z4test_complex_infinity_inequalities.<locals>.<lambda>_  
    cQh rO   c                      t         dk  S r   rN  rH   rO   rL   rM   z4test_complex_infinity_inequalities.<locals>.<lambda>`  rO  rO   c                      t         dk  S r   rN  rH   rO   rL   rM   z4test_complex_infinity_inequalities.<locals>.<lambda>a  rQ  rO   r   rH   rO   rL   "test_complex_infinity_inequalitiesrT  ]  s,    
9o&
9&'
9o&
9&'rO   c                     t         t        t        j                  t        j                  dz  t
        t        t         f} | D ]Y  }| D ]R  }t        ||      ||kD  k(  sJ t        ||      ||k  k(  sJ t        ||      ||k\  k(  sJ t        ||      ||k  k(  rRJ  [ t        t        j                  t        j                  dz  t
        t        t         fD ]z  }t        t         |d      t         |kD  k(  sJ t        t         |d      t         |k  k(  sJ t        t         |d      t         |k\  k(  sJ t        t         |d      t         |k  k(  rzJ  t        t        j                  t        j                  dz  t
        t        t         fD ]z  }t        |t         d      |t         kD  k(  sJ t        |t         d      |t         k  k(  sJ t        |t         d      |t         k\  k(  sJ t        |t         d      |t         k  k(  rzJ  y)zAUsing the operator and functional forms should give same results.r   Fr  N)ri   rj   r   r@  rA  r   r   r8   r6   r9   r7   )rC  rJ   rK   s      rL   "test_inequalities_symbol_name_samerV  d  s    
AqvvquuQwB,A ( 	(Aa8A&&&a8A&&&a8Q'''a8Q'''		(( q"b2#. 4!Q'AE222!Q'AE222!Q'AF333!Q'AF333	4 q"b2#. 4!Q'AE222!Q'AE222!Q'AF333!Q'AF333	4rO   c            	          t         t        j                  t        j                  dz  t        t
        t        dd      fD ]   t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd	       t        t         fd
        y)zUsing the operator and functional forms should give same results.
    With complex non-real numbers, both should raise errors.
    r   rE   c                  $    t         t              S rG   r   rJ   s   rL   rM   z<test_inequalities_symbol_name_same_complex.<locals>.<lambda>      "Q( rO   c                       t         kD  S rG   r/  rY  s   rL   rM   z<test_inequalities_symbol_name_same_complex.<locals>.<lambda>      !a% rO   c                  $    t         t              S rG   r   rY  s   rL   rM   z<test_inequalities_symbol_name_same_complex.<locals>.<lambda>  rZ  rO   c                       t         k  S rG   r/  rY  s   rL   rM   z<test_inequalities_symbol_name_same_complex.<locals>.<lambda>  r\  rO   c                  $    t         t              S rG   r   rY  s   rL   rM   z<test_inequalities_symbol_name_same_complex.<locals>.<lambda>  rZ  rO   c                       t         k\  S rG   r/  rY  s   rL   rM   z<test_inequalities_symbol_name_same_complex.<locals>.<lambda>      !q& rO   c                  $    t         t              S rG   r   rY  s   rL   rM   z<test_inequalities_symbol_name_same_complex.<locals>.<lambda>  rZ  rO   c                       t         k  S rG   r/  rY  s   rL   rM   z<test_inequalities_symbol_name_same_complex.<locals>.<lambda>  ra  rO   N)	ri   r   r@  rA  r   r   r   r   r\   rY  s   @rL   *test_inequalities_symbol_name_same_complexrd  }  s    
 q"b(1a.9 *y*+y-(y*+y-(y*+y.)y*+y.)*rO   c                     ddl m} m}m}m} dt
        t        j                  t        j                  dz  t        t        t        t        t         t        t        dd      f
D ]"  || ||fD ]  t        t         fd        $ y )Nr   )r   r   r   r   foor   rE   c                              S rG   rH   )rJ   barr   s   rL   rM   z6test_inequalities_cant_sympify_other.<locals>.<lambda>  s    bCj rO   )operatorr   r   r   r   ri   r   r@  rA  r   r   r   r   r   r   r   r\   )r   r   r   r   rJ   rh  r   s       @@@rL   $test_inequalities_cant_sympify_otherrj    si    ''
Cq"ab2#sHQNK 2r2r" 	2B901	22rO   c                  ^   ddl m}  t        d|       }t        t        |      t        t        |d      k(  sJ t        t        t              j                  t        |i      }|t        t        |d      k(  sJ t        t        |      j                         }|t        t        |d      k(  sJ y )Nr   )Wildrf   )r   Fr  )
r   rl  r   r8   ri   r6   rj   rt   r9   r   )rl  rf   rz   s      rL    test_ineq_avoid_wild_symbol_fliprm    s     'Aa8r!Q////
1aq!fA1a%((((
1aA1a%((((rO   c                  6   t        d      } t        | | j                  d            sJ t        | | j                  d            sJ t        | | j                               sJ t        | d      t        t	        | j
                        d      t        t	        | j                        d      z  k(  sJ t        d      D ]8  }t        t        | |            }t        |      }|| k  t        |      | k  k(  r8J   |  k  t        |       |  k  k(  sJ t        | j
                  d      t        | j                  d      z  }|| k  sJ || k  rJ || k\  sJ || kD  rJ |dkD  sJ t        d      } t        t	        | j                  d                  }t        | |      sJ t        d      } t        t	        | j                  d	                  }t        | |      sJ t        t        t        d      dz  t        d      dz  z         d      t         j                  u sJ y )
Nz?6506833320952669167898688709329/5070602400912917605986812821504rF        r   r   rT         )r   rc   r   r   r  rf   rG  rW   r   r"   r5   r   r#   r$   rk   )rJ   rb   rJ  fisas        rL   test_issue_8245ru    s   	
KLAQB   QB   QB<5QSS2.uSXr/BBBBB2Y ,U1a[!!HA8A;?+++,
 B!G1"*+++
B-acc"
%C!8O8Qw;!8O8Qw;7N7QAQSSWAQ??QAQSSWAQ??c#a&!)c!fai'(!,666rO   c                      t        dd      } t        t         |       sJ t        t         |       t        j
                  u sJ t        t        |        sJ t        t        |        t        j
                  u sJ y )Nrf   Tr   )r   r6   r   r9   r   ry   r8   r7   rl   s    rL   test_issue_8449rw    sb    s%Arc1::rc1:   b1"::b1":   rO   c                     t        t        t        dz   z  t        t        z  z
  t        z
  dz   t        k        t        dkD  k(  sJ t        t        t        dz   z  t        t        z  z
  t        z
  dz
  t        k        t        dkD  k(  sJ t        t        t        t        dz   z  t        t        z  z
  t        z
  dz   k        t        dk  k(  sJ t        d      \  } }|  |z   | |z
  z
  dk  j                         | |k\  k(  sJ t	        d      }||  |z   z  || |z
  z  z
  dk  j                         }|| |k\  k(  sJ t
        j                  t        k  }t        |      |j                  k(  sJ t        |d      |j                  k7  sJ t        dt        t        dd      z  z  dt        z  z   dt        z  z   ddt        dz  z  dt        z  z   dt        z  z  z  z   dk        t
        j                  u sJ t        t        t              j                         t        t        t              k(  sJ t        t        dz
  d      j                         t        t        d      k(  sJ t        t        dz
  t              j                         t
        j                  k(  sJ t        dt        z  dz
  t              j                         t        t        d      k(  sJ t        dt        z  d	      j                         t        t        d      k(  sJ t        d      dz  t        d      dz  z   dz
  }t        |t        z  d      j                         t
        j                  k(  sJ t        t        t              j                         t        t        t              k(  sJ t        t        dz
  d      j                         t        t        d      k(  sJ t        t        dz
  t              j                         t
        j                  k(  sJ t        dt        z  dz
  t              j                         t        t        d      k(  sJ t        dt        z  d	      j                         t        t        d      k(  sJ t        |t        z  d      j                         t
        j                  k(  sJ t!        t        t              j                         t#        t        t              k(  sJ t!        t        dz
  d      j                         t!        t        d      k(  sJ t!        t        dz
  t              j                         t
        j                  k(  sJ t!        dt        z  dz
  t              j                         t!        t        d      k(  sJ t!        dt        z  d	      j                         t!        t        d      k(  sJ t!        |t        z  d      j                         t
        j                  k(  sJ t!        t        d
      j                         t!        t        d
      k(  sJ t!        t         d
      j                         t#        t        d      k(  sJ t!        t        d      j                         t!        t        d      k(  sJ t!        t         d      j                         t#        t        d
      k(  sJ t#        t        t              j                         t!        t        t              k(  sJ t#        t        dz
  d      j                         t#        t        d      k(  sJ t#        t        dz
  t              j                         t
        j                  k(  sJ t#        dt        z  dz
  t              j                         t#        t        d      k(  sJ t#        dt        z  d	      j                         t#        t        d      k(  sJ t#        |t        z  d      j                         t
        j                  k(  sJ t#        t        d
      j                         t#        t        d
      k(  sJ t#        t         d
      j                         t!        t        d      k(  sJ t#        t        d      j                         t#        t        d      k(  sJ t#        t         d      j                         t!        t        d
      k(  sJ t%        t        t              j                         t'        t        t              k(  sJ t%        t        dz
  d      j                         t%        t        d      k(  sJ t%        t        dz
  t              j                         t
        j                  k(  sJ t%        dt        z  dz
  t              j                         t%        t        d      k(  sJ t%        dt        z  d	      j                         t%        t        d      k(  sJ t%        |t        z  d      j                         t
        j                  k(  sJ t%        t        d
      j                         t%        t        d
      k(  sJ t%        t         d
      j                         t'        t        d      k(  sJ t%        t        d      j                         t%        t        d      k(  sJ t%        t         d      j                         t'        t        d
      k(  sJ t'        t        t              j                         t%        t        t              k(  sJ t'        t        dz
  d      j                         t'        t        d      k(  sJ t'        t        dz
  t              j                         t
        j                  k(  sJ t'        dt        z  dz
  t              j                         t'        t        d      k(  sJ t'        dt        z  d	      j                         t'        t        d      k(  sJ t'        |t        z  d      j                         t
        j                  k(  sJ t'        t        d
      j                         t'        t        d
      k(  sJ t'        t         d
      j                         t%        t        d      k(  sJ t'        t        d      j                         t'        t        d      k(  sJ t'        t         d      j                         t%        t        d
      k(  sJ t)        d      t+        d      z
  }t        |t        z  dkD        t
        j                  u sJ t        |t        z  d|z  t        z  z   dkD        t
        j                  u sJ t        |t        z  t        z   dt        z   kD        t
        j                  u sJ y )NrE   r   zq rr   rT   )ratior      r  r  )r+   ri   rj   r   r"   r   rA  	canonicalr   r   ry   r5   r#   r$   rk   r:   r9   r7   r8   r6   r   r   )rG  rJ  root2equationru   ms         rL   test_simplify_relationalr    s)
   Aq1uI!Oa'!+a/0QU;;;Aq1uI!Oa'!+a/0QV<<<A1q5	AaC!+a//0QU;;;5>DAqb1fQA%//1a1f===GE1"q&!EQUO39CCEHQ		A A;!++%%%AQ1;;...
 a"Xa^+,q"u4"==q2a4y1b5(AbD112456 7:;''B B B a8"Q(***a!eQ<  "bAh...a!eQ<  "agg---acAgq>""$1a000ac1: Bq!H,,,A	CFAI!Aac1: AFF***a8"Q(***a!eQ<  "bAh...a!eQ<  "aff,,,acAgq>""$1a000ac1: Bq!H,,,ac1: AGG+++ a8"Q(***a!eQ<  "bAh...a!eQ<  "agg---acAgq>""$1a000ac1: Bq!H,,,ac1: AFF***a92a9,,,qb": Bq!H,,,a8"Q(***qb!92a9,,,a8"Q(***a!eQ<  "bAh...a!eQ<  "aff,,,acAgq>""$1a000ac1: Bq!H,,,ac1: AFF***a92a9,,,qb": Bq!H,,,a8"Q(***qb!92a9,,,a8"Q(***a!eQ<  "bAh...a!eQ<  "agg---acAgq>""$1a000ac1: Bq!H,,,ac1: AGG+++a92a9,,,qb": Bq!H,,,a8"Q(***qb!92a9,,,a8"Q(***a!eQ<  "bAh...a!eQ<  "aff,,,acAgq>""$1a000ac1: Bq!H,,,ac1: AGG+++a92a9,,,qb": Bq!H,,,a8"Q(***qb!92a9,,, 	A1AAaC!G'''AaC!A#a%K!O$///AaC!Ga!eO$///rO   c                     t        d      \  } }}}t        d      }t        |d      j                  t        ||dz   z  ||z  z
  |z
  dz   |            sJ t        ||      j                  ||k  d      dk(  sJ t        | |d            j                  t        | |d            d       |d       |d      z
  k(  sJ t         |d      |      j                  t         |d      |      d       |d       |d      z
  k(  sJ t        | |d            j                  t         |d      |      d       |d       |d      z
  k(  sJ t         |d      |      j                  t        | |d            d       |d       |d      z
  k(  sJ t        | |      j                  t        ||      d      dk(  sJ t         |d       |d            j                  t         |d       |d            d       |d       |d      z
  k(  sJ ||k  j                  ||kD  d      dk(  sJ ||k  j                  ||k\  d      dk(  sJ ||k  j                  ||k  d      dk(  sJ ||k  j                  ||k  d      dk(  sJ | |d      k  j                  | |d      k  d       |d       |d      z
  k(  sJ  |d      |k  j                   |d      |k  d       |d       |d      z
  k(  sJ y )	Nzw:zrs  rE   TFrT   r   r  )r   r   r5   equals)r   ri   rj   ru   rs  s        rL   test_equalsr  )  s   JAq!QAa8??2aQi!A#o1A5q9:::a8??1q5$'5000a1;bAaDk40AaD1Q4K???adA;b1qk40AaD1Q4K???a1;b1qk40AaD1Q4K???adA;bAaDk40AaD1Q4K???a8??2a8T*e333adAaD>  AaD!A$6!A$1+EEEE>>!a%&$...E>>!q&$'5000E>>!a%&%///E>>!a%&%///!HQ1Xt,!qt;;;aD1HQqTAXt,!qt;;;rO   c                      t         t        k  j                  t        t         kD  k(  sJ t         t        k  j                  t        t         k\  k(  sJ t        t         t        d      j                  t        t        t         d      k(  sJ t	        t         t        d      j                  t	        t        t         d      k(  sJ t         t        k\  j                  t        t         k  k(  sJ t         t        kD  j                  t        t         k  k(  sJ y )NFr  )ri   rj   reversedr5   r:   rH   rO   rL   test_reversedr  <  s    EA&&&Fa(((aU#,,1a%0HHHHaU#,,1a%0HHHHFa(((EA&&&rO   c            
         t         t        z   t        k  t         dz   dkD  t         dk  t        d      t         kD  t         dz  t          t        z  kD  t	        ddd      fD  cg c]  } | j
                   }} |D  cg c]  } | j
                   c} |k(  sJ |D  cg c]  } | j                  j
                   c} |k(  sJ t        d |D              rJ |D  cg c]>  } | j                  j                  | j                  | j                  d      j
                  @ }} |D  cg c]  } | j
                   c} |k(  sJ |D  cg c]  } | j                  j
                   c} |k(  sJ t        d |D              rJ t        t        t         k  t         t        kD        j
                  t        j                  u sJ y c c} w c c} w c c} w c c} w c c} w c c} w )NrT   r   Fr  c              3   z   K   | ]3  }|j                   j                  xr |j                  j                    5 y wrG   rw   	is_Numberrx   r   rb   s     rL   r   z!test_canonical.<locals>.<genexpr>P  +     Fq155??:155??'::F   9;c              3   z   K   | ]3  }|j                   j                  xr |j                  j                    5 y wrG   r  r  s     rL   r   z!test_canonical.<locals>.<genexpr>U  r  r  )ri   rj   ru   r   r8   r{  r  anyfuncrx   rw   r5   rk   )rb   cs     rL   test_canonicalr  E  s   	A		A		A	!q	1r!t
1a% 
 	 	A 	 "##AAKK#q(((*+,QAJJ  ,111FAFFFFJKLQ	6	@	@LAL!"#AAKK#q(((*+,QAJJ  ,111FAFFFFa!eQU%%///!	 $, 	M#,s%    F59F:F?AGG	=Gc                      t        dd      } | t        k  | t         k\  cxk(  rdk(  sJ  J t        d      } | t        |       k\  sJ | t        |       k  dk(  sJ | t        |       k  sJ | t        |       kD  dk(  sJ y )Nri   Tr'  F)r   r   r!   r    ri   s    rL   test_issue_8444_nonworkingtestsr  Y  s    $AGrc*d*****Aa==aLU"""
??
Nu$$$rO   c                     t        d      } t        | t        |             t        | t        |       d      k(  sJ t        | t        |             t        | t        |       d      k(  sJ t	        | t        |             t	        | t        |       d      k(  sJ t        | t        |             t        | t        |       d      k(  sJ t        dd      }|t        |      kD  dk(  sJ |t        |      k  dk(  sJ y )Nri   Fr  rb   T)integer)r   r8   r!   r9   r6   r    r7   )ri   rb   s     rL   test_issue_8444_workingtestsr  e  s    Aaq?bE!Hu====aq?bE!Hu====a1gaj5 AAAAa1gaj5 AAAAT"AaLU"""
Nu$$$rO   c                      t        d      dz  t        d      dz  z   dz
  } | j                  du sJ d| t        z  z   }t	        t        |d            t        j                  u sJ y )NrE   rT   Fr   )r#   r$   is_comparabler   r+   r5   r   ry   )drz   s     rL   test_issue_10304r  p  s]    A	CFAI!A??e###	AaCABq!H(((rO   c                      t        dd      t        dz  t        z  z   } t        t        t
        t        dz  z  | z        j                  t        dz  t              t        t        t
        t        z  | z        k(  sJ y )NrE   rz  r  r   )r   ru   rj   r5   ri   r   replace)r  s    rL   test_issue_18412r  w  s[    	!Q!a%!)	#AaadQ''1a0Bq"q&1*4EEEErO   c                     t        d      } t        dd      }t        dd      }t        dd      }t        ddd      }t        d	dd
      }t        ddd
      }t        ddd      }t        ddd      }t        ddd      }	t        dd      }
t        dd
d      }t        dd| z  dz   z  d      j                  t        u sJ t        dd| z  dz   z  d      j                  | t        j
                        t        j                  u sJ t        dd|z  dz   z  d      t        j                  u sJ t        j                  t        j                  }}t        ||      |u sJ t        ||      ||fvr||k7  sJ t        d|z   d|z         ||fvr||k7  sJ t        ||      |u sJ t        ||	      |u sJ t        dt        t        z  z   t        t        z        |u sJ t        t        t        z  dt        t        z  z         |u sJ t        dt        t        z  z   dt        t        z  z         |u sJ t        dt        t        z  z   dt        |z  z         |u sJ t        dt        t        z  z   d|z         |u sJ t        t        t        d      t        t        z  z         |u sJ t        t        t              |u sJ t        dd      }t        dd      }t        |t        z  |      ||fvsJ t        ||      |u sJ t        ||      ||fvr||k7  sJ t        t        t              |u sJ t        ||z  d      |u sJ t        ||z  d      |u sJ t        ||z  d      |u sJ t        |
|z  d      |u r|
|z  dk7  sJ t        t         k(  sJ t        t        t               |u sJ t        t        t               |u sJ t        ||       ||fvsJ t        ||dz   z  d      t        j                  u sJ t        dd      }t        |d|z        t        j                  u sJ t        dd      }t        ||dz
  z  d      |u sJ y ) Nri   infT)finite)r   r   infx)r   r&  zinf~xFzinf~x2infp)r   r   infp1infn)r   r   ru   )zeronz)r  r  rE   rT   rJ  r'  rb   r#  r   o)oddrf   rg   )r   r5   r  rt   r   ComplexInfinityrk   ry   r   r   r   r"   r   )ri   finr  r   r  infnxinfnx2r  r  r  r  r0  TFrJ  rb   r  rf   s                     rL   test_issue_10401r  |  sF   A
%
%C
%$
'C6D)D6D=D Gd%@EXEBF6DDADGddCE6DDAD3T"Ddt4Ga1qk1""b(((a1qk1""1a&7&78AFFBBBa3mQ177***66177qAc3<1c4=A&3$;66a#gq4x A.3$;>>dE?adD>Qa!B$h""""adA"H"""a!B$hAbD!Q&&&a!B$hAdF
#q(((a!B$hD!Q&&&
 c47QrT>"a'''c2;!sAsd#Aac1:aV###dE?aeVQF*u>>c2;!c$h?ac#gq>Qc#gq>Qd7lA!#$w,1)<==3$;;cC4=Ab2#;!cC4=A&&&c37mQ177***Aa1:   d#AaQiq   rO   c                      t        dd      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ y )NTF)r5   rH   rO   rL   test_issue_10633r    sS    dE?e###eT?e###dD>T!!!eUt###rO   c                      t        d      } t        t        | t                    dk(  sJ t        t        | t                     dk(  sJ y )Nri   z	Eq(x, oo)z
Eq(x, -oo))r   r  r5   r   r  s    rL   test_issue_10927r    s=    Ar!Ry>[(((r!bSz?l***rO   c                     t        d      } | t        k  t        j                  u sJ | t        kD  t        j                  u sJ t        d      }t        |      dt        ddt        d|z
        z  z
  d|z  dt        d|z
        z  dz
  z  z         z  z   }|dk\  t        j                  u sJ t        dd	      D cg c]Q  }t        t        j                  |            t        k  r*t        t        t        j                  |dz               k  r|S c}g d
k(  sJ dD ]D  }t        j                  |      }t        t        |      t              sJ t        |t              rDJ  t        t        j                  d      t        j                  d            sJ t        dd	      D cg c]9  }t        t        j                  |            t        j                  |      kD  s8|; c}g k(  sJ t        dd	      D cg c]9  }t        j                  |      t        t        j                  |            k  s8|; c}g k(  sJ y c c}w c c}w c c}w )Nz%905502432259640373/288230376151711744rT   rF     r  rE   r   ro  2   )ro        !   %   +   0   )ro     r     )	r   r   r   ry   rk   r"   rW   r   rc   )rJ  r`   urf   rb   s        rL   test_issues_13081_12583_12534r    s   89AFqwwFqvvQAQ!DaQUm+ac1T!a%[=13D.EEFFFAFqvv R} *!bdd1g#(244A;''  *-IJ J J   DDG!b)))B  RTT"XrttBx((( R}D!a(9BDDG(CADJJJR}D!Q(24472C(CADJJJ!* EDs   9AH?$9II89I	2I	c                  R   ddl m}  t        t        t	        t              z  dt        t              z  z
  d      }|j                          | t        t        t        t	        t              z  dt        t              z  z
  d      t              k(  sJ t        t        dz  t        t        dz        z   t        t              z   d      }|j                          | t        t        t        d      t        t              z  t        dz  z   t        t              z   d      t              k(  sJ y )Nr   )ConditionSetr   rT   )	sympy.sets.conditionsetr  r5   ri   r#   r$   r  r*   r"   )r  result1result2s      rL   test_issue_18188r    s    43q6Ac!fH$a(G>>|Ar!CF(Qs1vX2Eq/I5QQQQAQqS	!CF*A.G>>|Ar$q'$q'/AqD2H3q62QST/UW\]]]]rO   c                  T   t         h} t        t        fD ]  }t        j                  t        j
                  fD ]I  } |t         t        j                        }|j                  | k(  sJ |j                  j                  | k(  rIJ   |t         d      j                  t               k(  rJ  y r   )	ri   r5   r:   r   rk   ry   binary_symbolsr  r[   )ansrs  r   r   s       rL   test_binary_symbolsr    s    #CV / 	5A1affB$$+++;;--444	5 Aw%%.../rO   c            	           dD ]f  t         j                  t        dk  t        t        t              fD ]5   dddt
        t         j                  fD ]  t        t         fd        7 h y )N)rs   rq   rr   rp   rE   g?l        c                      t               S rG   r   rK   r   r`   s   rL   rM   ztest_rel_args.<locals>.<lambda>  s    *Q2*> rO   )	r   rk   ri   r%   rj   r   rA  r   r\   r  s   @@@rL   test_rel_argsr    sg     % @&&!a%Q+ 	@A1eQ. @y">?@	@@rO   c                  <   t        t        t        z   t        t        z
        } | j                  t              dt        z  k(  sJ | j                  t        d       j
                  t        t        t        t         fk(  sJ | j                  t        d      j
                  t        t        t        t         fk(  sJ dD ]^  }t        t        d|      j                  t              t        k(  sJ t        dt        |      j                  t              t        k(  r^J  y )NrT   r  F)TFNr   )r5   ri   rj   rewriter
   args)r   rz   s     rL   test_Equality_rewrite_as_Addr    s    	AE1q5	B::c?ac!!!::cD:)..1aQB-???::cE:*//Aq!aR=@@@  6!Q#++C0A555!Q#++C0A5556rO   c                      t        t        t        t        z   z  t        dz  t        t        z  z         } t        |       dk(  sJ y )NrT   F)r:   ri   rj   r+   rY  s    rL   test_issue_15847r    s4    
1ac7AqD1Q3JAA;%rO   c                  B   t        t        t              } | j                  t	        t        t              k(  sJ t	        t        t              } | j                  t        t        t              k(  sJ t        t        t        z   t        t        z
        } | j                  t        t        t        z   t        t        z
        k(  sJ t         t        t
        t        t        t        fD ];  } |t        t              j                  j                   |t        t              k(  r;J  y rG   )	r5   ri   rj   negatedr:   r9   r6   r8   r7   r   rs  s     rL   test_negated_propertyr    s    	AqB::Aq!!!	AqB::Aq!!!	AE1q5	B::AE1q5))))"b"b"% 2Aw&&!Aq'1112rO   c                     t        t        t              } | j                  t        t         t               k(  sJ t	        t        t              } | j                  t	        t         t               k(  sJ t        t        t        z   t        t        z
        } | j                  t        t         t        z
  t        t        z
        k(  sJ t         t        t
        t        t        t        fD ];  } |t        t              j                  j                   |t        t              k(  r;J  t         t        t
        t        t        t        fD ]=  } |t         t              j                  j                   |t         t              k(  r=J  t         t        t
        t        t        t        fD ]=  } |t        t               j                  j                   |t        t               k(  r=J  t         t        t
        t        t        t        fD ]?  } |t         t               j                  j                   |t         t               k(  r?J  y rG   )	r5   ri   rj   reversedsignr:   r9   r7   r8   r6   r  s     rL   test_reversedsign_propertyr  "  s   	AqB??b!aRj(((	AqB??b!aRj(((	AE1q5	B??b!aQ////"b"b"% <Aw##00AaG;;;< "b"b"% >!Qx$$11Qr1X===> "b"b"% >QBx$$11Qq1"X===> "b"b"% @!aRy%%22aQBi???@rO   c                     t         t        t        t        t        t
        fD ]O  }  | t        t              j                  j                   | t        t              j                  j                  k(  rOJ  t         t        t        t        t        t
        fD ]Q  }  | t         t              j                  j                   | t         t              j                  j                  k(  rQJ  t         t        t        t        t        t
        fD ]Q  }  | t        t               j                  j                   | t        t               j                  j                  k(  rQJ  t         t        t        t        t        t
        fD ]S  }  | t         t               j                  j                   | t         t               j                  j                  k(  rSJ  y rG   )
r5   r:   r9   r8   r7   r6   ri   rj   r  r  )rs  s    rL   #test_reversed_reversedsign_propertyr  9  s]   "b"b"% NAw,,!Q0D0D0M0MMMMN "b"b"% P!Qx  --A2q1F1F1O1OOOOP "b"b"% PQBx  --1qb1F1F1O1OOOOP "b"b"% ,!aRy!!..qb1"I""++, 	, ,,rO   c            	         d } d } |  |t         t         kD                |  |t         t         k\                |  |t        t         t                             |  |t        t         t                             |  |t        t         k                |  |t        dt        z  z
  t          dt        dz  z  z   dz
  k               t        t         k\  j
                  t         t        k  k(  sJ y )Nc                 b    t        | d      D ]   \  }}|j                  |j                  k(  r J  y r   )rC   r{  )listofformsform1form2s      rL   test_different_formsz5test_improved_canonical.<locals>.test_different_formsI  s2    (a8 	6LE5??eoo555	6rO   c                 ^    | | j                   | j                  | j                   j                  gS rG   )r  r  )exprs    rL   generate_formsz/test_improved_canonical.<locals>.generate_formsM  s*    dmmT%6%6**, 	,rO      rT      )ri   rj   r5   r:   r   r{  )r  r  s     rL   test_improved_canonicalr  H  s    6, QB/0aR011qb	231qb	23Q/0QqSA2!Q$;?(BCD!G17+++rO   c                     t        d      \  } }}t        t        | ||      t        ddd            }t        t        | ||      t        ddd            }|j                  |j
                  k(  sJ |j                  |j
                  k(  sJ y )Nza b crE   rT   r   r  r  rz  )r   r5   rB   r:   r{  r  )rJ   rK   r  rC  Bs        rL   test_set_equality_canonicalr  [  sz    gGAq!
9Q1yAq12A
9Q1yAq12A;;!**$$$;;!**$$$rO   c                     t        dt        z        t        dt        z        }} t        | |      }t	        |      |k(  sJ t	        t        | |z   t        d                  }t        |t              sJ |j                  t        t        dz        t        j                  u sJ t	        t        t        t              dz  t        t              dz  z   d            t        j                  u sJ y )NrT   r  rE   )r$   ri   r#   r5   r,   r"   rv   rt   r   r   rk   )sr  r   changeds       rL   test_trigsimpr  e  s    qs8S1XqA	AqBB<2 r!a%a)*Ggr"""<<2a4 AFF***Bs1vqy3q619,a01QVV;;;rO   c            	         t        dt        z  t        dz   z  dz   dt        z        j                         t        t        dz  t        dd             t	        t        dz   t        dd            fv sJ t	        dt        z  t        dz   z  dz    dt        z        j                         t        t        dz  t        dd             t	        t        dz   t        dd            fv sJ t        dz  dz   t        dz  dz
  z  dt        z  z   dt        dz  z  k\  j                         t        dz  dt        z  z   dk\  t        dz   dt        z  z
  dk  fv sJ y )Nr   rE   r  rT   )r9   ri   r+   r   r7   rH   rO   rL   'test_polynomial_relation_simplificationr  s  sC   ac1q5kAoqs#,,.2adXa]N3KRQRTUQUPUW_`acdWeMf2gggg!QUa "Q$'002r!Q$!A7OQSUVXYUYTY[cdegh[iQj6kkkkT!Vad1fac!Qq!tV+557QTAaCZ1_QRTUQUPUXYZ[X[P[_aPa;ccccrO   c                     t        t        t        z   t        t        z
        j                         t        t        d      k(  sJ t	        t         t        z   t         t        z
        j                         t	        t        d      k(  sJ t        dt        z  t        z   dt        z  t        z   dz
        j                         dk(  sJ dt        z  t        z   dt        z  t        z   dz
  kD  j                         dk(  sJ dt        z  t        z   dt        z  t        z   dz
  k  j                         dk(  sJ dt        z  t        z   dt        z  t        z   dz   k  j                         dk(  sJ t        d      \  } }}}}}}t        | |z   |z   d|z  z   d|z  |z
  |z         j                         t        | | |z
  |z   |z
  |z         k(  sJ y )Nr   rT   r   FTza b c d e f g)r9   ri   rj   r+   r7   r5   r   r6   )rJ   rK   r  r  rz   rs  gs          rL   0test_multivariate_linear_function_simplificationr  y  s   a!eQU$$&"Q(222qb1fqb1f&&(Bq!H444acAgqsQw{#,,.%777aC!GacAgk!++-555aC!GacAgk!++-666aC!GacAgk!++-555!/2Aq!Q1aa!eai!A#oqsQw{+5572a!a!aRSAS;TTTTrO   c                      t        t        t              d      j                         t        t        t              d      k(  sJ y r   )r5   r#   ri   r+   rH   rO   rL   test_nonpolymonial_relationsr    s-    c!fa=!!#r#a&!}444rO   c                      t        t        d        t        t        d        t        t        d        t        t        d        y )Nc                  :    t        t               t                     S rG   )r;   r   rH   rO   rL   rM   ztest_18778.<locals>.<lambda>      eEGUW5 rO   c                  :    t        t               t                     S rG   )r<   r   rH   rO   rL   rM   ztest_18778.<locals>.<lambda>  r  rO   c                  :    t        t               t                     S rG   )r=   r   rH   rO   rL   rM   ztest_18778.<locals>.<lambda>  r  rO   c                  :    t        t               t                     S rG   )r>   r   rH   rO   rL   rM   ztest_18778.<locals>.<lambda>  r  rO   r   rH   rO   rL   
test_18778r     s.    
956
956
956
956rO   c                      ddl m}   G fdd|       t         dd       dd            sJ t         dd      t        d            J t	         dd       dd            sJ y)	zc

    This test exists to ensure backwards compatibility.
    The method to use is _eval_is_eq
    r   r   c                   "    e Zd Z fdZ fdZy)test_EvalEq.<locals>.PowTestc                 V    t        j                  t        |      t        |            S rG   r   __new__r   )r   baser   PowTests      rL   r  z$test_EvalEq.<locals>.PowTest.__new__  s    --$#GGrO   c                     t        |       k(  rOt        |      k(  r@| j                  d   |j                  d   k(  xr | j                  d   |j                  d   k(  S y y Nr   rE   )rY   r  rw   rx   r  s     rL   _eval_Eqz%test_EvalEq.<locals>.PowTest._eval_Eq  sW    CyG#S	W(<xx{chhqk1PchhqkSXXa[6PP )=#rO   N)__name__
__module____qualname__r  r  )r  s   rL   r  r    s    	H	QrO   r  r   r  Nr  )sympy.core.exprr   r?   r   r@   )r   r  s    @rL   test_EvalEqr    sm     %Q$ Q A!---A,444'!Q-1...rO   c                  r   t        t        t        t        j                  t              t        j
                  t              z        du sJ t        t        t        t        j                  t              t        j                  t              z  t        j                  t              z  t        j                  t               z        du sJ t        t        t        t        j                  t              t        j                  t              z  t        j                  t              z  t        j                  t              z        du sJ t        t        t        z   t        t        z   t        j                  t              t        j
                  t              z        du sJ t        dt        t        z  z   dt        t        z  z   t        j                  t              t        j
                  t              z        du sJ t        t        t        d      t        j                  t                    sJ t        t        t        d      t        j                  t                     du sJ t        t        t        d      t        j                  t                    du sJ t        t        t        d      t        j                  t                    du sJ t        t        t        d      t        j                  t                     sJ t        t        t        d      t        j                  t                    sJ  G d dt              t              fd       } t         dd	       dd	            sJ t         dd	      t!        d	            J t         dd	       dd
            sJ y )NFrE   r   )assumptionsc                       e Zd Zd Zy)test_is_eq.<locals>.PowTestc                 T    t        j                  | t        |      t        |            S rG   r  r   r  r   s      rL   r  z#test_is_eq.<locals>.PowTest.__new__      ==htnhsmDDrO   Nr  r  r  r  rH   rO   rL   r  r        	ErO   r  c                     t        |       k(  rdt        |      k(  rUt        t        | j                  d   |j                  d         t        | j                  d   |j                  d         g      S y y r
  )rY   r   r?   r  r  s     rL   _eval_is_eqztest_is_eq.<locals>._eval_is_eq  e    9DI$8eCHHQK!=uSXXa[RURZRZ[\R]?^_`` %9rO   r   r  r  )r?   ri   rj   r   r   r  r&  r   r   r   r   r  r0  r@   r   r   r   )r  r  s    @rL   
test_is_eqr    s   Aqzz!}qxx{23u<<<Aqzz!}qzz!}4qq7IIQ__]^M_L__`diiiiAqzz!}qzz!}4q7J7J17MMPQPcPcdePffgkpppp1ac1::a=188A;675@@@1Q3!A#qzz!}qxx{:;uDDDAaDaffQi000AaDqvvayj1U:::AaDaiil3u<<<!QqTqvvay1U:::!QqTq	z222!QqTqyy|444E$ E gwa  a A!---A,444'!Q-1...rO   c                      t        t        t        d      t        j                  t                    du sJ t        t        t        d      t        j
                  t                    du sJ  G d dt              t              fd       } t         dd       dd	            sJ t         dd       dd	            sJ t         dd	       dd            sJ t         dd	       dd            sJ y )
Nr   TFc                       e Zd Zd Zy)test_is_ge_le.<locals>.PowTestc                 T    t        j                  | t        |      t        |            S rG   r  r  s      rL   r  z&test_is_ge_le.<locals>.PowTest.__new__  r  rO   Nr  rH   rO   rL   r  r!    r  rO   r  c                     t        |       k(  rdt        |      k(  rUt        t        | j                  d   |j                  d         t        | j                  d   |j                  d         g      S y y r
  )rY   r   r=   r  r  s     rL   _eval_is_gez"test_is_ge_le.<locals>._eval_is_ge  r  rO   r   	   rT   )r=   ri   r   r   r   r   r   r   r<   r;   r>   )r$  r  s    @rL   test_is_ge_ler&    s    AaD!--*+t333AaD!**Q-(E111E$ E gwa  a A!---A!---A!---A!---rO   c                     t         t        fD ]3  }  | t        d      }|j                  |j                  cxk(  r|k(  r0J  J  t        t        d      }|j                  t        t        d      k(  sJ |j                  |k(  sJ t        t        d      }|j                  t        t        d      k(  sJ |j                  |k(  sJ t        t        d      }|j                  t        t        d      k(  sJ |j                  |k(  sJ t        t        d      }|j                  t        t        d      k(  sJ |j                  |k(  sJ y r   )	r5   r:   ri   strictweakr8   r9   r6   r7   )r  r   s     rL   test_weak_strictr*    s   R *!QZyyBGG)r)))))* 
AqB77bAh99??	AqB77bAh99??	AqB991a   77b==	AqB991a   77b==rO   N)sympy.core.logicr   sympy.core.sympifyr   sympy.multipledispatchr   rU   r   r   sympy.assumptions.askr   sympy.core.addr
   sympy.core.basicr   r  r   sympy.core.functionr   sympy.core.mulr   sympy.core.numbersr   r   r   r   r   r   r   sympy.core.powerr   sympy.core.singletonr   r   r   r   &sympy.functions.elementary.exponentialr   r   r   #sympy.functions.elementary.integersr    r!   (sympy.functions.elementary.miscellaneousr"   (sympy.functions.elementary.trigonometricr#   r$   sympy.logic.boolalgr%   r&   r'   r(   r)   
sympy.setsr*   sympy.simplify.simplifyr+   sympy.simplify.trigsimpr,   r  r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   sympy.sets.setsrA   rB   	itertoolsrC   ri   rj   ru   r   rc   rm   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r!  r*  r,  r1  r=  rD  rH  rK  rT  rV  rd  rj  rm  ru  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r&  r*  rH   rO   rL   <module>r@     s   & ' + . #  "   (  E E E   " / H H @ 9 ? < <  , ,Z Z Z Z Z Z 0 "Y
1a:&#R".07 :).X)4 '&gKT
/.4"	G * *
:	4&
**
4,0&)8700(42* 2)7@!W0t<&'0( % %%)F
;!|$+ KD^/@6 
2@.,,&%<dU57/*/>.*rO   