o
    ÎeÏ~ ã                   @   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/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG d dlHmIZImJZJmKZKmLZLmMZM d dlNmOZOmPZP d dlQmRZRmSZSmTZTmUZUmVZV d dlWZWd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-„ Zcd.d/„ Zdd0d1„ Zed2d3„ Zfd4d5„ Zgd6d7„ Zhd8d9„ ZieRd:d;„ ƒZjd<d=„ ZkeVd>d?„ ƒZld@dA„ ZmeRdBdC„ ƒZndDdE„ ZodFdG„ ZpeVdHdI„ ƒZqdJdK„ ZreVdLdM„ ƒZsdNdO„ ZtdPdQ„ ZudRdS„ ZvdTdU„ ZwdVdW„ ZxeRdXdY„ ƒZydZd[„ Zzd\d]„ Z{eVd^d_„ ƒZ|d`da„ Z}dbdc„ Z~ddde„ Zdfdg„ Z€eVdhdi„ ƒZdjdk„ Z‚eVdldm„ ƒZƒdndo„ Z„dpdq„ Z…drds„ Z†dtdu„ Z‡dvdw„ Zˆdxdy„ Z‰dzd{„ ZŠd|d}„ Z‹d~d„ ZŒd€d„ Zd‚dƒ„ ZŽeSd„d…„ ƒZd†d‡„ Zdˆd‰„ Z‘dŠd‹„ Z’dŒd„ Z“dŽd„ Z”dd‘„ Z•d’d“„ Z–eRd”d•„ ƒZ—d–d—„ Z˜d˜d™„ Z™dšd›„ Zšdœd„ Z›dždŸ„ Zœd d¡„ Zd¢d£„ Zžd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)ÚStrÚ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   © rX   úRD:\Projects\ConvertPro\env\Lib\site-packages\sympy/assumptions/tests/test_query.pyÚ
test_int_1   ó"   rZ   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é   TFrF   rW   rX   rX   rY   Útest_int_111   r[   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é   TFrF   rW   rX   rX   rY   Útest_int_12E   r[   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   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   Úmathr#   rW   rX   rX   rY   Útest_float_1Y   sF   rb   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ÚzerorG   rH   rI   rJ   rK   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rX   rY   Útest_zero_0‚   s$   re   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   rc   rd   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rX   rY   Útest_negativeone—   s&   rg   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   rG   r!   rH   rI   Ú	algebraicrJ   Úextended_realrK   rL   rM   rN   Úextended_positiverO   rP   rQ   rR   ÚinfiniterS   rT   rU   rV   Úpositive_infiniteÚnegative_infiniterX   rX   rX   rY   Útest_infinity­   s,   ro   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 rh   )r$   ÚNegativeInfinityr   r   rG   rH   rI   ri   rJ   rj   rK   rL   rM   rN   rO   Úextended_negativerP   rQ   rR   rl   r!   rS   rT   rU   rV   rm   rn   )ÚmmrX   rX   rY   Útest_neg_infinityÆ   s.   rs   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 rh   )r   r   rG   r"   rH   rI   ri   rJ   rj   rK   rL   rM   rN   rO   rd   rc   rP   rQ   rR   rl   rS   rT   rU   rV   rm   rn   rX   rX   rX   rY   Útest_complex_infinityà   s.   rt   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$   ÚNaNr   r   rG   rH   rI   ri   rJ   rj   rK   rL   rM   rN   rc   rd   rP   rQ   rR   rl   rS   rT   rU   rV   )ÚnanrX   rX   rY   Útest_nanú   s*   rx   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é   é   TFrE   é   éýÿÿÿrf   éûÿÿÿ)r    r   r   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   )ÚrrX   rX   rY   Ú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)r0   r   r   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rX   rY   Útest_sqrt_2B  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 ©NTFrE   r€   )r$   ÚPir   r   rG   rH   rI   ri   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rX   rY   Útest_piV  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 rh   )r$   ZExp1r   r   rG   rH   rI   ri   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rX   rY   Ú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 rh   )r$   ZGoldenRatior   r   rG   rH   rI   ri   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rX   rY   Útest_GoldenRatioÌ  r†   rˆ   c                  C   r‡   rh   )r$   ZTribonacciConstantr   r   rG   rH   rI   ri   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rX   rY   Ú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 )NTFrE   ry   rf   r€   r   )r   r   r   rG   rH   rI   ri   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rX   rY   Ú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,zTrE   Fr€   )r'   r   r   rR   rK   rj   ÚargsrN   rm   rk   rO   rn   rq   Zextended_nonzeror$   ZHalfr0   r-   r/   rd   rl   r.   r7   r5   )r   r   r   ÚarX   rX   rY   Ú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   rR   r7   r   r5   rX   rX   rX   rY   Útest_bounded_xfailS  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€   rE   N)
r   r   rG   r   rK   rM   rJ   rN   r   r/   rX   rX   rX   rY   Útest_commutativeZ  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   rK   r   r   rJ   rI   rL   rN   rM   ri   rH   rP   rQ   r7   r5   r.   r*   r,   r+   rX   rX   rX   rY   Útest_complexq  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€   Try   rE   é   rf   )r   r   rP   r   rH   rI   rN   rL   rQ   r   r   r   r*   r,   r+   rJ   r   r   r	   rO   r
   rX   rX   rX   rY   Ú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 ru   )r   r   rP   r   r   r   rH   rQ   rX   rX   rX   rY   Ú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   rP   r   r   r   rH   rX   rX   rX   rY   Ú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 ru   )r   r   rj   r   rm   rN   rd   rO   rn   r$   ÚInfinityrJ   rl   rX   rX   rX   rY   Ú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€   rE   r‘   ©Úevaluater   )r   r   rI   r   rH   rL   rJ   rN   rO   rc   ri   rP   rQ   r   r.   r7   r8   r3   r4   r5   r/   r1   r6   r2   ©ÚfÚgÚhrX   rX   rY   Ú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 )NFTrE   )r   r   rU   r   rV   rM   rS   rJ   rd   rK   r   r   r   rX   rX   rX   rY   Ú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 )	NFrE   Tr€   r   rš   ry   rz   )r   r   rM   r   rJ   rS   r   r   rK   r   rO   rN   rP   rQ   rH   rI   r/   r.   r%   r#   r    ©ÚeqrX   rX   rY   Ú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€   ry   )r   r   rH   r   rJ   rN   rP   rQ   rS   rI   r0   rL   rX   rX   rX   rY   Ú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 )NTFrE   r€   gffffffö?)r   r   rO   r   rN   rJ   rS   r   Únonpositiver   r5   r7   rK   rP   rQ   rH   r*   rX   rX   rX   rY   Ú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€   FrE   )r   r   rc   r   rJ   rN   rO   r   r*   r/   r.   r   r5   r7   rX   rX   rX   rY   Útest_nonzeroX  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   rd   r   rJ   rN   rO   Únonnegativer¦   r   rc   r*   rH   rP   rQ   rX   rX   rX   rY   Ú	test_zerou  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€   ry   rE   rf   )r   r   rQ   r   rH   rI   rN   rL   rP   r   r   r   r*   r   r   r	   rO   r
   rX   rX   rX   rY   Ú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   rQ   r   r   r   rH   rX   rX   rX   rY   Ú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   rQ   r   r   r   rH   rP   rX   rX   rX   rY   Ú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€   rz   )r   r   rS   r   rH   r   rX   rX   rX   rY   Ú
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€   ry   rE   rš   )r   r   rN   r   rO   rc   r   r©   rM   r   r   r   rJ   r5   r7   r.   r#   rP   rQ   r/   r)   rH   r*   ©ÚassumptionsrX   rX   rY   Ú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 )Nrf   r   rE   F)r   r   r¦   rN   r   r0   rM   rX   rX   rX   rY   Útest_nonpositive7  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 )Nrf   Fr   rE   )r   r   r©   rO   r   r0   rM   rX   rX   rX   rY   Útest_nonnegativeA  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€   éþÿÿÿFrE   )r   r   rJ   r   rc   rN   rO   rH   rP   rS   r0   r   rK   rM   rX   rX   rX   rY   Útest_real_basicJ  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   rJ   r   r0   rO   r   rH   rN   rM   rI   rQ   rP   r   r   r   r#   r/   rX   rX   rX   rY   Útest_real_powa  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š   rE   )r   r   rJ   r7   r   r5   r.   r#   r   r/   rK   rM   r%   rH   r,   r+   r¢   rX   rX   rY   Ú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€   rz   ry   rE   TFr   ©rK   )©é   é   r}   )r¼   é   r   ©r}   r   r\   rº   r¼   r   r¾   rµ   )	r   r   rU   r>   r   r'   r?   rV   Úsimplify)r   ÚAÚBÚCZ_ArX   rX   rY   Ú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€   ry   r‘   rE   é   é   Frš   r   gÃõ(\Â@)r   r   ri   r   r   r0   r    r#   r.   r7   r8   r3   r4   r5   rc   r/   r1   r6   r2   r   Ztranscendentalrœ   rX   rX   rY   Ú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   rH   r   r   ÚaddÚclearrX   rX   rX   rY   Ú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   rH   r   r   rÇ   )Zlocal_contextrX   rX   rY   Ú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   rO   r   rJ   rN   r9   r;   rX   rX   rX   rY   Ú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   rO   r   rH   rJ   rN   rX   rX   rX   rY   Ú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   rO   r   rN   rJ   rG   rH   r:   r9   rP   rX   rX   rX   rY   Ú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 rh   )r   r   rJ   r   rX   rX   rX   rY   Ú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 ru   )r   r   rJ   r   r   rN   rX   rX   rX   rY   Ú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   rX   rX   rX   rY   Ú<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 ru   rX   ©Úexprr±   rX   rX   rY   r(   %  ó   z3test_key_extensibility.<locals>.MyAskHandler.SymbolN)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr(   rX   rX   rX   rY   ÚMyAskHandler$  s    rÞ   rÓ   NTrE   c                   S   rÑ   r•   rÒ   rX   rX   rX   rY   rÔ   5  rÕ   c                   @   ó   e Zd ZdS )z+test_key_extensibility.<locals>.MyPredicateN©rÚ   rÛ   rÜ   rX   rX   rX   rY   ÚMyPredicate8  ó    rá   c                 S   rÖ   ru   rX   r×   rX   rX   rY   Ú_<  rÙ   z!test_key_extensibility.<locals>._c                   S   rÑ   r•   rÒ   rX   rX   rX   rY   rÔ   C  rÕ   )rB   ÚAttributeErrorr   rC   r   r   r   rÓ   r   r   r   Úregisterr(   )rÞ   rá   rã   rX   rX   rY   Ú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à   rX   rX   rX   rY   ÚMyTypeK  râ   rè   c                 S   rÖ   ru   rX   r×   rX   rX   rY   rã   N  rÙ   z"test_type_extensibility.<locals>._TN)Z
sympy.corerç   r   rS   rå   r   )rç   rè   rã   rX   rX   rY   Útest_type_extensibilityF  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<   r:   r   rH   rI   rJ   rK   r=   r   )Úknown_factsÚknown_facts_keysZknown_facts_cnfÚmappingrX   rX   rY   Útest_single_fact_lookupU  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<   r:   r   rH   r   rI   rJ   rK   r   Úset)rê   rë   rX   rX   rY   Útest_generate_known_facts_dicta  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litrX   rX   rY   Ú	<genexpr>w  ó   € z.test_known_facts_consistent.<locals>.<genexpr>)Úkeyc                    s   g | ]}|ˆ ƒ‘qS rX   rX   )rò   Úpred©r   rX   rY   Ú
<listcomp>z  ó    z/test_known_facts_consistent.<locals>.<listcomp>N)r(   r   r   Zto_CNFrî   ÚclausesrÇ   Ú	frozensetÚsortedÚstrr   r   r   r   )ZfactZcnfrú   ÚclÚkeysrì   rX   r÷   rY   Útest_known_facts_consistentn  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
 rE   r€   Tr   rš   F)	r   r   rS   r5   r7   rP   r   r$   rH   rX   rX   rX   rY   Ú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 )NrE   )r   r   rN   r   r   rX   rX   rX   rY   Ú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   rJ   rX   rX   rX   rY   rÔ   Œ  rù   z!test_issue_5421.<locals>.<lambda>©rB   Ú	TypeErrorrX   rX   rX   rY   Útest_issue_5421‹  ó   r  c                   C   r  )Nc                   S   s
   t tjƒS r•   )r   r   rN   rX   rX   rX   rY   rÔ     s   
 z!test_issue_3906.<locals>.<lambda>r  rX   rX   rX   rY   Ú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   rN   r/   r   rO   rX   rX   rX   rY   Ú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   rN   r   rO   rX   rX   rX   rY   rÔ   ™  ó     z!test_issue_6732.<locals>.<lambda>c                   S   s    t t t¡t t¡t t¡@ ƒS r•   )r   r   rO   r   rN   rX   rX   rX   rY   rÔ   š  r
  )rB   Ú
ValueErrorrX   rX   rX   rY   Ú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 )NTFrE   r‘   )r   r   rN   r4   r
   rO   rd   r   r3   r    r¦   r©   r1   r2   rJ   rM   rX   rX   rX   rY   Útest_issue_7246  s"   """"" 00" 4&$$$ r  c                   C   s&   t t ttƒ¡t t¡ƒdu sJ ‚d S ru   )r   r   rN   r1   r   rd   rX   rX   rX   rY   Ú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} 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 s2J ‚t ddd} tt | ¡ƒdu sDJ ‚tt | ¡ƒdu sPJ ‚t ddd} tt | ¡ƒdu sbJ ‚tt | ¡ƒdu snJ ‚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 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)rJ   F)rM   r¹   )rN   )rG   )rO   )r©   )rR   )rS   )rT   )rP   )rQ   )rc   )rd   ©rH   )rI   )rL   )r'   r   r   rJ   rM   rK   rN   rO   rG   rd   rR   rS   rT   rP   rQ   rc   rH   rI   rL   r÷   rX   rX   rY   Ú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   rH   rS   rT   rP   rQ   rX   rX   rX   rY   Ú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   rM   r   rJ   rX   rX   rX   rY   Ú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   ó    t t t| d dƒ¡ƒrdS d S ©NrE   r€   T©r   r   rH   r/   r×   rX   rX   rY   r   	  ó   ÿz7test_custom_AskHandler.<locals>.MersenneHandler.Integerc                    ó   | ˆ |ƒv rdS d S ru   rX   r×   r  rX   rY   r(   	  ó   ÿz6test_custom_AskHandler.<locals>.MersenneHandler.SymbolN)rÚ   rÛ   rÜ   rÝ   r   r(   rX   r  rX   rY   ÚMersenneHandler	  s
    
r  Úmersenner   Tr  r‘   c                   @   rß   )z1test_custom_AskHandler.<locals>.MersennePredicateNrà   rX   rX   rX   rY   ÚMersennePredicate*	  râ   r  c                 S   r  r  r  r×   rX   rX   rY   rã   .	  r  z!test_custom_AskHandler.<locals>._c                    r  ru   rX   r×   r  rX   rY   rã   2	  r  )Úsympy.logic.boolalgr  r   rC   r   r(   r   r   r  r   rå   r   )r  r   r  rã   rX   r  rY   Ú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à   rX   rX   rX   rY   Ú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   rS   ©rò   rŒ   r°   rX   rY   ró   F	  rô   ú5test_polyadic_predicate.<locals>._.<locals>.<genexpr>FrE   r   é   ©rü   Úall)Úint1Úint2r±   r‹   rX   r°   rY   rã   C	  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°   rX   rY   ró   M	  rô   r%  Fr€   rE   r&  r   r'  )r)  r*  Zint3r±   r‹   rX   r°   rY   rã   J	  s   (r{   r\   r‘   é   é   )r   r   Z	sexyprimerå   r   r   )r!  rã   rX   rX   rY   Útest_polyadic_predicate<	  s   

r-  c                  C   sN   t dƒjd u s	J ‚G dd„ dt ƒ} | tdƒƒ}| tdƒƒ}|j|ju s%J ‚d S )NZmypredicatec                   @   rß   )z5test_Predicate_handler_is_unique.<locals>.MyPredicateNrà   rX   rX   rX   rY   rá   ]	  râ   rá   Úmp1Úmp2)r   Úhandlerr&   )rá   r.  r/  rX   rX   rY   Ú test_Predicate_handler_is_uniqueW	  s
   r1  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   rd   rc   ÚnerX   rX   rX   rY   Útest_relationald	  s    r3  )Ÿ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'   r(   Z(sympy.functions.combinatorial.factorialsr)   Z$sympy.functions.elementary.complexesr*   r+   r,   r-   Z&sympy.functions.elementary.exponentialr.   r/   Z(sympy.functions.elementary.miscellaneousr0   Z(sympy.functions.elementary.trigonometricr1   r2   r3   r4   r5   r6   r7   r8   r  r9   r:   r;   r<   r=   Zsympy.matricesr>   r?   Zsympy.testing.pytestr@   rA   rB   rC   rD   ra   rZ   r]   r_   rb   re   rg   ro   rs   rt   rx   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-  r1  r3  rX   rX   rX   rY   Ú<module>   sÔ   0  ()0aj   v

KF

?i
O*J

:
	
!
-		(

F+