o
    à8Vaˆ~ ã                   @   s  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
 d dlmZmZmZ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mZmZmZ d dlmZ d dlm Z m!Z! d dl"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. d dl/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z; d dl<m=Z= d dl>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF d dlGmHZHmIZImJZJmKZKmLZL d dlMmNZNmOZO d dlPmQZQmRZRmSZSmTZTmUZU d dlVZVdd„ ZWdd„ ZXdd„ ZYdd„ ZZdd„ Z[d d!„ Z\d"d#„ Z]d$d%„ Z^d&d'„ Z_d(d)„ Z`d*d+„ Zad,d-„ Zbd.d/„ Zcd0d1„ Zdd2d3„ Zed4d5„ Zfd6d7„ Zgd8d9„ ZheQd:d;„ ƒZid<d=„ ZjeUd>d?„ ƒZkd@dA„ ZleQdBdC„ ƒZmdDdE„ ZndFdG„ ZoeUdHdI„ ƒZpdJdK„ ZqeUdLdM„ ƒZrdNdO„ ZsdPdQ„ ZtdRdS„ ZudTdU„ ZvdVdW„ ZweQdXdY„ ƒZxdZd[„ Zyd\d]„ ZzeUd^d_„ ƒZ{d`da„ Z|dbdc„ Z}ddde„ Z~dfdg„ ZeUdhdi„ ƒZ€djdk„ ZeUdldm„ ƒZ‚dndo„ Zƒdpdq„ Z„drds„ Z…dtdu„ Z†dvdw„ Z‡dxdy„ Zˆdzd{„ Z‰d|d}„ ZŠd~d„ Z‹d€d„ ZŒd‚dƒ„ ZeRd„d…„ ƒZŽd†d‡„ Zdˆd‰„ ZdŠd‹„ Z‘dŒd„ Z’dŽd„ Z“dd‘„ Z”d’d“„ Z•eQd”d•„ ƒZ–d–d—„ Z—d˜d™„ Z˜dšd›„ Z™dœd„ ZšdždŸ„ Z›d d¡„ Zœd¢d£„ ZdS )¤é    )
ÚtÚwÚxÚyÚzÚnÚkÚmÚpÚi)ÚaskÚAssumptionsContextÚQÚregister_handlerÚremove_handler)ÚassumingÚglobal_assumptionsÚ	Predicate)ÚCNFÚLiteral)Úsingle_fact_lookupÚget_known_factsÚgenerate_known_facts_dictÚget_known_facts_keys)Ú
AskHandler)Úget_all_known_factsÚget_known_facts_dict)ÚAdd)ÚIÚIntegerÚRationalÚooÚzooÚpi)ÚS)ÚPow)ÚsymbolsÚSymbol)Ú	factorial)ÚAbsÚimÚreÚsign)ÚexpÚlog)Úsqrt)ÚacosÚacotÚasinÚatanÚcosÚcotÚsinÚtan)Ú
EquivalentÚImpliesÚXorÚAndÚto_cnf)ÚMatrixÚSparseMatrix)ÚXFAILÚslowÚraisesÚwarns_deprecated_sympyÚ_both_exp_powNc                  C   sh  d} t t | ¡ƒdu sJ ‚t t | ¡ƒdu sJ ‚t t | ¡ƒdu s#J ‚t t | ¡ƒdu s.J ‚t t | ¡ƒdu s9J ‚t t | ¡ƒdu sDJ ‚t t | ¡ƒdu sOJ ‚t t 	| ¡ƒdu sZJ ‚t t 
| ¡ƒdu seJ ‚t t | ¡ƒdu spJ ‚t t | ¡ƒdu s{J ‚t t | ¡ƒdu s†J ‚t t | ¡ƒdu s‘J ‚t t | ¡ƒdu sœJ ‚t t | ¡ƒdu s§J ‚t t | ¡ƒdu s²J ‚d S )Né   TF©r   r   ÚcommutativeÚintegerÚrationalÚrealÚcomplexÚ
irrationalÚ	imaginaryÚpositiveÚnegativeÚevenÚoddÚfiniteÚprimeÚ	compositeÚ	hermitianÚantihermitian©r   © rW   úD/usr/lib/python3/dist-packages/sympy/assumptions/tests/test_query.pyÚ
test_int_1   ó"   rY   c                  C   sh  d} t t | ¡ƒdu sJ ‚t t | ¡ƒdu sJ ‚t t | ¡ƒdu s#J ‚t t | ¡ƒdu s.J ‚t t | ¡ƒdu s9J ‚t t | ¡ƒdu sDJ ‚t t | ¡ƒdu sOJ ‚t t 	| ¡ƒdu sZJ ‚t t 
| ¡ƒdu seJ ‚t t | ¡ƒdu spJ ‚t t | ¡ƒdu s{J ‚t t | ¡ƒdu s†J ‚t t | ¡ƒdu s‘J ‚t t | ¡ƒdu sœJ ‚t t | ¡ƒdu s§J ‚t t | ¡ƒdu s²J ‚d S )Né   TFrE   rV   rW   rW   rX   Útest_int_110   rZ   r\   c                  C   sh  d} t t | ¡ƒdu sJ ‚t t | ¡ƒdu sJ ‚t t | ¡ƒdu s#J ‚t t | ¡ƒdu s.J ‚t t | ¡ƒdu s9J ‚t t | ¡ƒdu sDJ ‚t t | ¡ƒdu sOJ ‚t t 	| ¡ƒdu sZJ ‚t t 
| ¡ƒdu seJ ‚t t | ¡ƒdu spJ ‚t t | ¡ƒdu s{J ‚t t | ¡ƒdu s†J ‚t t | ¡ƒdu s‘J ‚t t | ¡ƒdu sœJ ‚t t | ¡ƒdu s§J ‚t t | ¡ƒdu s²J ‚d S )Né   TFrE   rV   rW   rW   rX   Útest_int_12D   rZ   r^   c                  C   sú  d} t t | ¡ƒdu sJ ‚t t | ¡ƒdu sJ ‚t t | ¡ƒd u s#J ‚t t | ¡ƒdu s.J ‚t t | ¡ƒdu s9J ‚t t | ¡ƒd u sDJ ‚t t | ¡ƒdu sOJ ‚t t 	| ¡ƒdu sZJ ‚t t 
| ¡ƒdu seJ ‚t t | ¡ƒdu spJ ‚t t | ¡ƒdu s{J ‚t t | ¡ƒdu s†J ‚t t | ¡ƒdu s‘J ‚t t | ¡ƒdu sœJ ‚t t | ¡ƒdu s§J ‚t t | ¡ƒdu s²J ‚d} t t | ¡ƒdu s¿J ‚t t | ¡ƒdu sÊJ ‚t t | ¡ƒd u sÕJ ‚t t | ¡ƒdu sàJ ‚t t | ¡ƒdu sëJ ‚t t | ¡ƒd u söJ ‚t t | ¡ƒdu sJ ‚t t 	| ¡ƒdu sJ ‚t t 
| ¡ƒdu sJ ‚t t | ¡ƒdu s&J ‚t t | ¡ƒdu s2J ‚t t | ¡ƒdu s>J ‚t t | ¡ƒdu sJJ ‚t t | ¡ƒdu sVJ ‚t t | ¡ƒdu sbJ ‚t t | ¡ƒdu snJ ‚t t tj¡ƒd u s{J ‚d S )Nç      ð?TFgaÃÓ+eÙ@)r   r   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   Úmathr#   rV   rW   rW   rX   Útest_float_1X   sF   ra   c                  C   s‚  t dƒ} tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s%J ‚tt | ¡ƒdu s0J ‚tt | ¡ƒdu s;J ‚tt | ¡ƒdu sFJ ‚tt 	| ¡ƒdu sQJ ‚tt 
| ¡ƒdu s\J ‚tt | ¡ƒdu sgJ ‚tt | ¡ƒdu srJ ‚tt | ¡ƒdu s}J ‚tt | ¡ƒdu sˆJ ‚tt | ¡ƒdu s“J ‚tt | ¡ƒdu sžJ ‚tt | ¡ƒdu s©J ‚tt | ¡ƒdu s´J ‚tt | ¡ƒdu s¿J ‚d S )Nr   FT)r   r   r   ÚnonzeroÚzerorF   rG   rH   rI   rJ   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rW   rX   Útest_zero_0   s$   rd   c                  C   s˜  t dƒ} tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s%J ‚tt | ¡ƒdu s0J ‚tt | ¡ƒdu s;J ‚tt | ¡ƒdu sFJ ‚tt 	| ¡ƒdu sQJ ‚tt 
| ¡ƒdu s\J ‚tt | ¡ƒdu sgJ ‚tt | ¡ƒdu srJ ‚tt | ¡ƒdu s}J ‚tt | ¡ƒdu sˆJ ‚tt | ¡ƒdu s“J ‚tt | ¡ƒdu sžJ ‚tt | ¡ƒdu s©J ‚tt | ¡ƒdu s´J ‚tt | ¡ƒdu s¿J ‚tt | ¡ƒdu sÊJ ‚d S )NéÿÿÿÿTF)r   r   r   rb   rc   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rW   rX   Útest_negativeone–   s&   rf   c                   C   sè  t t t¡ƒdu sJ ‚t t t¡ƒdu sJ ‚t t t¡ƒdu s!J ‚t t t¡ƒdu s,J ‚t t t¡ƒdu s7J ‚t t t¡ƒdu sBJ ‚t t 	t¡ƒdu sMJ ‚t t 
t¡ƒdu sXJ ‚t t t¡ƒdu scJ ‚t t t¡ƒdu snJ ‚t t t¡ƒdu syJ ‚t t t¡ƒdu s„J ‚t t t¡ƒdu sJ ‚t t t¡ƒdu sšJ ‚t t t¡ƒdu s¥J ‚t t t¡ƒdu s°J ‚t t t¡ƒdu s»J ‚t t t¡ƒdu sÆJ ‚t t t¡ƒdu sÑJ ‚t t t¡ƒdu sÜJ ‚t t t¡ƒdu sçJ ‚t t t¡ƒdu sòJ ‚d S ©NTF)r   r   rF   r!   rG   rH   Ú	algebraicrI   Úextended_realrJ   rK   rL   rM   Úextended_positiverN   rO   rP   rQ   ÚinfiniterR   rS   rT   rU   Úpositive_infiniteÚnegative_infiniterW   rW   rW   rX   Útest_infinity¬   s,   rn   c                  C   sò  t j} tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s$J ‚tt | ¡ƒdu s/J ‚tt | ¡ƒdu s:J ‚tt 	| ¡ƒdu sEJ ‚tt 
| ¡ƒdu sPJ ‚tt | ¡ƒdu s[J ‚tt | ¡ƒdu sfJ ‚tt | ¡ƒdu sqJ ‚tt | ¡ƒdu s|J ‚tt | ¡ƒdu s‡J ‚tt | ¡ƒdu s’J ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s¨J ‚tt t¡ƒdu s³J ‚tt | ¡ƒdu s¾J ‚tt | ¡ƒdu sÉJ ‚tt | ¡ƒdu sÔJ ‚tt | ¡ƒdu sßJ ‚tt t ¡ƒdu sëJ ‚tt t ¡ƒdu s÷J ‚d S rg   )r$   ZNegativeInfinityr   r   rF   rG   rH   rh   rI   ri   rJ   rK   rL   rM   rN   Úextended_negativerO   rP   rQ   rk   r!   rR   rS   rT   rU   rl   rm   )ZmmrW   rW   rX   Útest_neg_infinityÅ   s.   rp   c                   C   sþ  t t t¡ƒdu sJ ‚t t t¡ƒdu sJ ‚t t t¡ƒdu s!J ‚t t t¡ƒdu s,J ‚t t t¡ƒdu s7J ‚t t t¡ƒdu sBJ ‚t t 	t¡ƒdu sMJ ‚t t 
t¡ƒdu sXJ ‚t t t¡ƒdu scJ ‚t t t¡ƒdu snJ ‚t t t¡ƒdu syJ ‚t t t¡ƒdu s„J ‚t t t¡ƒdu sJ ‚t t t¡ƒdu sšJ ‚t t t¡ƒdu s¥J ‚t t t¡ƒdu s°J ‚t t t¡ƒdu s»J ‚t t t¡ƒdu sÆJ ‚t t t¡ƒdu sÑJ ‚t t t¡ƒdu sÜJ ‚t t t¡ƒdu sçJ ‚t t t¡ƒdu sòJ ‚t t t¡ƒdu sýJ ‚d S rg   )r   r   rF   r"   rG   rH   rh   rI   ri   rJ   rK   rL   rM   rN   rc   rb   rO   rP   rQ   rk   rR   rS   rT   rU   rl   rm   rW   rW   rW   rX   Útest_complex_infinityß   s.   rq   c                  C   sÂ  t j} tt | ¡ƒdu sJ ‚tt | ¡ƒd u sJ ‚tt | ¡ƒd u s$J ‚tt | ¡ƒd u s/J ‚tt | ¡ƒd u s:J ‚tt 	| ¡ƒd u sEJ ‚tt 
| ¡ƒd u sPJ ‚tt | ¡ƒd u s[J ‚tt | ¡ƒd u sfJ ‚tt | ¡ƒd u sqJ ‚tt | ¡ƒd u s|J ‚tt | ¡ƒd u s‡J ‚tt | ¡ƒd u s’J ‚tt | ¡ƒd u sJ ‚tt | ¡ƒd u s¨J ‚tt | ¡ƒd u s³J ‚tt | ¡ƒd u s¾J ‚tt | ¡ƒd u sÉJ ‚tt | ¡ƒd u sÔJ ‚tt | ¡ƒd u sßJ ‚d S ©NT)r$   ZNaNr   r   rF   rG   rH   rh   rI   ri   rJ   rK   rL   rM   rb   rc   rO   rP   rQ   rk   rR   rS   rT   rU   )ÚnanrW   rW   rX   Útest_nanù   s*   rt   c                  C   sú  t ddƒ} tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s&J ‚tt | ¡ƒdu s1J ‚tt | ¡ƒdu s<J ‚tt | ¡ƒdu sGJ ‚tt 	| ¡ƒdu sRJ ‚tt 
| ¡ƒdu s]J ‚tt | ¡ƒdu shJ ‚tt | ¡ƒdu ssJ ‚tt | ¡ƒdu s~J ‚tt | ¡ƒdu s‰J ‚tt | ¡ƒdu s”J ‚tt | ¡ƒdu sŸJ ‚tt | ¡ƒdu sªJ ‚tt | ¡ƒdu sµJ ‚t ddƒ} tt 
| ¡ƒdu sÅJ ‚tt | ¡ƒdu sÐJ ‚t ddƒ} tt | ¡ƒdu sàJ ‚tt 
| ¡ƒdu sëJ ‚t ddƒ} tt 
| ¡ƒdu sûJ ‚tt | ¡ƒdu sJ ‚t ddƒ} tt 
| ¡ƒdu sJ ‚tt | ¡ƒdu s$J ‚t ddƒ} tt 
| ¡ƒdu s5J ‚tt | ¡ƒdu sAJ ‚t d	dƒ} tt | ¡ƒdu sRJ ‚tt 
| ¡ƒdu s^J ‚t d	dƒ} tt 
| ¡ƒdu soJ ‚tt | ¡ƒdu s{J ‚d S )
Né   é   TFrD   é   éýÿÿÿre   éûÿÿÿ)r    r   r   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   )ÚrrW   rW   rX   Útest_Rational_number  sL   







r{   c                  C   sl  t dƒ} tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s%J ‚tt | ¡ƒdu s0J ‚tt | ¡ƒdu s;J ‚tt | ¡ƒdu sFJ ‚tt 	| ¡ƒdu sQJ ‚tt 
| ¡ƒdu s\J ‚tt | ¡ƒdu sgJ ‚tt | ¡ƒdu srJ ‚tt | ¡ƒdu s}J ‚tt | ¡ƒdu sˆJ ‚tt | ¡ƒdu s“J ‚tt | ¡ƒdu sžJ ‚tt | ¡ƒdu s©J ‚tt | ¡ƒdu s´J ‚d S )Né   TF)r/   r   r   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rW   rX   Útest_sqrt_2A  s"   r}   c                  C   s  t j} tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s$J ‚tt | ¡ƒdu s/J ‚tt | ¡ƒdu s:J ‚tt 	| ¡ƒdu sEJ ‚tt 
| ¡ƒdu sPJ ‚tt | ¡ƒdu s[J ‚tt | ¡ƒdu sfJ ‚tt | ¡ƒdu sqJ ‚tt | ¡ƒdu s|J ‚tt | ¡ƒdu s‡J ‚tt | ¡ƒdu s’J ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s¨J ‚tt | ¡ƒdu s³J ‚tt | ¡ƒdu s¾J ‚t jd } tt | ¡ƒdu sÎJ ‚tt | ¡ƒdu sÙJ ‚tt | ¡ƒdu säJ ‚tt | ¡ƒdu sïJ ‚tt | ¡ƒdu súJ ‚tt 	| ¡ƒdu sJ ‚tt 
| ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s*J ‚tt | ¡ƒdu s6J ‚tt | ¡ƒdu sBJ ‚tt | ¡ƒdu sNJ ‚tt | ¡ƒdu sZJ ‚tt | ¡ƒdu sfJ ‚tt | ¡ƒdu srJ ‚tt | ¡ƒdu s~J ‚tt | ¡ƒdu sŠJ ‚dt j } tt | ¡ƒdu s›J ‚tt | ¡ƒdu s§J ‚tt | ¡ƒdu s³J ‚tt | ¡ƒdu s¿J ‚tt | ¡ƒdu sËJ ‚tt 	| ¡ƒdu s×J ‚tt 
| ¡ƒdu sãJ ‚tt | ¡ƒdu sïJ ‚tt | ¡ƒdu sûJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s+J ‚tt | ¡ƒdu s7J ‚tt | ¡ƒdu sCJ ‚tt | ¡ƒdu sOJ ‚tt | ¡ƒdu s[J ‚t jd } tt | ¡ƒdu slJ ‚tt | ¡ƒdu sxJ ‚tt | ¡ƒdu s„J ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu sœJ ‚tt 	| ¡ƒdu s¨J ‚tt 
| ¡ƒdu s´J ‚tt | ¡ƒdu sÀJ ‚tt | ¡ƒdu sÌJ ‚tt | ¡ƒdu sØJ ‚tt | ¡ƒdu säJ ‚tt | ¡ƒdu sðJ ‚tt | ¡ƒdu süJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s J ‚tt | ¡ƒdu s,J ‚dt j d } tt | ¡ƒdu s?J ‚tt | ¡ƒdu sKJ ‚tt | ¡ƒdu sWJ ‚tt | ¡ƒdu scJ ‚tt | ¡ƒdu soJ ‚tt 	| ¡ƒdu s{J ‚tt 
| ¡ƒdu s‡J ‚tt | ¡ƒdu s“J ‚tt | ¡ƒdu sŸJ ‚tt | ¡ƒdu s«J ‚tt | ¡ƒdu s·J ‚tt | ¡ƒdu sÃJ ‚tt | ¡ƒdu sÏJ ‚tt | ¡ƒdu sÛJ ‚tt | ¡ƒdu sçJ ‚tt | ¡ƒdu sóJ ‚tt | ¡ƒdu sÿJ ‚d S ©NTFrD   r|   )r$   ZPir   r   rF   rG   rH   rh   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rW   rX   Útest_piU  s´   


r   c                  C   s€  t j} tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s$J ‚tt | ¡ƒdu s/J ‚tt | ¡ƒdu s:J ‚tt 	| ¡ƒdu sEJ ‚tt 
| ¡ƒdu sPJ ‚tt | ¡ƒdu s[J ‚tt | ¡ƒdu sfJ ‚tt | ¡ƒdu sqJ ‚tt | ¡ƒdu s|J ‚tt | ¡ƒdu s‡J ‚tt | ¡ƒdu s’J ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s¨J ‚tt | ¡ƒdu s³J ‚tt | ¡ƒdu s¾J ‚d S rg   )r$   ZExp1r   r   rF   rG   rH   rh   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rW   rX   Útest_E¶  ó$   r€   c                  C   ó€  t j} tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s$J ‚tt | ¡ƒdu s/J ‚tt | ¡ƒdu s:J ‚tt 	| ¡ƒdu sEJ ‚tt 
| ¡ƒdu sPJ ‚tt | ¡ƒdu s[J ‚tt | ¡ƒdu sfJ ‚tt | ¡ƒdu sqJ ‚tt | ¡ƒdu s|J ‚tt | ¡ƒdu s‡J ‚tt | ¡ƒdu s’J ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s¨J ‚tt | ¡ƒdu s³J ‚tt | ¡ƒdu s¾J ‚d S rg   )r$   ZGoldenRatior   r   rF   rG   rH   rh   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rW   rX   Útest_GoldenRatioË  r   rƒ   c                  C   r‚   rg   )r$   ZTribonacciConstantr   r   rF   rG   rH   rh   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rW   rX   Útest_TribonacciConstantà  r   r„   c                  C   sj  t } tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s#J ‚tt | ¡ƒdu s.J ‚tt | ¡ƒdu s9J ‚tt | ¡ƒdu sDJ ‚tt 	| ¡ƒdu sOJ ‚tt 
| ¡ƒdu sZJ ‚tt | ¡ƒdu seJ ‚tt | ¡ƒdu spJ ‚tt | ¡ƒdu s{J ‚tt | ¡ƒdu s†J ‚tt | ¡ƒdu s‘J ‚tt | ¡ƒdu sœJ ‚tt | ¡ƒdu s§J ‚tt | ¡ƒdu s²J ‚tt | ¡ƒdu s½J ‚dt  } tt | ¡ƒdu sÌJ ‚tt | ¡ƒdu s×J ‚tt | ¡ƒdu sâJ ‚tt | ¡ƒdu síJ ‚tt | ¡ƒdu søJ ‚tt | ¡ƒdu sJ ‚tt 	| ¡ƒdu sJ ‚tt 
| ¡ƒdu sJ ‚tt | ¡ƒdu s(J ‚tt | ¡ƒdu s4J ‚tt | ¡ƒdu s@J ‚tt | ¡ƒdu sLJ ‚tt | ¡ƒdu sXJ ‚tt | ¡ƒdu sdJ ‚tt | ¡ƒdu spJ ‚tt | ¡ƒdu s|J ‚tt | ¡ƒdu sˆJ ‚t dt   } tt | ¡ƒdu sšJ ‚tt | ¡ƒdu s¦J ‚tt | ¡ƒdu s²J ‚tt | ¡ƒdu s¾J ‚tt | ¡ƒdu sÊJ ‚tt | ¡ƒdu sÖJ ‚tt 	| ¡ƒdu sâJ ‚tt 
| ¡ƒdu sîJ ‚tt | ¡ƒdu súJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s*J ‚tt | ¡ƒdu s6J ‚tt | ¡ƒdu sBJ ‚tt | ¡ƒdu sNJ ‚tt | ¡ƒdu sZJ ‚t t  } tt 
| ¡ƒdu sjJ ‚tt | ¡ƒdu svJ ‚t  t  } tt 
| ¡ƒdu s‡J ‚tt | ¡ƒdu s“J ‚dt  t  } tt 
| ¡ƒdu s¥J ‚tt | ¡ƒdu s±J ‚dt  } tt 
| ¡ƒdu sÁJ ‚tt | ¡ƒdu sÍJ ‚dt  } tt 
| ¡ƒdu sÝJ ‚tt | ¡ƒdu séJ ‚dt  t  } tt 
| ¡ƒdu sûJ ‚tt | ¡ƒdu sJ ‚t t d  } tt 
| ¡ƒdu sJ ‚tt | ¡ƒdu s%J ‚t t d  } tt 
| ¡ƒdu s7J ‚tt | ¡ƒdu sCJ ‚t d } tt 
| ¡ƒdu sSJ ‚tt | ¡ƒdu s_J ‚t d } tt 
| ¡ƒdu soJ ‚tt | ¡ƒdu s{J ‚dt  } tt 
| ¡ƒdu s‹J ‚tt | ¡ƒdu s—J ‚t d } tt 
| ¡ƒdu s§J ‚tt | ¡ƒdu s³J ‚d S )NTFrD   ru   re   r|   r   )r   r   r   rF   rG   rH   rh   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rW   rX   Útest_Iõ  s´   
r…   c                  C   s3  t dƒ\} }}tt | ¡ƒd u sJ ‚tt | ¡t | ¡ƒdu s!J ‚tt | ¡t |¡ƒd u s0J ‚tt | ¡t | ¡ƒdu s?J ‚tt | ¡t | ¡ƒd u sNJ ‚tt | d ¡ƒd u s[J ‚tt | d ¡t | ¡ƒdu slJ ‚| | }|j\} }tt |¡t | ¡t |¡@ ƒdu s‰J ‚tt |¡t | ¡t |¡@ ƒdu sJ ‚tt |¡t | ¡t |¡@ ƒdu s±J ‚tt |¡t | ¡t |¡@ ƒdu sÅJ ‚tt |¡t | ¡t |¡@ t |¡ @ ƒdu sßJ ‚tt |¡t | ¡t | ¡ @ t |¡@ ƒdu sùJ ‚tt |¡t | ¡t |¡@ t | ¡ @ t |¡ @ ƒdu sJ ‚tt |¡t | ¡t |¡ @ ƒdu s0J ‚tt |¡t | ¡t |¡ @ ƒdu sFJ ‚tt |¡t | ¡t |¡@ ƒdu s[J ‚tt |¡t | ¡t |¡@ ƒdu spJ ‚tt |¡t | ¡t |¡ @ t |¡ @ ƒdu sŒJ ‚tt |¡t | ¡t | ¡ @ t |¡@ ƒdu s§J ‚tt |¡t | ¡t | ¡ @ t |¡ @ t |¡ @ ƒdu sÉJ ‚tt |¡t | ¡ƒd u sÙJ ‚tt |¡t | ¡ƒd u séJ ‚tt |¡t | ¡t 	|¡@ ƒd u sþJ ‚tt |¡t | ¡t 	|¡@ ƒd u sJ ‚tt |¡t | ¡t |¡ @ ƒd u s)J ‚tt |¡t | ¡t | ¡ @ t 	|¡@ ƒd u sDJ ‚tt |¡t | ¡t | ¡ @ t |¡ @ ƒd u s`J ‚tt |¡t | ¡ t |¡ @ ƒd u swJ ‚tt |¡t | ¡t |¡ @ ƒd u sJ ‚tt |¡t | ¡ t |¡@ ƒd u s£J ‚tt |¡t | ¡t |¡@ ƒdu s¸J ‚tt |¡t | ¡t |¡ @ t 	|¡ @ ƒd u sÔJ ‚tt |¡t | ¡ t 	| ¡ @ t |¡@ ƒd u sðJ ‚tt |¡t | ¡ t |¡ @ t 	| ¡ @ t 	|¡ @ ƒdu sJ ‚tt |¡t |¡ ƒd u s$J ‚tt |¡t 	| ¡t |¡ @ ƒd u s:J ‚tt |¡t |¡ƒd u sJJ ‚tt |¡t 	| ¡t |¡@ ƒdu s_J ‚tt |¡t 	| ¡t |¡ @ t 	|¡ @ ƒd u s{J ‚tt |¡t 	| ¡ t |¡@ ƒd u s‘J ‚tt |¡t 	| ¡ t |¡ @ t 	|¡ @ ƒdu s®J ‚tt |¡ƒd u sºJ ‚tt |¡t 	| ¡ƒd u sÊJ ‚tt |¡t 	|¡ƒd u sÚJ ‚tt |¡t 	| ¡t 	|¡@ ƒd u sïJ ‚tt |¡t 	| ¡t 	|¡ @ ƒd u sJ ‚tt |¡t 	| ¡ t 	|¡@ ƒd u sJ ‚tt |¡t 	| ¡ t 	|¡ @ ƒd u s2J ‚t dƒ\} }}| | | }|j\} }}tt |¡t 
| ¡t 
|¡@ t 
|¡@ ƒdu s_J ‚tt |¡t 
| ¡t 
|¡@ t |¡@ ƒdu syJ ‚tt |¡t 
| ¡t 
|¡@ t |¡@ ƒdu s“J ‚tt |¡t 
| ¡t 
|¡@ t |¡@ ƒdu s­J ‚tt |¡t 
| ¡t 
|¡@ t |¡ @ ƒdu sÈJ ‚tt |¡t 
| ¡t 
|¡@ t |¡@ ƒdu sâJ ‚tt |¡t 
| ¡t 
|¡@ t |¡@ ƒd u süJ ‚tt |¡t 
| ¡t 
|¡@ ƒd u sJ ‚tt |¡t 
| ¡t 
|¡@ t 	|¡@ ƒd u s+J ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒdu sEJ ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒdu s_J ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒdu syJ ‚tt |¡t 
| ¡t |¡@ t |¡ @ ƒdu s”J ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒdu s®J ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒd u sÈJ ‚tt |¡t 
| ¡t |¡@ ƒd u sÝJ ‚tt |¡t 
| ¡t |¡@ t 	|¡@ ƒd u s÷J ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒdu sJ ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒdu s+J ‚tt |¡t 
| ¡t |¡@ t |¡ @ ƒdu sFJ ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒdu s`J ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒd u szJ ‚tt |¡t 
| ¡t 	|¡@ t |¡@ ƒd u s”J ‚tt |¡t 
| ¡t |¡@ t 	|¡@ ƒd u s®J ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒdu sÈJ ‚tt |¡t 
| ¡t |¡@ t |¡ @ ƒd u sãJ ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒd u sýJ ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒdu sJ ‚tt |¡t 
| ¡t |¡@ ƒd u s,J ‚tt |¡t 
| ¡t |¡@ t 	|¡@ ƒd u sFJ ‚tt |¡t 
| ¡t |¡ @ t |¡ @ ƒd u sbJ ‚tt |¡t 
| ¡t |¡ @ t |¡@ ƒd u s}J ‚tt |¡t 
| ¡t |¡ @ t |¡@ ƒd u s˜J ‚tt |¡t 
| ¡t |¡ @ ƒd u s®J ‚tt |¡t 
| ¡t |¡ @ t 	|¡@ ƒd u sÉJ ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒdu sãJ ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒd u sýJ ‚tt |¡t 
| ¡t |¡@ ƒd u sJ ‚tt |¡t 
| ¡t |¡@ t 	|¡@ ƒdu s,J ‚tt |¡t 
| ¡t |¡@ t |¡@ ƒd u sFJ ‚tt |¡t 
| ¡t |¡@ ƒd u s[J ‚tt |¡t 
| ¡t |¡@ t 	|¡@ ƒd u suJ ‚tt |¡t 
| ¡ƒd u s…J ‚tt |¡t 
| ¡t 	|¡@ ƒd u sšJ ‚tt |¡t 
| ¡t 	|¡@ t 	|¡@ ƒd u s´J ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu sÎJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu sèJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu 	sJ ‚tt |¡t | ¡t |¡@ t |¡ @ ƒdu 	sJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu 	s7J ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u 	sQJ ‚tt |¡t | ¡t |¡@ ƒd u 	sfJ ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u 	s€J ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu 	sšJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu 	s´J ‚tt |¡t | ¡t |¡@ t |¡ @ ƒdu 	sÏJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu 	séJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u 
sJ ‚tt |¡t | ¡t |¡@ ƒd u 
sJ ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u 
s2J ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu 
sLJ ‚tt |¡t | ¡t |¡@ t |¡ @ ƒd u 
sgJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u 
sJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu 
s›J ‚tt |¡t | ¡t |¡@ ƒd u 
s°J ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u 
sÊJ ‚tt |¡t | ¡t |¡ @ t |¡ @ ƒd u 
sæJ ‚tt |¡t | ¡t |¡ @ t |¡@ ƒd u sJ ‚tt |¡t | ¡t |¡ @ t |¡@ ƒd u sJ ‚tt |¡t | ¡t |¡ @ ƒd u s2J ‚tt |¡t | ¡t |¡ @ t 	|¡@ ƒd u sMJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu sgJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u sJ ‚tt |¡t | ¡t |¡@ ƒd u s–J ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒdu s°J ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u sÊJ ‚tt |¡t | ¡t |¡@ ƒd u sßJ ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u sùJ ‚tt |¡t | ¡ƒd u s	J ‚tt |¡t | ¡t 	|¡@ ƒd u sJ ‚tt |¡t | ¡t 	|¡@ t 	|¡@ ƒd u s8J ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu sRJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu slJ ‚tt |¡t | ¡t |¡@ t |¡ @ ƒdu s‡J ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu s¡J ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u s»J ‚tt |¡t | ¡t |¡@ ƒd u sÐJ ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u sêJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu sJ ‚tt |¡t | ¡t |¡@ t |¡ @ ƒd u sJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u s9J ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu sSJ ‚tt |¡t | ¡t |¡@ ƒd u shJ ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u s‚J ‚tt |¡t | ¡t |¡ @ t |¡ @ ƒd u sžJ ‚tt |¡t | ¡t |¡ @ t |¡@ ƒd u s¹J ‚tt |¡t | ¡t |¡ @ t |¡@ ƒd u sÔJ ‚tt |¡t | ¡t |¡ @ ƒd u sêJ ‚tt |¡t | ¡t |¡ @ t 	|¡@ ƒd u sJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu sJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u s9J ‚tt |¡t | ¡t |¡@ ƒd u sNJ ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒdu shJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u s‚J ‚tt |¡t | ¡t |¡@ ƒd u s—J ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u s±J ‚tt |¡t | ¡ƒd u sÁJ ‚tt |¡t | ¡t 	|¡@ ƒd u sÖJ ‚tt |¡t | ¡t 	|¡@ t 	|¡@ ƒd u sðJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu s
J ‚tt |¡t | ¡t |¡@ t |¡ @ ƒd u s%J ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u s?J ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu sYJ ‚tt |¡t | ¡t |¡@ ƒd u snJ ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u sˆJ ‚tt |¡t | ¡t |¡ @ t |¡ @ ƒd u s¤J ‚tt |¡t | ¡t |¡ @ t |¡@ ƒd u s¿J ‚tt |¡t | ¡t |¡ @ t |¡@ ƒd u sÚJ ‚tt |¡t | ¡t |¡ @ ƒd u sðJ ‚tt |¡t | ¡t |¡ @ t 	|¡@ ƒd u sJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u s%J ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u s?J ‚tt |¡t | ¡t |¡@ ƒd u sTJ ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u snJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu sˆJ ‚tt |¡t | ¡t |¡@ ƒd u sJ ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u s·J ‚tt |¡t | ¡ƒd u sÇJ ‚tt |¡t | ¡t 	|¡@ ƒd u sÜJ ‚tt |¡t | ¡t 	|¡@ t 	|¡@ ƒd u söJ ‚tt |¡t | ¡ t |¡ @ t |¡ @ ƒd u sJ ‚tt |¡t | ¡ t |¡@ t |¡ @ ƒd u s/J ‚tt |¡t | ¡ t |¡ @ t |¡@ ƒd u sKJ ‚tt |¡t | ¡ t |¡ @ ƒd u sbJ ‚tt |¡t | ¡ t |¡ @ t 	|¡@ ƒd u s~J ‚tt |¡t | ¡ t |¡@ t |¡@ ƒd u s™J ‚tt |¡t | ¡ t |¡@ t |¡@ ƒd u s´J ‚tt |¡t | ¡ t |¡@ ƒd u sÊJ ‚tt |¡t | ¡ t |¡@ t 	|¡@ ƒd u såJ ‚tt |¡t | ¡ t |¡@ t |¡@ ƒd u s J ‚tt |¡t | ¡ t |¡@ ƒd u sJ ‚tt |¡t | ¡ t |¡@ t 	|¡@ ƒd u s1J ‚tt |¡t | ¡ ƒd u sBJ ‚tt |¡t | ¡ t 	|¡@ ƒd u sXJ ‚tt |¡t | ¡ t 	|¡@ t 	|¡@ ƒd u ssJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒdu sJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u s§J ‚tt |¡t | ¡t |¡@ ƒd u s¼J ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒdu sÖJ ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u sðJ ‚tt |¡t | ¡t |¡@ ƒd u sJ ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u sJ ‚tt |¡t | ¡ƒd u s/J ‚tt |¡t | ¡t 	|¡@ ƒd u sDJ ‚tt |¡t | ¡t 	|¡@ t 	|¡@ ƒdu s^J ‚tt |¡t | ¡t |¡@ t |¡@ ƒd u sxJ ‚tt |¡t | ¡t |¡@ ƒd u sJ ‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd u s§J ‚tt |¡t | ¡ƒd u s·J ‚tt |¡t | ¡t 	|¡@ ƒd u sÌJ ‚tt |¡t | ¡t 	|¡@ t 	|¡@ ƒd u sæJ ‚tt |¡ƒd u sòJ ‚tt |¡t 	|¡ƒd u sJ ‚tt |¡t 	|¡t 	|¡@ ƒd u sJ ‚tt |¡t 	| ¡t 	|¡@ t 	|¡@ ƒd u s1J ‚tt d|  ¡ƒd u s?J ‚tt d|  ¡t | ¡ƒdu sQJ ‚t dƒ\} }}| | }|j\} }tt |¡t | ¡t |¡@ ƒdu svJ ‚tt |¡t | ¡t |¡ @ ƒdu sŒJ ‚tt |¡t | ¡ƒd u sœJ ‚tt |¡t | ¡ t |¡@ ƒdu s²J ‚tt |¡t | ¡ t |¡ @ ƒdu sÉJ ‚tt |¡t | ¡ ƒd u sÚJ ‚tt |¡t |¡ƒd u sêJ ‚tt |¡t |¡ ƒd u sûJ ‚tt |¡ƒd u sJ ‚| | | }|j\} }}tt |¡t | ¡t |¡@ t |¡@ ƒdu s-J ‚tt |¡t | ¡t |¡@ t |¡ @ ƒdu sHJ ‚tt |¡t | ¡t |¡@ ƒd u s]J ‚tt |¡t | ¡t |¡ @ t |¡@ ƒdu sxJ ‚tt |¡t | ¡t |¡ @ t |¡ @ ƒdu s”J ‚tt |¡t | ¡t |¡ @ ƒd u sªJ ‚tt |¡t | ¡t |¡@ ƒd u s¿J ‚tt |¡t | ¡t |¡ @ ƒd u sÕJ ‚tt |¡t | ¡ƒd u såJ ‚tt |¡t | ¡ t |¡@ t |¡@ ƒdu s J ‚tt |¡t | ¡ t |¡@ t |¡ @ ƒdu sJ ‚tt |¡t | ¡ t |¡@ ƒd u s2J ‚tt |¡t | ¡ t |¡ @ t |¡@ ƒdu sNJ ‚tt |¡t | ¡ t |¡ @ t |¡ @ ƒdu skJ ‚tt |¡t | ¡ t |¡ @ ƒd u s‚J ‚tt |¡t | ¡ t |¡@ ƒd u s˜J ‚tt |¡t | ¡ t |¡ @ ƒd u s¯J ‚tt |¡t | ¡ ƒd u sÀJ ‚tt |¡t |¡t |¡@ ƒd u sÕJ ‚tt |¡t |¡t |¡ @ ƒd u sëJ ‚tt |¡t |¡ƒd u sûJ ‚tt |¡t |¡ t |¡@ ƒd u sJ ‚tt |¡t |¡ t |¡ @ ƒd u s(J ‚tt |¡t |¡ ƒd u s9J ‚tt |¡t |¡ƒd u sIJ ‚tt |¡t |¡ ƒd u sZJ ‚tt |¡t |¡ t | ¡@ t |¡@ t |¡@ ƒd u szJ ‚tt |¡t | ¡t |¡ @ t |¡@ t |¡ @ t |¡@ ƒdu s J ‚t dƒ\} }}tt | d ¡ƒd u sµJ ‚tt d|  ¡ƒd u sÃJ ‚tt d|  ¡t | ¡ƒdu sÕJ ‚tt | |  ¡ƒd u sãJ ‚tt tj|  ¡ƒd u sòJ ‚tt tj|  ¡t 	| ¡ƒdu sJ ‚tt tj|  ¡t | ¡ƒd u sJ ‚tt d|  ¡t | ¡ƒdu s*J ‚tt t| ƒ¡ƒd u s8J ‚tt d|  ¡t | ¡ ƒdu sKJ ‚tt | d ¡t | ¡ ƒdu s^J ‚tt t| ƒ¡ƒdu slJ ‚tt t| ƒ¡t | ¡ ƒdu sJ ‚tt t| ƒ¡ƒd u sJ ‚tt t| ƒ¡t | ¡ƒd u sŸJ ‚tt t| ƒ¡t | ¡ ƒdu s²J ‚tt t| ƒ¡t | ¡ƒdu sÄJ ‚tt t| ƒ¡t | ¡ƒdu sÖJ ‚tt t| ƒ¡ƒd u säJ ‚tt t| ƒ¡t | ¡ƒdu söJ ‚tt tdƒ¡ƒdu sJ ‚tt t| ƒ¡ƒdu sJ ‚tt t| ƒ¡t | ¡ ƒdu s%J ‚tt t| ƒ¡ƒdu s3J ‚tt t| ƒ¡t | ¡ ƒdu sFJ ‚tt dt| ƒ ¡ƒdu sVJ ‚tt t| ƒd ¡ƒdu sfJ ‚tt t| ƒd ¡ƒdu svJ ‚tt t| ƒt| ƒ ¡ƒdu sˆJ ‚d S )Nzx,y,zTrD   Fr|   )r&   r   r   rQ   rJ   ri   ÚargsrM   rl   rj   rN   rm   ro   Zextended_nonzeror$   ZHalfr/   r,   r.   rc   rk   r-   r6   r4   )r   r   r   ÚarW   rW   rX   Útest_bounded_  s„  "
((((
ÿÿÿÿ(
ÿ
ÿ,,ÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿ*
ÿ
ÿ  ÿ
ÿÿ
ÿ,ÿ
ÿ
ÿ
ÿ.
ÿ
ÿÿ
ÿÿ
ÿ
ÿ
ÿ ÿ
ÿ 
ÿ
ÿ
ÿ"
ÿ
ÿ ÿ
ÿ
ÿ
ÿ
ÿÿ
ÿ 
ÿ
ÿ  ÿ
ÿ
ÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿ*ÿ
ÿÿ
ÿÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿ*ÿ
ÿÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿ,ÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿ ÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿ*ÿ
ÿÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿ*ÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿ,ÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿ ÿ
ÿÿ
ÿÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿ*ÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿ,ÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿ ÿ
ÿÿ
ÿÿÿ
ÿÿ
ÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
ÿ
ÿ
ÿ
ÿ
ÿÿ
ÿ
ÿÿ
ÿ
ÿ
ÿ
ÿÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
ÿ ÿ
ÿÿÿ
ÿ 
ÿ
ÿ
ÿ
ÿ ÿ
ÿ. ÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿ"ÿ
ÿÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
ÿ ÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
ÿ ÿ
ÿÿÿ
ÿ ÿ
ÿÿÿ
ÿ$
*, ,." "ÿ
ÿ
ÿ
ÿ*ÿ
ÿ
ÿ
ÿ,*, ÿ
ÿ
ÿ
ÿ, ÿ
ÿ 
ÿ
ÿ.,."*, ,." "ÿÿ
ÿÿ
ÿþ
þ$&&$&&&$&$$$&&   (rˆ   c                   C   s@   t t ttƒt ¡ƒdu sJ ‚t t ttƒt ¡ƒdu sJ ‚dS )z4We need to support relations in ask for this to workTN)r   r   rQ   r6   r   r4   rW   rW   rW   rX   Útest_bounded_xfailR  s   "r‰   c                   C   s¦  t t t¡ƒdu sJ ‚t t t¡t t¡ ƒdu sJ ‚t t t¡t t¡ƒdu s*J ‚t t t¡t t¡ƒdu s9J ‚t t t¡t t¡ƒdu sHJ ‚t t t¡t t¡ƒdu sWJ ‚t t t¡t t¡ ƒdu sgJ ‚t t dt ¡ƒdu stJ ‚t t dt ¡t t¡ ƒdu s†J ‚t t td ¡ƒdu s“J ‚t t td ¡t t¡ ƒdu s¥J ‚t t td ¡ƒdu s²J ‚t t td ¡t t¡ ƒdu sÄJ ‚t t t	tƒ¡ƒdu sÑJ ‚dS )zdBy default objects are Q.commutative that is why it returns True
    for both key=True and key=FalseTFr|   rD   N)
r   r   rF   r   rJ   rL   rI   rM   r   r.   rW   rW   rW   rX   Útest_commutativeY  s     $$$rŠ   c                   C   sæ  t t t¡ƒd u sJ ‚t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒd u s)J ‚t t t¡t t¡ ƒdu s9J ‚t t t¡t t¡ƒdu sHJ ‚t t t¡t t¡ ƒd u sXJ ‚t t t¡t t¡ƒdu sgJ ‚t t t¡t t¡ƒdu svJ ‚t t t¡t t¡ƒdu s…J ‚t t t¡t 	t¡ƒdu s”J ‚t t t¡t 
t¡ƒdu s£J ‚t t td ¡t t¡ƒdu s´J ‚t t td ¡t t¡ƒdu sÅJ ‚t t td ¡t t¡ƒdu sÖJ ‚t t td ¡t t¡ƒdu sçJ ‚t t td ¡t 	t¡ƒdu søJ ‚t t td ¡t t¡ƒdu s
J ‚t t td ¡t t¡ƒdu sJ ‚t t td ¡t t¡ƒdu s.J ‚t t tt ¡t t¡t t¡@ ƒdu sEJ ‚t t tt ¡t t¡t 	t¡@ ƒdu s\J ‚t t dt d ¡t t¡ƒdu spJ ‚t t dt d ¡t t¡ƒdu s„J ‚t t dt d ¡t t¡ƒdu s˜J ‚t t dt d ¡t t¡ƒdu s¬J ‚t t dt d ¡t t¡ƒdu sÀJ ‚t t dt d ¡t 	t¡ƒdu sÔJ ‚t t dt d ¡t t¡ƒdu sèJ ‚t t dt d ¡t t¡ƒdu süJ ‚t t dt d ¡t t¡ƒdu sJ ‚t t td ¡t t¡ƒdu s"J ‚t t td ¡t t¡ƒdu s4J ‚t t td ¡t t¡ƒdu sFJ ‚t t td ¡t t¡ƒdu sXJ ‚t t td ¡t t¡ƒdu sjJ ‚t t td ¡t 	t¡ƒdu s|J ‚t t td ¡t t¡ƒdu sŽJ ‚t t td ¡t t¡ƒdu s J ‚t t td ¡t t¡ƒdu s²J ‚t t dt ¡t t¡ƒdu sÄJ ‚t t dt ¡t t¡ƒdu sÖJ ‚t t dt ¡t t¡ƒdu sèJ ‚t t dt ¡t t¡ƒdu súJ ‚t t dt ¡t t¡ƒdu sJ ‚t t dt ¡t 	t¡ƒdu sJ ‚t t dt ¡t t¡ƒdu s0J ‚t t dt ¡t t¡ƒdu sBJ ‚t t dt ¡t t¡ƒdu sTJ ‚t t tt ¡t t¡t t¡@ ƒdu skJ ‚t t ttƒ¡ƒdu syJ ‚t t tdt d ƒ¡ƒdu s‹J ‚t t ttƒ¡ƒdu s™J ‚t t tdt d ƒ¡ƒdu s«J ‚t t ttƒ¡ƒdu s¹J ‚t t ttƒ¡ƒdu sÇJ ‚t t ttƒ¡ƒdu sÕJ ‚t t ttƒ¡ƒdu sãJ ‚t t ttƒ¡ƒdu sñJ ‚d S r~   )r   r   rJ   r   r   rI   rH   rK   rM   rL   rh   rG   rO   rP   r6   r4   r-   r)   r+   r*   rW   rW   rW   rX   Útest_complexp  st     """""$$$..((((((((($$$$$$$$$$$$$$$$$$.$$ r‹   c                   C   s€  t t t¡ƒd u sJ ‚t t t¡t t¡ƒd u sJ ‚t t t¡t t¡ ƒdu s*J ‚t t t¡t t¡ƒd u s9J ‚t t t¡t t¡ƒd u sHJ ‚t t dt ¡ƒd u sUJ ‚t t dt ¡t t¡ƒdu sfJ ‚t t dt ¡t t¡ƒdu swJ ‚t t dt ¡t t¡ƒdu sˆJ ‚t t dt ¡t t¡ƒdu s™J ‚t t dt ¡t t¡ ƒd u s«J ‚t t dt ¡t t¡ƒd u s¼J ‚t t dt ¡t t¡ƒdu sÍJ ‚t t dt ¡t t¡ƒdu sÞJ ‚t t td ¡t t¡ƒdu sïJ ‚t t td ¡t t¡ƒdu sJ ‚t t td ¡t t¡ƒdu sJ ‚t t td ¡t t¡ƒdu s%J ‚t t dt ¡t t¡ƒdu s7J ‚t t dt ¡t t¡ƒdu sIJ ‚t t tt	 ¡t t¡t t	¡@ ƒdu s`J ‚t t tt	 ¡t t¡t t	¡@ ƒdu swJ ‚t t tt	 ¡t t¡t t	¡@ ƒdu sŽJ ‚t t dt d ¡t t¡ƒdu s¢J ‚t t dt t	 ¡t t¡t t¡@ ƒd u s»J ‚t t dt t	 ¡t t¡t t¡@ ƒd u sÔJ ‚t t tt	 t
 ¡t t¡t t	¡@ t t
¡@ ƒdu sòJ ‚t t tt	 t
 t ¡t t¡t t	¡@ t t
¡@ t t¡@ ƒd u sJ ‚t t ttƒ¡t t¡ƒdu s)J ‚t t ttƒ¡t t¡ ƒd u s<J ‚t t ttƒ¡t t¡ƒdu sNJ ‚t t ttƒ¡t t¡ ƒd u saJ ‚t t ttƒ¡t t¡ƒdu ssJ ‚t t ttƒ¡t t¡ƒdu s…J ‚t t dt ¡t t¡ƒdu s—J ‚t t td ¡t t¡ƒdu s©J ‚t t td ¡t t¡ƒdu s»J ‚t t dt ¡t t¡ƒd u sÍJ ‚t t td ¡ƒd u sÛJ ‚t t tt ¡t t¡t t¡@ t t¡ @ ƒd u søJ ‚t t tt ¡t t¡t t¡@ t t¡ @ ƒdu sJ ‚t t tt ¡t t¡t t¡@ t t¡@ ƒdu s1J ‚t t tt ¡t t¡t t¡@ t t¡@ ƒdu sMJ ‚t t tt ¡t t¡t t¡@ t t¡ @ ƒd u sjJ ‚t t tt ¡t t¡t t¡@ t t¡@ ƒd u s†J ‚t t tt ¡t t¡t t¡@ t t¡ @ ƒd u s£J ‚t t tt ¡t t¡t t¡@ t t¡@ ƒd u s¿J ‚t t tt ¡t t¡ƒd u sÑJ ‚t t tt ¡t t¡ƒd u sãJ ‚t t tt	 ¡t t¡t t	¡@ ƒd u súJ ‚t t tt ¡t t¡ƒd u sJ ‚t t ttt	  ¡t t¡t t	¡@ ƒdu s%J ‚t t ttt	  ¡t t¡t t	¡@ ƒd u s>J ‚d S )NFr|   Tru   rD   é   re   )r   r   rO   r   rG   rH   rM   rK   rP   r   r   r   r)   r+   r*   rI   r   r   r	   rN   r
   rW   rW   rW   rX   Útest_even_query¼  sr    """"$""""$$$$$...(22<&ÿ
ÿ$&$&$$$$$$::88:8:8$$.$26r   c                   C   s€   t t tt tt  ¡t t¡t t¡@ t t¡@ ƒdu sJ ‚t t tt tt  ¡t t¡t t¡@ t t¡@ ƒdu s>J ‚d S rr   )r   r   rO   r   r   r   rG   rP   rW   rW   rW   rX   Ú1test_evenness_in_ternary_integer_product_with_odd  ó   >BrŽ   c                   C   sB   t t tt tt  ¡t t¡t t¡@ t t¡@ ƒd u sJ ‚d S ©N)r   r   rO   r   r   r   rG   rW   rW   rW   rX   Ú2test_evenness_in_ternary_integer_product_with_even  ó   Br‘   c                   C   s  t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒdu s-J ‚t t t¡t t¡ƒdu s<J ‚t t t¡t t¡ƒdu sKJ ‚t t t ¡t t¡ƒdu s[J ‚t t t ¡t t¡ƒdu skJ ‚t t tt	j
 ¡t t¡ƒdu s}J ‚t t t¡t t¡ƒd u sŒJ ‚d S rr   )r   r   ri   r   rl   rM   rc   rN   rm   r$   ZInfinityrI   rk   rW   rW   rW   rX   Útest_extended_real  s     $"r“   c                  C   sÆ  t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒd u s-J ‚t t t¡t t¡ƒd u s<J ‚t t t¡t t¡ƒd u sKJ ‚t t t¡t 	t¡ƒd u sZJ ‚t t t¡t 
t¡ ƒdu sjJ ‚t t dt ¡t t¡ƒdu s{J ‚t t dt ¡t t¡ƒdu sŒJ ‚t t dt ¡t t¡ƒdu sJ ‚t t dt ¡t t¡ƒdu s®J ‚t t dt ¡t t¡ƒdu s¿J ‚t t td ¡t t¡ƒdu sÐJ ‚t t td ¡t t¡ƒdu sáJ ‚t t td ¡t t¡ƒdu sòJ ‚t t td ¡t t¡ƒdu sJ ‚t t td ¡t t¡ƒdu sJ ‚t t dt ¡t t¡ƒdu s(J ‚t t dt ¡t t¡ƒdu s:J ‚t t dt ¡t t¡ƒdu sLJ ‚t t dt ¡t t¡ƒdu s^J ‚t t dt ¡t t¡ƒdu spJ ‚t t dt ¡t t¡ƒdu s‚J ‚t t dt ¡t t¡ƒdu s”J ‚t t dt ¡t t¡ƒdu s¦J ‚t t dt ¡t t¡ƒdu s¸J ‚t t dt ¡t t¡ƒdu sÊJ ‚t t t¡t 
t¡ ƒdu sÛJ ‚t t tt ¡t t¡t t¡@ ƒd u sòJ ‚t t tt ¡t t¡t t¡@ ƒdu s	J ‚t t tt ¡t t¡t t¡@ ƒdu s J ‚t t tt ¡t t¡t t¡@ ƒdu s7J ‚t t tt ¡t t¡t t¡@ ƒdu sNJ ‚t t tt ¡t t¡t t¡@ ƒdu seJ ‚ttttttfD ]Z} t t | dƒ¡ƒdu s}J ‚t t | ddd¡ƒdu sJ ‚t t | ddd¡ƒdu sJ ‚t t | tƒ¡t t¡ƒd u s¯J ‚t t | tƒ¡t t¡t 	t¡@ ƒdu sÆJ ‚qmttfD ]\}t t |dƒ¡ƒdu sÜJ ‚t t |ddd¡ƒdu sìJ ‚t t |ddd¡ƒdu süJ ‚t t |tƒ¡t t¡ƒd u sJ ‚t t |tƒ¡t t¡t 	td ¡@ ƒdu s'J ‚qÌttfD ]3}t t |dƒ¡ƒdu s=J ‚t t |ddd¡ƒdu sMJ ‚t t |tƒ¡t t¡ƒdu s_J ‚q-d S )NTFr|   rD   rŒ   ©Zevaluater   )r   r   rH   r   rG   rK   rI   rM   rN   rb   rh   rO   rP   r   r-   r6   r7   r2   r3   r4   r.   r0   r5   r1   ©ÚfÚgÚhrW   rW   rX   Útest_rational  sf    """"""""$$$$$$$$$$$$"......  $2  $6 (ýr™   c                   C   sJ  t t t¡ƒd u sJ ‚t t t¡t t¡ƒd u sJ ‚t t t¡t t¡ƒdu s)J ‚t t t¡t t¡ƒdu s8J ‚t t t¡t t¡ƒdu sGJ ‚t t t¡t t¡ƒdu sVJ ‚t t td ¡t t¡ƒd u sgJ ‚t t td ¡t 	t¡ƒd u sxJ ‚t t td ¡t t¡ƒdu s‰J ‚t t td ¡t t¡ƒdu sšJ ‚t t td ¡t t¡ƒdu s«J ‚t t tt
 ¡t t¡ƒd u s¼J ‚t t tt
 ¡t 	t¡ƒd u sÍJ ‚t t tt
 ¡t t¡ƒdu sÞJ ‚t t tt
 ¡t t¡ƒd u sïJ ‚t t tt
 ¡t t¡ƒdu sJ ‚t t tt ¡t t¡t t¡@ ƒd u sJ ‚t t tt ¡t t¡t 	t¡@ ƒd u s/J ‚t t tt ¡t t¡t t¡@ ƒd u sFJ ‚t t tt ¡t t¡t t¡@ ƒd u s]J ‚t t tt ¡t t¡t t¡@ ƒd u stJ ‚t t tt ¡t t¡t 	t¡@ ƒd u s‹J ‚t t tt ¡t t¡t t¡@ ƒdu s¢J ‚t t tt ¡t t¡t t¡@ ƒdu s¹J ‚t t tt ¡t t¡t t¡@ ƒdu sÐJ ‚t t tt ¡t t¡t 	t¡@ ƒd u sçJ ‚t t tt ¡t t¡t t¡@ ƒd u sþJ ‚t t tt ¡t t¡t t¡@ ƒdu sJ ‚t t tt ¡t t¡t 	t¡@ ƒd u s,J ‚t t tt ¡t t¡t t¡@ ƒdu sCJ ‚t t t
t ¡t t¡ƒdu sUJ ‚t t t
t ¡t 	t¡ƒd u sgJ ‚t t t
t ¡t t¡ƒdu syJ ‚t t t
t ¡t t¡ƒdu s‹J ‚t t t
t ¡t t¡ƒdu sJ ‚t t tt ¡t t¡t t¡@ ƒdu s´J ‚t t tt t ¡t t¡t t¡@ t t¡@ ƒdu sÒJ ‚t t tt t ¡t t¡t t¡@ t t¡@ ƒdu sðJ ‚t t tt t ¡t t¡t t¡@ t t¡@ ƒd u sJ ‚t t tt t ¡t t¡t t¡@ t t¡@ ƒd u s,J ‚t t t¡ƒd u s8J ‚t t t¡t t¡ƒdu sHJ ‚t t t¡t t¡ƒdu sXJ ‚t t td ¡t t¡ƒdu sjJ ‚t t td ¡t 	t¡ƒd u s|J ‚t t td ¡t t¡ƒd u sŽJ ‚t t td ¡t t¡ƒdu s J ‚t t td ¡t t¡ƒd u s²J ‚t t tt
 ¡t t¡ƒdu sÄJ ‚t t tt
 ¡t 	t¡ƒd u sÖJ ‚t t tt
 ¡t t¡ƒd u sèJ ‚t t tt
 ¡t t¡ƒdu súJ ‚t t tt
 ¡t t¡ƒdu sJ ‚t t t¡t t¡ƒdu sJ ‚t t tt ¡t t¡t t¡@ ƒdu s3J ‚t t tt ¡t t¡t 	t¡@ ƒd u sJJ ‚t t tt ¡t t¡t t¡@ ƒd u saJ ‚t t tt ¡t t¡t t¡@ ƒdu sxJ ‚t t tt ¡t t¡t t¡@ ƒdu sJ ‚t t tt ¡t t¡t 	t¡@ ƒd u s¦J ‚t t tt ¡t t¡t t¡@ ƒd u s½J ‚t t tt ¡t t¡t t¡@ ƒd u sÔJ ‚t t tt ¡t t¡t t¡@ ƒd u sëJ ‚t t tt ¡t t¡t 	t¡@ ƒd u sJ ‚t t tt ¡t t¡t t¡@ ƒdu sJ ‚t t tt ¡t t¡t t¡@ ƒdu s0J ‚t t tt ¡t t¡t 	t¡@ ƒd u sGJ ‚t t tt ¡t t¡t t¡@ ƒd u s^J ‚t t t
t ¡t t¡ƒdu spJ ‚t t t
t ¡t t¡ƒdu s‚J ‚t t t
t ¡t 	t¡ƒd u s”J ‚t t tt ¡t t¡t t¡@ ƒdu s«J ‚t t tt t ¡t t¡t t¡@ t t¡@ ƒd u sÉJ ‚t t tt t ¡t t¡t t¡@ t t¡@ ƒd u sçJ ‚t t tt t ¡t t¡t t¡@ t t¡@ ƒdu sJ ‚t t tt t ¡t t¡t t¡@ t t¡@ ƒdu s#J ‚d S )NFTrD   )r   r   rT   r   rU   rL   rR   rI   rc   rJ   r   r   r   rW   rW   rW   rX   Útest_hermitian^  s  """""""""$ÿ
ÿ.ÿ
ÿ...........$$$$$.,ÿ
ÿÿ
ÿÿ
ÿÿ
ÿ  $$$$$$$$$$ ÿ
þÿ
ÿÿ
ÿÿ
ÿ"
ÿ."
ÿÿ
ÿ......$$$.ÿ
ÿÿ
ÿÿ
ÿÿÿrš   c                  C   sR
  t t t¡ƒd u sJ ‚t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒdu s)J ‚t t td ¡t t¡ƒdu s:J ‚t t td ¡t t¡ƒdu sKJ ‚t t tt ¡t t¡ƒdu s\J ‚t t tt ¡t t¡ƒdu smJ ‚t t tt ¡t t¡t t¡@ ƒdu sƒJ ‚t t tt ¡t t¡t t¡@ ƒdu s™J ‚t t tt ¡t t¡t t¡@ ƒdu s¯J ‚t t tt ¡t t¡t t¡@ ƒd u sÅJ ‚t t tt t	 ¡t t¡t t¡@ t t	¡@ ƒdu sâJ ‚t t tt t	 ¡t t¡t t¡@ t t	¡@ ƒd u sÿJ ‚t t tt t	 ¡t t¡t t¡@ t t	¡@ ƒdu sJ ‚t t tt ¡t t¡ƒdu s/J ‚t t tt ¡t t¡ƒdu sAJ ‚t t tt ¡t t¡ƒd u sSJ ‚t t tt ¡t t¡t t¡@ ƒdu sjJ ‚t t tt ¡t t¡t t¡@ ƒdu sJ ‚t t tt ¡t 
t¡ƒd u s“J ‚t t tt ¡t t¡ƒd u s¥J ‚t t tt ¡t t¡ƒdu s·J ‚t t tt ¡t t¡ƒdu sÉJ ‚t t tt ¡t t¡ƒdu sÛJ ‚t t dt t ¡t t¡ƒdu sïJ ‚t t td ¡t t¡ƒdu sJ ‚t t tt ¡t t¡t t¡@ ƒd u sJ ‚t t tt ¡t t¡t t¡@ ƒd u s/J ‚t t tt ¡t t¡t t¡@ ƒd u sFJ ‚t t tt ¡t t¡t t¡@ ƒd u s]J ‚t t tt ¡t t¡t t¡@ ƒd u stJ ‚t t tt ¡t t¡t t¡@ ƒd u s‹J ‚t t tt ¡t t¡t t¡@ ƒdu s¢J ‚t t tt ¡t t¡t t¡@ ƒd u s¹J ‚t t tt ¡t t¡t t¡@ ƒdu sÐJ ‚t t tt ¡t t¡t t¡@ ƒdu sçJ ‚t t tt ¡t t¡t t¡@ ƒdu sþJ ‚t t tt ¡t 
t¡t t¡@ ƒd u sJ ‚t t tt ¡t 
t¡t t¡@ t t¡ @ ƒdu s2J ‚t t tt ¡t t¡t t¡@ ƒd u sIJ ‚t t tt ¡t 
t¡t t¡@ t dt ¡@ ƒdu sgJ ‚t t tt ¡t 
t¡t t¡@ t dt ¡ @ ƒdu s†J ‚t t tt ¡t 
t¡t t¡@ ƒd u sJ ‚t t tt ¡t t¡t t¡@ t dt ¡ @ ƒdu s¼J ‚t t tt ¡t t¡t t¡@ t dt ¡@ ƒd u sÚJ ‚t t ttƒ¡ƒdu sèJ ‚t t tdt ƒ¡ƒdu søJ ‚t t ttd ƒ¡ƒdu sJ ‚t t ttƒ¡t t¡ƒd u sJ ‚t t ttƒ¡t t¡ƒd u s,J ‚t t ttƒ¡t t¡ƒdu s>J ‚t t tttƒƒ¡t t¡ƒd u sRJ ‚t t tttƒƒ¡t t¡ƒd u sfJ ‚t t tttƒƒ¡ƒdu svJ ‚t t ttƒt ¡t t¡ƒdu sŠJ ‚tttt t ddtdd} t t | ¡t t¡ƒdu s©J ‚tttt t d ddtdd} t t | ¡t t¡ƒdu sÊJ ‚t t tdt t t ƒt ¡t t¡ƒdu säJ ‚t t tdt t dd¡ƒdu søJ ‚t t ttt d dd¡ƒdu sJ ‚t t tttddƒƒ¡t t¡t 
t¡@ ƒdu s'J ‚d S )	NFrD   Tr|   r   r”   ru   rv   )r   r   rL   r   rI   rR   r   r   rJ   r   rN   rM   rO   rP   rG   rH   r.   r-   r%   r#   r    ©ÚeqrW   rW   rX   Útest_imaginaryÇ  s–   """",,,,,ÿÿÿÿÿ
ÿ$$$..$$$$$($............:.<>.><  $$$(( ( " 4((:r   c                   C   sB  t t t¡ƒd u sJ ‚t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ ƒdu s*J ‚t t t¡t t¡ ƒdu s:J ‚t t t¡t t¡ ƒd u sJJ ‚t t t¡t t¡t t¡B ƒdu s^J ‚t t dt ¡t t¡ƒdu soJ ‚t t dt ¡t t¡ƒdu s€J ‚t t dt ¡t t¡ƒdu s‘J ‚t t dt ¡t 	t¡ƒd u s¢J ‚t t dt ¡t t¡ƒd u s³J ‚t t t
dƒt ¡t t¡ƒdu sÆJ ‚t t t
dƒt ¡t t¡ƒd u sÙJ ‚t t td ¡t t¡ƒdu sêJ ‚t t td ¡t t¡ƒdu sûJ ‚t t td ¡t t¡ƒd u sJ ‚t t td ¡t t¡ƒd u sJ ‚d S )NTFr|   ru   )r   r   rG   r   rI   rM   rO   rP   rR   rH   r/   rK   rW   rW   rW   rX   Útest_integer  s"      ("""""&&""$(rž   c                   C   sF  t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ ƒdu s.J ‚t t t¡t t¡ƒdu s=J ‚t t t¡t t¡ ƒd u sMJ ‚t t t ¡t t¡ƒdu s]J ‚t t t ¡t t¡ ƒd u snJ ‚t t t ¡t t¡ƒdu s~J ‚t t t ¡t t¡ƒdu sŽJ ‚t t td ¡t t¡ƒdu sŸJ ‚t t tt ¡ƒd u s¬J ‚t t tt ¡t t¡ƒd u s½J ‚t t tt ¡t t¡t t¡@ ƒdu sÓJ ‚t t tt ¡t t¡t t¡@ ƒdu séJ ‚t t dt	 ¡ƒdu söJ ‚t t t
t	ƒd tt	ƒd  d ¡ƒd u sJ ‚t t t	 t	t
dƒd tdƒd    ¡ƒd u s)J ‚t t td ¡ƒd u s7J ‚t t td ¡t t¡ƒdu sIJ ‚t t td ¡t t¡ƒd u s[J ‚t t tt	 ¡t t¡ƒd u smJ ‚t t tt ¡ƒd u s{J ‚t t tt ¡t t¡t t¡@ ƒdu s’J ‚t t tt ¡t t¡t t¡@ ƒdu s©J ‚t t tt ¡t t¡t t¡@ ƒd u sÀJ ‚t t tt ¡ƒd u sÎJ ‚t t tt ¡t t¡t t¡@ ƒdu såJ ‚t t tt ¡t t¡t t¡@ ƒdu süJ ‚t t tt ¡t t¡t t¡@ ƒdu sJ ‚t t ttƒ¡ƒdu s!J ‚d S )NTFrD   r|   gffffffö?)r   r   rN   r   rM   rI   rR   r   Únonpositiver   r4   r6   rJ   rO   rP   rG   r)   rW   rW   rW   rX   Útest_negative-  s<      "  "",,06$$$...... r    c                   C   sž  t t t¡ƒd u sJ ‚t t t¡t t¡ƒd u sJ ‚t t t¡t t¡ƒdu s)J ‚t t t¡t t¡ƒdu s8J ‚t t t¡t t¡t t¡B ƒdu sLJ ‚t t tt ¡ƒd u sYJ ‚t t tt ¡t t¡t t¡@ ƒdu soJ ‚t t tt ¡t t¡t t¡@ ƒd u s…J ‚t t tt ¡t t¡t t¡@ ƒdu s›J ‚t t dt ¡ƒd u s¨J ‚t t dt ¡t t¡ƒdu s¹J ‚t t dt ¡t t¡ƒdu sÊJ ‚t t tt ¡t t¡ƒd u sÛJ ‚t t tt ¡t t¡t t¡@ ƒdu sñJ ‚t t tt ¡t t¡ƒdu sJ ‚t t ttƒ¡ƒd u sJ ‚t t ttƒ¡t t¡ƒdu s#J ‚t t t	t
dt ƒƒ¡ƒdu s5J ‚t t tdƒd tdƒd  d ¡ƒd u sMJ ‚d S )NTr|   FrD   )r   r   rb   r   rI   rM   rN   r   r)   r.   r-   r   r4   r6   rW   rW   rW   rX   Útest_nonzeroW  s&   (,,,""",$$$4r¡   c                   C   sî  t t t¡ƒd u sJ ‚t t t¡t t¡ƒd u sJ ‚t t t¡t t¡ƒdu s)J ‚t t t¡t t¡ƒdu s8J ‚t t t¡t t¡t t¡B ƒdu sLJ ‚t t t¡t t¡t t¡@ ƒdu s`J ‚t t tt	 ¡ƒd u smJ ‚t t tt	 ¡t t¡t t	¡@ ƒdu sƒJ ‚t t tt	 ¡t t¡t t	¡@ ƒd u s™J ‚t t tt	 ¡t t¡t t	¡@ ƒdu s¯J ‚t t dt ¡ƒd u s¼J ‚t t dt ¡t t¡ƒdu sÍJ ‚t t dt ¡t t¡ƒdu sÞJ ‚t t tt	 ¡t 
t¡ƒd u sïJ ‚t t ttƒ¡ƒd u süJ ‚t t ttƒ¡t t¡ƒdu sJ ‚t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒdu s.J ‚t t t¡t t¡ƒdu s>J ‚t t t¡t t¡ƒd u sNJ ‚t t t¡t t¡ƒdu s^J ‚t t t¡t t	¡B t tt	 ¡ƒdu suJ ‚d S )NFTr|   )r   r   rc   r   rI   rM   rN   ÚnonnegativerŸ   r   rb   r)   rG   rO   rP   rW   rW   rW   rX   Ú	test_zerot  s,   ((,,,"""$     2r£   c                   C   s	  t t t¡ƒd u sJ ‚t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒd u s)J ‚t t t¡t t¡ ƒdu s9J ‚t t t¡t t¡ƒd u sHJ ‚t t t¡t t¡ƒd u sWJ ‚t t t ¡t t¡ƒdu sgJ ‚t t dt ¡ƒd u stJ ‚t t dt ¡t t¡ƒdu s…J ‚t t dt ¡t t¡ƒdu s–J ‚t t dt ¡t t¡ƒdu s§J ‚t t dt ¡t t¡ ƒd u s¹J ‚t t dt ¡t t¡ƒd u sÊJ ‚t t td ¡t t¡ƒd u sÛJ ‚t t td ¡t t¡ƒd u sìJ ‚t t td ¡t t¡ƒdu sýJ ‚t t td ¡t t¡ƒdu sJ ‚t t td ¡t t¡ƒdu s!J ‚t t dt ¡t t¡ƒdu s3J ‚t t dt ¡t t¡ƒdu sEJ ‚t t dt ¡t t¡ƒdu sWJ ‚t t dt ¡t t¡ƒdu siJ ‚t t tt	 ¡t t¡t t	¡@ ƒdu s€J ‚t t tt	 ¡t t¡t t	¡@ ƒdu s—J ‚t t tt	 ¡t t¡t t	¡@ ƒdu s®J ‚t t tt	 ¡t t¡t t	¡@ ƒdu sÅJ ‚t t tt	 t
 ¡t t¡t t	¡@ t t
¡@ ƒdu sãJ ‚t t tt	 t
 t ¡t t¡t t	¡@ t t
¡@ t t¡@ ƒd u sJ ‚t t dt d ¡t t¡ƒdu sJ ‚t t dt t	 ¡t t¡t t	¡@ ƒdu s5J ‚t t dt t	 ¡t t¡t t	¡@ ƒdu sNJ ‚t t dt t	 ¡t t¡t t	¡@ ƒd u sgJ ‚t t tt	 ¡t t¡t t	¡@ ƒdu s~J ‚t t tt	 ¡t t¡t t	¡@ ƒdu s•J ‚t t dt t	 ¡t t¡t t¡@ ƒd u s®J ‚t t dt t	 ¡t t¡t t¡@ ƒd u sÇJ ‚t t ttƒ¡t t¡ƒdu sÙJ ‚t t dt ¡t t¡ƒdu sëJ ‚t t td ¡t t¡ƒdu sýJ ‚t t td ¡t t¡ƒdu sJ ‚t t dt ¡t t¡ƒd u s!J ‚t t tt ¡t t¡t t¡@ t t¡ @ ƒd u s>J ‚t t tt ¡t t¡t t¡@ t t¡ @ ƒdu s[J ‚t t tt ¡t t¡t t¡@ t t¡@ ƒdu swJ ‚t t tt ¡t t¡t t¡@ t t¡@ ƒdu s“J ‚t t tt ¡t t¡t t¡@ t t¡ @ ƒd u s°J ‚t t tt ¡t t¡t t¡@ t t¡@ ƒd u sÌJ ‚t t tt ¡t t¡t t¡@ t t¡ @ ƒd u séJ ‚t t tt ¡t t¡t t¡@ t t¡@ ƒd u sJ ‚t t tt ¡t t¡ƒd u sJ ‚t t tt ¡t t¡ƒd u s)J ‚t t tt	 ¡t t¡t t	¡@ ƒd u s@J ‚t t tt ¡t t¡ƒd u sRJ ‚t t ttt	  ¡t t¡t t	¡@ ƒdu skJ ‚t t ttt	  ¡t t¡t t	¡@ ƒd u s„J ‚d S )NTFr|   ru   rD   re   )r   r   rP   r   rG   rH   rM   rK   rO   r   r   r   r)   r   r   r	   rN   r
   rW   rW   rW   rX   Útest_odd_query’  sv     """$""""$$$$$$....<&ÿ
ÿ(222..22$$$$$::88:8:8$$.$26r¤   c                   C   s€   t t tt tt  ¡t t¡t t¡@ t t¡@ ƒdu sJ ‚t t tt tt  ¡t t¡t t¡@ t t¡@ ƒdu s>J ‚d S ©NF)r   r   rP   r   r   r   rG   rW   rW   rW   rX   Ú0test_oddness_in_ternary_integer_product_with_oddÜ  r   r¦   c                   C   sB   t t tt tt  ¡t t¡t t¡@ t t¡@ ƒd u sJ ‚d S r   )r   r   rP   r   r   r   rG   rO   rW   rW   rW   rX   Ú1test_oddness_in_ternary_integer_product_with_evenå  r’   r§   c                   C   s¶  t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ ƒdu sJ ‚t t t¡t t¡ƒd u s.J ‚t t t¡t t¡ ƒdu s>J ‚t t dt ¡t t¡ƒd u sOJ ‚t t tt ¡ƒd u s\J ‚t t tt ¡t t¡ƒd u smJ ‚t t tt ¡t t¡t t¡@ ƒd u sƒJ ‚t t dt ¡t t¡ƒdu s”J ‚t t dt ¡ƒd u s¡J ‚t t td ¡t t¡ƒdu s²J ‚t t td ¡t t¡ƒdu sÃJ ‚t t tt ¡t t¡t t¡@ ƒdu sÙJ ‚d S )NTFr|   rv   )r   r   rR   r   rG   r   rW   rW   rW   rX   Ú
test_primeé  s     "","""0r¨   c                  C   sê  t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒd u s-J ‚t t t ¡t t¡ƒdu s=J ‚t t t ¡t t¡ƒdu sMJ ‚t t tt ¡t t¡t t¡@ ƒdu scJ ‚t t tt ¡t t¡t t¡@ ƒdu syJ ‚t t tt ¡t t¡t t¡@ ƒd u sJ ‚t t tt ¡t t¡t t¡@ ƒdu s¥J ‚t t dt ¡t t¡ƒdu s¶J ‚t t¡t t¡@ t t	¡@ t t
¡@ } t t tt t	 ¡ƒd u sÙJ ‚t t tt t	 ¡| ƒdu séJ ‚t t t t t	 ¡| ƒdu súJ ‚t t tt ¡t t¡ƒd u sJ ‚t t td ¡t t¡ƒdu sJ ‚t t td ¡t t¡ƒdu s0J ‚t t td ¡t t¡ƒdu sBJ ‚t t ddtd   ¡t t¡ƒdu sXJ ‚t t dt ¡ƒdu sfJ ‚t t dt ¡ƒdu stJ ‚t t ttƒd ttƒd  d ¡ƒd u sŒJ ‚t t t ttdƒd tdƒd    ¡ƒd u s§J ‚t t ttƒ¡t t¡ƒdu s¹J ‚t t ttƒ¡ t t¡ƒdu sÌJ ‚t t tttƒ ¡t t¡ƒd u sàJ ‚t t ttƒ¡t t¡ƒd u sòJ ‚t t tdt t dd¡t t¡ƒdu s
J ‚t t ttt dd¡t t¡ƒdu s J ‚t t ttt t ƒ¡t t¡ƒdu s6J ‚t t ttt t ƒ¡t t¡ƒdu sLJ ‚t t ttt t ƒ¡t t¡ƒd u sbJ ‚t t ttƒ¡t t¡ƒdu stJ ‚t t ttƒ¡t t¡ƒdu s†J ‚t t ttƒ¡t t¡ƒd u s˜J ‚t t ttd ƒ¡t t¡ƒdu s¬J ‚t t ttƒ¡t t¡t t¡@ ƒsÁJ ‚t t ttƒ¡t t¡ƒd u sÓJ ‚t t ttƒ¡ƒd u sáJ ‚t t ttƒ¡t t¡ƒdu sóJ ‚d S )NTFr|   ru   rD   r”   )r   r   rM   r   rN   rb   r   r¢   rL   r   r   r   rI   r4   r6   r-   r#   rO   rP   r.   r(   rG   r)   ©ÚassumptionsrW   rW   rX   Útest_positiveû  sP     ,,,,"( "$$$$,06$&($0,,,,$$$(*$(r«   c                   C   s°   t t d¡ƒs	J ‚t t d¡ƒsJ ‚t t d¡ƒdu sJ ‚t t t¡ t t¡ƒs+J ‚t t t¡t t¡ƒdu s:J ‚t t tdƒ¡ƒdu sGJ ‚t t t¡t t¡ƒdu sVJ ‚d S )Nre   r   rD   F)r   r   rŸ   rM   r   r/   rL   rW   rW   rW   rX   Útest_nonpositive6  s   "r¬   c                   C   s°   t t d¡ƒdu sJ ‚t t d¡ƒsJ ‚t t d¡ƒsJ ‚t t t¡ t t¡ƒs+J ‚t t t¡t t¡ƒdu s:J ‚t t tdƒ¡ƒdu sGJ ‚t t t¡t t¡ƒdu sVJ ‚d S )Nre   Fr   rD   )r   r   r¢   rN   r   r/   rL   rW   rW   rW   rX   Útest_nonnegative@  s   "r­   c                   C   s*  t t t¡ƒd u sJ ‚t t t¡t t¡ƒdu sJ ‚t t t¡t t¡ƒdu s)J ‚t t t¡t t¡ƒdu s8J ‚t t t¡t t¡ƒdu sGJ ‚t t t¡t t¡ƒdu sVJ ‚t t t¡t t¡ƒdu seJ ‚t t t¡t 	t¡ƒdu stJ ‚t t tt
dƒ ¡t t¡ƒdu s‡J ‚t t tt
dƒ ¡t t¡ƒdu sšJ ‚t t td ¡t t¡ƒdu s«J ‚t t tt ¡t t¡ƒdu s¼J ‚t t tt ¡t t¡ƒd u sÍJ ‚t t dt ¡t t¡ƒdu sÞJ ‚t t tt ¡t t¡ƒdu sïJ ‚t t tt ¡t t¡ƒdu sJ ‚t t tt ¡t t¡ƒd u sJ ‚d S )NTr|   éþÿÿÿFrD   )r   r   rI   r   rb   rM   rN   rG   rO   rR   r/   r   rJ   rL   rW   rW   rW   rX   Útest_real_basicI  s"   &&"""""$(r¯   c                   C   sš  t t td ¡t t¡ƒdu sJ ‚t t ttƒ¡t t¡ƒdu s"J ‚t t tt ¡t t¡t t¡@ ƒdu s8J ‚t t tt ¡t t¡t t¡@ ƒd u sNJ ‚t t tt ¡t t¡t t¡@ ƒdu sdJ ‚t t tt ¡t 	t¡t 	t¡@ ƒd u szJ ‚t t tt ¡t 	t¡t t¡@ ƒd u sJ ‚t t tt ¡t t¡t 	t¡@ ƒd u s¦J ‚t t td ¡t 	t¡ƒdu s·J ‚t t tt ¡t t¡t t¡@ ƒdu sÍJ ‚t t tt ¡t t¡t t¡@ ƒdu sãJ ‚t t tt ¡t t¡t 
t¡@ ƒd u sùJ ‚t t tt ¡t 	t¡t t¡@ ƒd u sJ ‚t t tt ¡t 	t¡t t¡@ ƒdu s'J ‚t t tt ¡t 	t¡t t¡@ ƒdu s>J ‚t t ttt  ¡t t¡t tt ¡@ t 
tt ¡@ t t¡@ t t¡@ ƒdu sjJ ‚t t ttt  ¡t t¡t 
tt ¡@ t t¡@ t t¡@ ƒdu sJ ‚t t ttt  ¡t t¡t tt ¡@ ƒdu sªJ ‚t t ttt  ¡t t¡t tt ¡@ t t¡@ ƒdu sÊJ ‚t t ttt  ¡t t¡t tt ¡@ t t¡@ ƒdu sêJ ‚t t t t ¡t 	t¡ƒdu sýJ ‚t t tt ¡t 	t¡ƒdu sJ ‚t t tt ¡t 	t¡ƒd u s!J ‚t t tt ¡t 	t¡ƒd u s3J ‚t t ttt ttƒ  ¡t t¡ƒdu sKJ ‚d S )Nr|   TFr   )r   r   rI   r   r/   rN   r   rG   rM   rL   rH   rP   rO   r   r   r   r#   r.   rW   rW   rW   rX   Útest_real_pow`  s2   "",,,,,,",,,...XJ6@@&$$$4r°   c                  C   s   t t ttƒ¡ƒd u sJ ‚t t ttƒ¡ƒd u sJ ‚t t ttƒ¡t t¡ƒdu s+J ‚t t ttƒ¡t t¡ƒdu s<J ‚t t ttƒ¡ƒd u sIJ ‚t t ttƒ¡t t¡ƒdu sZJ ‚t t tttƒ ¡t t¡ƒdu smJ ‚t t tdt t dd¡ƒdu s€J ‚t t ttt dd¡ƒdu s‘J ‚t t ttt d dd¡ƒdu s¤J ‚t t t	tƒ¡ƒdu s±J ‚t t t	dt ƒ¡ƒdu sÀJ ‚t t t	td ƒ¡ƒdu sÏJ ‚t t t	tƒ¡t 
t¡ƒd u sàJ ‚t t t	tƒ¡t t¡ƒdu sñJ ‚t t t	ttƒƒ¡t t¡ƒd u sJ ‚t t t	ttƒƒ¡t 
t¡ƒd u sJ ‚ttdt t t ddtdd} t t | ¡t t¡ƒdu s:J ‚t t ttƒt ¡t t¡ƒdu sNJ ‚t t ttƒt ¡t 
t¡ƒd u sbJ ‚t t ttƒ¡ƒdu spJ ‚t t ttƒ¡ƒdu s~J ‚d S )NTr|   Fr”   rD   )r   r   rI   r6   r   r4   r-   r#   r   r.   rJ   rL   r%   rG   r+   r*   r›   rW   rW   rX   Útest_real_functions|  s.   """&&"&""((" (( r±   c               	   C   s6  t t tddt dgdt dtgdt dggƒ¡ƒdksJ ‚t t tddt dgdt dtgdt dggƒ¡ƒdks<J ‚tddd} t t tddt | gdt dtgdt dggƒ¡ƒd ks`J ‚t t td	ƒ¡ƒdksmJ ‚t t td
dtdfdfƒ¡ƒdks€J ‚t t td
d| dfdfƒ¡ƒd ks“J ‚tddt dgdt dt gdt dggƒ}tt dt dgdt ddt gddt t ggƒ}t t |¡ƒdu sÎJ ‚t t |¡ƒdu sÙJ ‚t t |d ¡ƒdu sæJ ‚|d }| ¡  t t |¡ƒdu sùJ ‚tddt dg| dt gdt dggƒ}t t |¡ƒd u sJ ‚d S )Nr|   rv   ru   rD   TFr   ©rJ   )©é   é   ry   )rµ   é   r   ©ry   r   r[   r³   rµ   r   r·   r®   )	r   r   rT   r=   r   r&   r>   rU   Zsimplify)r   ÚAÚBÚCZ_ArW   rW   rX   Útest_matrixž  s"   <<<&&,4(r»   c               	   C   sâ  t t t¡ƒd u sJ ‚t t t¡ƒdu sJ ‚t t dt ¡ƒdu s#J ‚t t td ¡ƒdu s0J ‚t t tdƒ¡ƒdu s=J ‚t t dtdƒ ¡ƒdu sLJ ‚t t tdƒd ¡ƒdu s[J ‚t t ttdƒ ¡ƒdu sjJ ‚t t tdttdƒ  ƒ¡ƒdu s}J ‚t t dttdƒtddƒ   ¡ƒdu s“J ‚t t dttdƒdt    ¡ƒdu s¨J ‚tt	t
tttfD ]U} t t | dƒ¡ƒdu s¿J ‚t t | ddd	¡ƒdu sÎJ ‚t t | d
dd	¡ƒdu sÝJ ‚t t | tƒ¡t t¡ƒd u sîJ ‚t t | tƒ¡t t¡t t¡@ ƒdu sJ ‚q°ttfD ]\}t t |dƒ¡ƒdu sJ ‚t t |ddd	¡ƒdu s*J ‚t t |ddd	¡ƒdu s:J ‚t t |tƒ¡t t¡ƒd u sLJ ‚t t |tƒ¡t t¡t td ¡@ ƒdu seJ ‚q
ttfD ]3}t t |dƒ¡ƒdu s{J ‚t t |ddd	¡ƒdu s‹J ‚t t |tƒ¡t t¡ƒdu sJ ‚qkt t tt	dƒƒ¡ƒdu s¯J ‚t t ttttdƒ  ƒ¡ƒd u sÃJ ‚t t d¡ƒdu sÏJ ‚t t t¡t t¡ƒdu sßJ ‚t t t¡t t¡ƒdu sïJ ‚d S )NTr|   ru   rŒ   rD   é   é   Fr”   r   gÃõ(\Â@)r   r   rh   r   r   r/   r    r#   r-   r6   r7   r2   r3   r4   rb   r.   r0   r5   r1   r   Ztranscendentalr•   rW   rW   rX   Útest_algebraic¶  s@   &,*"0  $6 ( ( $r¾   c                   C   s^   t t t¡ƒdu sJ ‚t t t¡¡ t t t¡ƒdu sJ ‚t ¡  t t t¡ƒdu s-J ‚dS )z Test ask with global assumptionsNT)r   r   rG   r   r   ÚaddÚclearrW   rW   rW   rX   Útest_globalä  s
   rÁ   c                  C   s`   t t t¡ƒdu sJ ‚tƒ } |  t t¡¡ t t t¡| ddu s#J ‚t t t¡ƒdu s.J ‚dS )z(Test ask with custom assumptions contextN)ÚcontextT)r   r   rG   r   r   r¿   )Zlocal_contextrW   rW   rX   Útest_custom_contextí  s
   rÃ   c                   C   s€   t t t¡t t¡t t¡? ƒdu sJ ‚t t t¡tt t¡t t¡ƒƒdu s)J ‚t t t¡tt t¡t t¡ƒƒdu s>J ‚d S r¥   )r   r   rN   r   rI   rM   r8   r:   rW   rW   rW   rX   Útest_functions_in_assumptionsö  s   (*.rÄ   c                   C   s8   t t t¡t t¡@ t t¡t t¡? ddu sJ ‚d S )Nr©   F)r   r   rN   r   rG   rI   rM   rW   rW   rW   rX   Útest_composite_askü  s
   ÿÿrÅ   c                   C   s  t dƒdu sJ ‚t dƒdu sJ ‚t t t¡ t t¡ƒdu s J ‚t t t¡ t t¡ƒd u s0J ‚t t t¡t t¡@ t t¡ƒdu sDJ ‚t t t¡t t¡@ ƒd u sTJ ‚t t t¡t t¡B t t¡ƒdu shJ ‚t t t¡t t¡B ƒd u sxJ ‚t t t¡t t¡? t t¡ƒdu sŒJ ‚t tt t¡t t¡ddt t¡ƒdu s£J ‚t tt t¡t t¡ddƒd u s¶J ‚t t	t t¡t 
t¡ƒt 
t¡ƒdu sËJ ‚t t	t t¡t 
t¡ƒƒd u sÜJ ‚t t	t t¡t t¡ƒt t¡ƒd u sñJ ‚t t t¡t t¡B t t¡t t¡B ƒdu sJ ‚d S )NTFr”   )r   r   rN   r   rM   rI   rF   rG   r9   r8   rO   rW   rW   rW   rX   Útest_composite_proposition  s*     ( ( (ÿÿÿ&*"*8rÆ   c                   C   sH   t t t¡t t¡ B ƒdu sJ ‚t t t¡t t¡ @ ƒdu s"J ‚d S rg   )r   r   rI   r   rW   rW   rW   rX   Útest_tautology  s   "&rÇ   c                   C   s¦   t t t¡t t¡t t¡@ ƒdu sJ ‚t t t¡t t¡t t¡B ƒd u s(J ‚t t t¡t t¡t t¡? ƒd u s<J ‚t t t¡t t¡t t¡?  ƒdu sQJ ‚d S rr   )r   r   rI   r   r   rM   rW   rW   rW   rX   Útest_composite_assumptions  s   (((.rÈ   c                  C   sÊ  t tdd„ ƒ G dd„ dtƒ} zrtƒ  td| ƒ W d  ƒ n1 s#w   Y  tƒ  tt t¡ƒdu s7J ‚W d  ƒ n1 sAw   Y  tƒ  tt td ¡ƒdu sWJ ‚W d  ƒ n1 saw   Y  W tƒ  t	d| ƒ W d  ƒ n1 szw   Y  t`ntƒ  t	d| ƒ W d  ƒ t`w 1 s—w   Y  t`w t td	d„ ƒ G d
d„ dt
ƒ}z*|ƒ t_tj t¡dd„ ƒ}tt t¡ƒdu sÈJ ‚tt td ¡ƒdu sÕJ ‚W t`nt`w t tdd„ ƒ dS )z7test that you can add keys to the ask system at runtimec                   S   ó   t t t¡ƒS r   ©r   r   Úmy_keyr   rW   rW   rW   rX   Ú<lambda>   ó    z(test_key_extensibility.<locals>.<lambda>c                   @   s   e Zd Zedd„ ƒZdS )z,test_key_extensibility.<locals>.MyAskHandlerc                 S   ó   dS rr   rW   ©Úexprrª   rW   rW   rX   r'   $  ó   z3test_key_extensibility.<locals>.MyAskHandler.SymbolN)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr'   rW   rW   rW   rX   ÚMyAskHandler#  s    rÖ   rË   NTrD   c                   S   rÉ   r   rÊ   rW   rW   rW   rX   rÌ   2  rÍ   c                   @   ó   e Zd ZdS )z+test_key_extensibility.<locals>.MyPredicateN©rÒ   rÓ   rÔ   rW   rW   rW   rX   ÚMyPredicate5  ó    rÙ   c                 S   rÎ   rr   rW   rÏ   rW   rW   rX   Ú_9  rÑ   z!test_key_extensibility.<locals>._c                   S   rÉ   r   rÊ   rW   rW   rW   rX   rÌ   @  rÍ   )rA   ÚAttributeErrorr   rB   r   r   r   rË   r   r   r   Úregisterr'   )rÖ   rÙ   rÛ   rW   rW   rX   Útest_key_extensibility  sB   ÿÿÿ€ÿþ
ÿþ

rÞ   c                  C   sL   ddl m}  G dd„ d| ƒ}tj |¡dd„ ƒ}tt |ƒ ¡ƒdu s$J ‚dS )	zBtest that new types can be added to the ask system at runtime
    r   )ÚBasicc                   @   r×   )z'test_type_extensibility.<locals>.MyTypeNrØ   rW   rW   rW   rX   ÚMyTypeH  rÚ   rà   c                 S   rÎ   rr   rW   rÏ   rW   rW   rX   rÛ   K  rÑ   z"test_type_extensibility.<locals>._TN)Z
sympy.corerß   r   rR   rÝ   r   )rß   rà   rÛ   rW   rW   rX   Útest_type_extensibilityC  s
   

rá   c                  C   sr   t ttjtjƒttjtjƒttjtjƒƒ} tjtjtjtjh}t| ƒ}t||ƒ}|tj tjtjtjhks7J ‚d S r   )	r;   r9   r   rG   rH   rI   rJ   r<   r   )Úknown_factsÚknown_facts_keysZknown_facts_cnfÚmappingrW   rW   rX   Útest_single_fact_lookupR  s   þ
"rå   c               
   C   sÔ   t tt t¡t t¡ƒtt t¡t t¡ƒtt t¡t t¡ƒƒ} t t¡t t¡t t¡t t¡h}t|| ƒtjtjht	ƒ ftjtjtjtjtjht	ƒ ftjtjtjtjht	ƒ ftjtjtjht	ƒ fikshJ ‚d S r   )
r;   r9   r   rG   r   rH   rI   rJ   r   Úset)râ   rã   rW   rW   rX   Útest_generate_known_facts_dict^  s   þ$ýÿrç   c               	      sŠ   t dƒ‰ tˆ ƒ} t | ¡}tƒ }|jD ]}| tdd„ t|t	dD ƒƒ¡ qt
ƒ |ks-J ‚‡ fdd„tƒ D ƒ}t|| ƒ}tƒ |ksCJ ‚dS )z)"Test that ask_generated.py is up-to-dater   c                 s   s     | ]}t |jj|jƒV  qd S r   )r   ÚargÚfunctionZis_Not)Ú.0ZlitrW   rW   rX   Ú	<genexpr>t  ó   € z.test_known_facts_consistent.<locals>.<genexpr>)Úkeyc                    s   g | ]}|ˆ ƒ‘qS rW   rW   )rê   Zpred©r   rW   rX   Ú
<listcomp>w  ó    z/test_known_facts_consistent.<locals>.<listcomp>N)r'   r   r   Zto_CNFræ   Úclausesr¿   Ú	frozensetÚsortedÚstrr   r   r   r   )ZfactZcnfrñ   ZclÚkeysrä   rW   rî   rX   Útest_known_facts_consistentk  s   

"
rö   c                   C   sª   t t dtdƒd tdƒd   ¡ƒdu sJ ‚t t ttdƒtdƒdd¡ƒdu s+J ‚t t ttdƒtdƒdd¡ƒdu s?J ‚t t ttdƒtdƒdd¡ƒdu sSJ ‚d S )Nl   Ò
>V3&¥Z
 rD   r|   Tr   r”   F)	r   r   rR   r4   r6   rO   r   r$   rG   rW   rW   rW   rX   Útest_Add_queries|  s   .((,r÷   c                   C   sJ   t t td ¡ƒ tt t¡ƒrJ ‚W d   ƒ d S 1 sw   Y  d S )NrD   )r   r   rM   r   r   rW   rW   rW   rX   Útest_positive_assumingƒ  s   "ÿrø   c                   C   ó   t tdd„ ƒ d S )Nc                   S   s   t tttƒ tjƒS r   )r   r#   r.   r   r   rI   rW   rW   rW   rX   rÌ   ‰  rð   z!test_issue_5421.<locals>.<lambda>©rA   Ú	TypeErrorrW   rW   rW   rX   Útest_issue_5421ˆ  ó   rü   c                   C   rù   )Nc                   S   s
   t tjƒS r   )r   r   rM   rW   rW   rW   rX   rÌ     s   
 z!test_issue_3906.<locals>.<lambda>rú   rW   rW   rW   rX   Útest_issue_3906Œ  rý   rþ   c                   C   sR   t t ttƒd ¡t t¡ƒd u sJ ‚t t ttƒd ¡ t t¡ƒdu s'J ‚d S )Nr|   T)r   r   rM   r.   r   rN   rW   rW   rW   rX   Útest_issue_5833  s   &,rÿ   c                   C   s    t tdd„ ƒ t tdd„ ƒ d S )Nc                   S   s    t t t¡t t¡t t¡@ ƒS r   )r   r   rM   r   rN   rW   rW   rW   rX   rÌ   –  ó     z!test_issue_6732.<locals>.<lambda>c                   S   s    t t t¡t t¡t t¡@ ƒS r   )r   r   rN   r   rM   rW   rW   rW   rX   rÌ   —  r   )rA   Ú
ValueErrorrW   rW   rW   rX   Útest_issue_6732•  s   r  c                   C   sl  t t ttƒ¡t t¡ƒdu sJ ‚t t ttƒ¡t t¡ƒdu s"J ‚t t ttƒ¡t t¡ƒdu s3J ‚t t ttƒ¡ƒd u s@J ‚t t ttƒ¡t t¡ƒd u sQJ ‚t t ttƒ¡t t¡ƒd u sbJ ‚t t tt	ddƒƒ¡ƒdu srJ ‚t t ttƒ¡t t¡t 
td ¡@ ƒdu sŠJ ‚t t ttƒ¡t t¡t td ¡@ ƒdu s¢J ‚t t ttƒ¡t t¡ƒd u s³J ‚t t tt	ddƒƒ¡ƒdu sÃJ ‚t t ttƒ¡t td ¡t 
td ¡@ ƒdu sÝJ ‚t t ttƒ¡t td ¡ƒd u sðJ ‚t t ttƒ¡t t¡ƒdu sJ ‚t t ttƒ¡t t¡ƒdu sJ ‚t t ttƒ¡t t¡ƒdu s&J ‚t t ttƒ¡ƒd u s4J ‚d S )NTFrD   rŒ   )r   r   rM   r3   r
   rN   rc   r   r2   r    rŸ   r¢   r0   r1   rI   rL   rW   rW   rW   rX   Útest_issue_7246š  s"   """"" 00" 4&$$$ r  c                   C   s&   t t ttƒ¡t t¡ƒdu sJ ‚d S rr   )r   r   rM   r0   r   rc   rW   rW   rW   rX   Útest_issue_7246_failing±  s   &r  c                  C   sÞ  t ddd} tt | ¡ƒdu sJ ‚tt | ¡ƒdu sJ ‚tt | ¡ƒdu s'J ‚t ddd} tt | ¡ƒdu s8J ‚tt | ¡ƒdu sCJ ‚tt | ¡ƒdu sNJ ‚t ddd} tt | ¡ƒd u s_J ‚tt | ¡ƒdu sjJ ‚t dddd} tt | ¡ƒdu s|J ‚tt | ¡ƒdu s‡J ‚tt | ¡ƒdu s’J ‚t ddd} tt | ¡ƒdu s£J ‚t ddd	} tt | ¡ƒdu s´J ‚tt | ¡ƒdu s¿J ‚t ddd
} tt | ¡ƒdu sÐJ ‚tt | ¡ƒd u sÛJ ‚tt 	| ¡ƒd u sæJ ‚t ddd} tt 
| ¡ƒdu s÷J ‚t ddd} tt | ¡ƒdu s	J ‚tt | ¡ƒdu sJ ‚t ddd} tt | ¡ƒdu s'J ‚tt | ¡ƒdu s3J ‚t ddd} tt | ¡ƒdu sEJ ‚tt | ¡ƒdu sQJ ‚t ddd} tt | ¡ƒdu scJ ‚tt | ¡ƒdu soJ ‚t ddd} tt | ¡ƒdu sJ ‚tt 	| ¡ƒdu sJ ‚t ddd} tt 	| ¡ƒdu sŸJ ‚t ddd} tt | ¡ƒdu s±J ‚t ddd} tt | ¡ƒdu sÃJ ‚tt | ¡ƒdu sÏJ ‚t ddd} tt | ¡ƒdu sáJ ‚tt | ¡ƒdu síJ ‚d S )Nr   T)rI   F)rL   r²   )rM   rQ   )rF   )rN   )r¢   )rQ   )rR   )rS   )rO   )rP   )rb   )rc   ©rG   )rH   )rK   )r&   r   r   rI   rL   rJ   rM   rN   rF   rc   rQ   rR   rS   rO   rP   rb   rG   rH   rK   rî   rW   rW   rX   Útest_check_old_assumption¸  sf   r  c                   C   sr   t t d¡ƒdu sJ ‚t t d¡ƒdu sJ ‚t t d¡ƒdu s!J ‚t t d¡ƒdu s,J ‚t t d¡ƒdu s7J ‚d S )Nr_   Fg      @g      @g       @)r   r   rG   rR   rS   rO   rP   rW   rW   rW   rX   Útest_issue_9636þ  s
   r  c                   C   sp   t t dt ¡ƒd u sJ ‚t t dt  ¡ƒd u sJ ‚t t dt ¡ƒd u s(J ‚t t dt  ¡ƒd u s6J ‚d S ©Nr   )r   r   rL   r   rI   rW   rW   rW   rX   Útest_autosimp_used_to_fail	  s    r	  c                     sf  ddl m‰  G ‡ fdd„dtƒ} z^tƒ  td| ƒ W d   ƒ n1 s$w   Y  tddd}tƒ  tt d	¡ƒs<J ‚W d   ƒ n1 sFw   Y  tƒ  tt |¡t |¡ƒs\J ‚W d   ƒ n1 sfw   Y  W t`nt`w G d
d„ dt	ƒ}z5|ƒ t_tj 
t¡dd„ ƒ}tj 
t¡‡ fdd„ƒ}tt d	¡ƒsžJ ‚tt |¡t |¡ƒs«J ‚W t`d S t`w )Nr   ©Ú	conjunctsc                       s(   e Zd Zedd„ ƒZe‡ fdd„ƒZdS )z/test_custom_AskHandler.<locals>.MersenneHandlerc                 S   ó,   ddl m} tt || d dƒ¡ƒrdS d S ©Nr   )r.   rD   r|   T©Zsympyr.   r   r   rG   ©rÐ   rª   r.   rW   rW   rX   r   	  ó   ÿz7test_custom_AskHandler.<locals>.MersenneHandler.Integerc                    ó   | ˆ |ƒv rdS d S rr   rW   rÏ   r
  rW   rX   r'   	  ó   ÿz6test_custom_AskHandler.<locals>.MersenneHandler.SymbolN)rÒ   rÓ   rÔ   rÕ   r   r'   rW   r
  rW   rX   ÚMersenneHandler	  s
    
r  Úmersenner   Tr  rŒ   c                   @   r×   )z1test_custom_AskHandler.<locals>.MersennePredicateNrØ   rW   rW   rW   rX   ÚMersennePredicate(	  rÚ   r  c                 S   r  r  r  r  rW   rW   rX   rÛ   ,	  r  z!test_custom_AskHandler.<locals>._c                    r  rr   rW   rÏ   r
  rW   rX   rÛ   1	  r  )Úsympy.logic.boolalgr  r   rB   r   r'   r   r   r  r   rÝ   r   )r  r   r  rÛ   rW   r
  rX   Útest_custom_AskHandler	  s2   
ÿÿÿ€


r  c                  C   s‚   G dd„ dt ƒ} z5| ƒ t_tj tt¡dd„ ƒ}tj ttt¡dd„ ƒ}tt dd¡ƒs.J ‚tt dd	d
¡ƒs9J ‚W t`d S t`w )Nc                   @   r×   )z.test_polyadic_predicate.<locals>.SexyPredicateNrØ   rW   rW   rW   rX   ÚSexyPredicate=	  rÚ   r  c                    s:   t | |gƒ}t‡ fdd„|D ƒƒsdS |d |d  dkS )Nc                 3   ó     | ]}t t |¡ˆ ƒV  qd S r   ©r   r   rR   ©rê   r‡   r©   rW   rX   rë   E	  rì   ú5test_polyadic_predicate.<locals>._.<locals>.<genexpr>FrD   r   é   ©ró   Úall)Úint1Úint2rª   r†   rW   r©   rX   rÛ   B	  s   z"test_polyadic_predicate.<locals>._c                    sP   t | ||gƒ}t‡ fdd„|D ƒƒsdS |d |d  dko'|d |d  dkS )Nc                 3   r  r   r  r  r©   rW   rX   rë   L	  rì   r  Fr|   rD   r  r   r  )r   r!  Zint3rª   r†   rW   r©   rX   rÛ   I	  s   (rw   r[   rŒ   é   é   )r   r   Z	sexyprimerÝ   r   r   )r  rÛ   rW   rW   rX   Útest_polyadic_predicate;	  s   

r$  c                  C   sF   t dƒjd u s	J ‚G dd„ dt ƒ} | dƒ}| dƒ}|j|ju s!J ‚d S )NZmypredicatec                   @   r×   )z5test_Predicate_handler_is_unique.<locals>.MyPredicateNrØ   rW   rW   rW   rX   rÙ   \	  rÚ   rÙ   Úmp1Úmp2)r   Zhandler)rÙ   r%  r&  rW   rW   rX   Ú test_Predicate_handler_is_uniqueV	  s
   r'  c                   C   st   t t td¡t t¡ƒsJ ‚t t td¡t t¡ƒrJ ‚t t td¡t t¡ƒr*J ‚t t td¡t t¡ƒs8J ‚d S r  )r   r   rœ   r   rc   rb   ÚnerW   rW   rW   rX   Útest_relationalc	  s    r)  )žZ	sympy.abcr   r   r   r   r   r   r   r	   r
   r   Zsympy.assumptionsr   r   r   r   r   Zsympy.assumptions.assumer   r   r   Zsympy.assumptions.cnfr   r   Zsympy.assumptions.factsr   r   r   r   Zsympy.assumptions.handlersr   Zsympy.assumptions.ask_generatedr   r   Zsympy.core.addr   Zsympy.core.numbersr   r   r    r!   r"   r#   Zsympy.core.singletonr$   Zsympy.core.powerr%   Zsympy.core.symbolr&   r'   Z(sympy.functions.combinatorial.factorialsr(   Z$sympy.functions.elementary.complexesr)   r*   r+   r,   Z&sympy.functions.elementary.exponentialr-   r.   Z(sympy.functions.elementary.miscellaneousr/   Z(sympy.functions.elementary.trigonometricr0   r1   r2   r3   r4   r5   r6   r7   r  r8   r9   r:   r;   r<   Zsympy.matricesr=   r>   Zsympy.testing.pytestr?   r@   rA   rB   rC   r`   rY   r\   r^   ra   rd   rf   rn   rp   rq   rt   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°   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)  rW   rW   rW   rX   Ú<module>   sÔ   0  ()0aj   v

KF

?i
O*J

:
	
!
-		&

F-