a
    {þdzQ ã                   @   s   d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZmZmZ d dl m!Z!m"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; d dl<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZE d dlFmGZG d dlHmIZI d dlJmKZK d dlLmMZM d dlNmOZOmPZP d dlQmRZR d dlSmTZT d dlmUZU d dlVmWZWmXZX d dlYmZZZ d dl[m\Z\ d dl]m^Z^m_Z_m`Z` edƒ\ZaZbZced d!d"Zded#d!d$\ZeZfed%d!d&Zged'd!d(Zhed%d!d)Zied'd!d*Zjed+d!d,Zked-d!d.Zled/d!d0Zmed-d!d1Zned/d!d2Zoed3d!d4Zped5d!d6Zqed7d!d!d8Zrd9d:„ Zsd;d<„ Ztd=d>„ Zud?d@„ ZvdAdB„ ZwdCdD„ ZxdEdF„ ZydGdH„ ZzdIdJ„ Z{dKdL„ Z|dMdN„ Z}dOdP„ Z~dQdR„ ZdSdT„ Z€dUdV„ ZdWdX„ Z‚dYdZ„ Zƒd[d\„ Z„d]d^„ Z…e_d_d`„ ƒZ†dadb„ Z‡dcdd„ Zˆdedf„ Z‰dgdh„ ZŠdidj„ Z‹dkdl„ ZŒe^dmdn„ ƒZdodp„ ZŽdqdr„ Ze_dsdt„ ƒZdudv„ Z‘dwdx„ Z’dydz„ Z“d{d|„ Z”d}d~„ Z•dd€„ Z–dd‚„ Z—dƒd„„ Z˜d…d†„ Z™d‡dˆ„ Zšd‰dŠ„ Z›d‹dŒ„ ZœddŽ„ Zdd„ Zžd‘d’„ ZŸd“d”„ Z d•d–„ Z¡d—d˜„ Z¢d™dš„ Z£d›dœ„ Z¤ddž„ Z¥dŸd „ Z¦d¡d¢„ Z§d£d¤„ Z¨d¥d¦„ Z©d§d¨„ Zªd©dª„ Z«d«d¬„ Z¬d­d®„ Z­d¯d°„ Z®d±d²„ Z¯d³d´„ Z°dµd¶„ Z±d·d¸„ Z²d¹dº„ Z³d»d¼„ Z´d½d¾„ Zµd¿dÀ„ Z¶e^dÁdÂ„ ƒZ·e_dÃdÄ„ ƒZ¸e_dÅdÆ„ ƒZ¹e_dÇdÈ„ ƒZºdÉdÊ„ Z»dËdÌ„ Z¼dÍdÎ„ Z½dÏdÐ„ Z¾dÑdÒ„ Z¿dÓdÔ„ ZÀdÕdÖ„ ZÁd×dØ„ ZÂdÙdÚ„ ZÃdÛdÜ„ ZÄdÝdÞ„ ZÅdßdà„ ZÆdádâ„ ZÇdãdä„ ZÈdådæ„ ZÉdçdè„ ZÊdédê„ ZËdëdì„ ZÌdídî„ ZÍdïdð„ ZÎdñdò„ ZÏdódô„ ZÐdõdö„ ZÑd÷dø„ ZÒdùdú„ ZÓdûdü„ ZÔdýdþ„ ZÕdÿd „ ZÖdS (  é    )ÚAccumBounds)ÚAdd)ÚLambdaÚdiff)ÚMod)ÚMul)ÚEÚFloatÚIÚRationalÚnanÚooÚpiÚzoo)ÚPow)ÚS)ÚSymbolÚsymbols)ÚargÚ	conjugateÚimÚre)ÚexpÚlog)ÚacothÚasinhÚatanhÚcoshÚcothÚsinhÚtanh)Úsqrt)ÚacosÚacotÚacscÚasecÚasinÚatanÚatan2ÚcosÚcotÚcscÚsecÚsinÚsincÚtan)ÚbesseljÚjn)Ú	Heaviside)ÚMatrix)ÚcancelÚgcd)Úlimit)ÚO)Úseries)ÚImageSet)Ú	FiniteSetÚInterval)Úsimplify)Ú	unchanged)ÚArgumentIndexError)ÚNeÚEq)Ú	Piecewise)ÚSetExpr)ÚXFAILÚslowÚraiseszx y zÚrT©Úrealzk m©ÚintegerÚp©ÚpositiveÚn©Únegative)Únonpositive©ZnonnegativeÚnz)ÚnonzeroÚep)Zextended_positiveÚen)Zextended_negative)Zextended_nonpositive)Zextended_nonnegativeÚenz)Zextended_nonzeroÚa)Ú	algebraicÚna)rT   rY   c            	      C   s6  t dƒ\} }t ddd}tjtdƒks*J ‚ttƒtu s:J ‚ttƒtu sJJ ‚ttƒtddƒks`J ‚ttƒttƒ tddƒks~J ‚ttt ƒtt ks–J ‚tt t ƒt t ks²J ‚d	ttƒ t	j
u sÈJ ‚d	ttƒ t	j
u sÞJ ‚d	ttƒ tddƒksøJ ‚d
ttƒ tddƒksJ ‚td	ƒd	ks&J ‚t|t ƒtt|ƒ ksDJ ‚tt| ƒƒ| ksZJ ‚tt| ƒƒ| td| d  ƒ ks€J ‚tt| ƒƒtd| d  ƒks¢J ‚tt| ƒƒdtdd| d   ƒ|   ksÐJ ‚tt| ƒƒd|  ksêJ ‚tt| ƒƒtdd| d   ƒksJ ‚tt|| ƒƒ|t| d |d  ƒ ks<J ‚ttt ƒttƒt ksZJ ‚tt t ƒttƒ t ks|J ‚tdt ƒtdƒ t ksœJ ‚ttƒd	ks®J ‚tt ƒd	ksÂJ ‚tdt ƒd	ksØJ ‚tdt ƒd	ksîJ ‚tddd  t ƒd	ksJ ‚tddd  t ƒd	ks*J ‚ttd ƒdks@J ‚tt d ƒdksXJ ‚tttd
dƒ ƒdkstJ ‚tttddƒ ƒdksJ ‚t dddd}t ddd}tt| d ƒd|d t	j  ksÒJ ‚ttt d ƒjtksîJ ‚tt| d ƒd	ksJ ‚ttt ƒd	ksJ ‚ttt ƒ td¡ttt d ƒ td¡ksPJ ‚ttd ƒt	jtdƒ kspJ ‚tttddƒ ƒtddƒtdƒ ksšJ ‚ttd ƒt	jtdƒ ksºJ ‚tt d ƒtddƒtdƒ ksàJ ‚tttddƒ ƒt	jtdƒ ksJ ‚tttddƒ ƒtddƒtdƒ ks0J ‚ttd ƒt	jksHJ ‚tt d ƒtddƒksfJ ‚tttddƒ ƒtddƒksˆJ ‚tttddƒ ƒtddƒksªJ ‚tttdd
ƒ ƒtd
td
ƒ d ƒksÖJ ‚tttdd
ƒ ƒtd
td
ƒ d ƒksJ ‚tttdd
ƒ ƒtttdd
ƒ ƒks,J ‚tttdd
ƒ ƒtttdd
ƒ ƒksVJ ‚tttdd
ƒ ƒtttdd
ƒ ƒ ks‚J ‚tttdd
ƒ ƒtttdd
ƒ ƒ ks®J ‚tttdd
ƒ ƒtttdd
ƒ ƒ ksÚJ ‚ttd ƒtdtdƒ d ƒks J ‚ttd ƒtddƒtd
ƒd  ks(J ‚ttd ƒtdƒ d tdƒd  ksTJ ‚tttd
dƒ ƒtdƒd tdƒd  ks„J ‚tttddƒ ƒtdƒ d tdƒd  ks¶J ‚tttddƒ ƒtdƒd tdƒd  ksæJ ‚tttdd ƒ ƒttd  ƒks
J ‚tttd!d ƒ ƒttd  ƒ ks0J ‚tttd"d ƒ ƒttd  ƒ ksVJ ‚tttd#d ƒ ƒttd  ƒkszJ ‚t| t ƒt| ƒt ks˜J ‚ttt ƒd	ks®J ‚tdt t ƒd	ksÈJ ‚tdt t d ƒtdƒksêJ ‚tdt t tt  d ƒdtdt   tdƒ k	s$J ‚ttt t ƒttt ƒt k	sJJ ‚ttƒjdu 	s^J ‚td	dd$j	srJ ‚ttƒjd u 	s†J ‚ttƒjdu 	sšJ ‚t d%dd&}tt| ƒj	sºJ ‚t d'ddd(}t|ƒj!du 	sÜJ ‚t|ƒj!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	dƒƒƒt%t't(| t| ƒƒt&d	dƒƒƒk
spJ ‚t)t*dd)ƒƒd*d+g D ]T}t*|d d ƒD ]<}|t | } t+t,t| ƒƒtt,| ƒƒ ƒ}|d,k 
sšJ ‚
qš
q†td	dd$j-du 
sôJ ‚ttt dd$j-du sJ ‚tt.dddd$dd$j-du s2J ‚d S )-Núx yÚzT©Z	imaginaryé   éÿÿÿÿéþÿÿÿé   r   é   é   é   éýÿÿÿé
   éI   é   ég   ÚneF©rJ   ÚevenÚe©rl   é   é   éûÿÿÿé   éûÿÿé   éùÿÿÿéõÿÿÿéh   éi   éj   é˜ÿÿÿé–ÿÿÿ©ÚevaluateÚq©ÚrationalÚqn)r€   rT   é   é<   éU   çê-™—q=)/r   r-   Únargsr:   r   r   r   r   r
   r   ÚZeror   r&   r'   r!   r"   r#   r$   r%   r(   r   r   ÚHalfÚkÚfuncÚsubsÚmrF   Úis_realÚis_algebraicrX   rZ   r   Úis_rationalÚ
isinstancer   r   rB   r;   r9   r   ÚlistÚrangeÚabsÚfloatÚis_zeror   )	ÚxÚyr\   rj   rm   r~   r   ÚdrN   © r™   ú|/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/sympy/functions/elementary/tests/test_trigonometric.pyÚtest_sin3   sÂ    &".&," (2 * &&*"",,**,,,&(,020$&&$":&$& ÿr›   c                  C   sÖ   dD ]Ì} t d|  | d ƒD ]´}|t |  }t|td  ƒt|ƒksRJ d|| f ƒ‚t|td  ƒt|ƒ ks|J d|| f ƒ‚t|ƒt|td  ƒks¤J d|| f ƒ‚t|ƒ t|td  ƒksJ d|| f ƒ‚qqd S )N)r^   ra   ro   rc   rb   rd   rf   rt   é   é   é   é   é(   rƒ   éx   r`   ra   úfails for %d*pi/%d)r’   r   r-   r)   )r˜   rN   r–   r™   r™   rš   Útest_sin_cos²   s    (*(r£   c                   C   sN   t tƒ tdd¡ttd d  td d  td d  ttd ƒ ksJJ ‚d S )	Nr   é	   ro   rd   rb   r¡   rh   i°  )r-   r–   r8   r7   r™   r™   r™   rš   Útest_sin_series¼   s    2ÿr¥   c                   C   s°  t tƒ t¡t ttt ƒtt t ƒ  d ks6J ‚t tƒ t¡dttd ƒ dttd ƒd   kslJ ‚t tƒ t¡tdtt	tƒdƒtt
ttƒdƒ@ fdttd ƒ ttd ƒd d  dfƒksÊJ ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksJ ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksNJ ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksJ ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksÒJ ‚t t tƒƒ t¡ td¡ ¡ t tƒ t¡ tt dƒ¡ ¡ ksJ ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksVJ ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ks˜J ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksÚJ ‚t ttƒƒ t¡ttt   d ttt  d  ksJ ‚t tƒ t¡dttƒ ks4J ‚t tƒ t¡tttd  ddks\J ‚t tƒ t¡dtttd  dd ksˆJ ‚t ttƒƒ t¡t ttƒƒks¬J ‚d S ©Nra   r^   r   Tro   Fr|   )r-   r–   Úrewriter   r
   r/   r*   rA   r@   r   r   r   r   r‹   rN   r   r    r   r)   r   r   r+   r,   r™   r™   r™   rš   Útest_sin_rewriteÁ   sˆ    66"&ÿÿÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
: (,r¨   c                 C   sp   ddl m} t| |ƒsJ ‚|| |ƒƒ| |ƒks2J ‚|| t|dddƒƒ|ksPJ ‚t| |ƒ| ƒ ¡ dk slJ ‚d S )Nr   )Úexpand_trigr^   Fr|   ç»½×Ùß|Û=)Úsympy.core.functionr©   r=   r   r“   rN   )ÚfÚirm   r©   r™   r™   rš   Ú_test_extrigÞ   s
    r®   c                   C   s”  t tt ƒjddt tƒttƒ ttƒt tƒ  ks8J ‚t tt ƒjddt tƒttƒ ttƒt tƒ  kspJ ‚t tt ƒjddttƒt tƒ t tƒttƒ  ks¨J ‚t dt ƒjdddt tƒ ttƒ ksÔJ ‚t dt ƒjdddt tƒd  dt tƒ  ks
J ‚t dt ƒjdddt tƒd  ttƒ dt tƒ ttƒ  ksPJ ‚tt ddt dƒ tdƒ ƒ tt ddt dƒd  dt dƒ  ƒ d S )	NT©Ztrigra   ro   éüÿÿÿrc   éøÿÿÿr^   )r-   r–   r—   Úexpandr)   r®   r™   r™   r™   rš   Útest_sin_expansionè   s    888,6Fr³   c                   C   s~  t tt tƒƒtddƒksJ ‚t tdtƒƒtddƒks:J ‚t tt dƒƒtddƒksXJ ‚t tddtj ƒƒtddƒkszJ ‚t tdtjtddƒ ƒƒtddƒks¢J ‚t ttjtddƒ tjtddƒ ƒƒtdt tjtddƒ ƒƒksæJ ‚t ttjd tjd ƒƒtt tjd ƒt tjd ƒƒks$J ‚t ttjtddƒ tjtdd	ƒ ƒƒtt tjtdd	ƒ ƒt tjtddƒ ƒƒkszJ ‚d S )
Nr_   r^   r   ra   ro   rc   rh   rb   rd   )r-   r   r   r   ÚPir   r™   r™   r™   rš   Útest_sin_AccumBoundsõ   s    "(D>rµ   c                   C   s*   t tƒ ¡ ttƒksJ ‚ttdd„ ƒ d S )Nc                   S   s   t tƒ d¡S ©Nra   )r-   r–   Úfdiffr™   r™   r™   rš   Ú<lambda>  ó    z test_sin_fdiff.<locals>.<lambda>)r-   r–   r·   r)   rE   r>   r™   r™   r™   rš   Útest_sin_fdiff   s    rº   c                   C   s  t t ƒt tƒ ksJ ‚tt ƒttƒks.J ‚tt ƒttƒ ksFJ ‚tt ƒttƒ ks^J ‚t tt ƒt tƒ ksxJ ‚t tdt  ƒt tƒks”J ‚t tdt  ƒt tƒ ks²J ‚t tdt  ƒt tƒksÎJ ‚t tdt  ƒt tƒ ksìJ ‚ttt ƒttƒ ksJ ‚ttdt  ƒttƒks&J ‚ttdt  ƒttƒ ksFJ ‚ttdt  ƒttƒksdJ ‚ttdt  ƒttƒ ks„J ‚ttt ƒttƒksžJ ‚ttdt  ƒttƒks¼J ‚ttt ƒttƒksÖJ ‚ttdt  ƒttƒksôJ ‚t td t ƒttƒksJ ‚t ttddƒ t ƒttƒ ks8J ‚t ttddƒ t ƒttƒks\J ‚ttd t ƒt tƒkszJ ‚tttddƒ t ƒt tƒ ks J ‚tttddƒ t ƒt tƒksÄJ ‚ttd t ƒttƒksâJ ‚tttddƒ t ƒttƒksJ ‚tttddƒ t ƒttƒks*J ‚ttd t ƒttƒksHJ ‚tttddƒ t ƒttƒkslJ ‚tttddƒ t ƒttƒksJ ‚t td t ƒttƒks®J ‚ttd t ƒt tƒ ksÎJ ‚ttd t ƒttƒ ksîJ ‚ttd t ƒttƒ ksJ ‚d S )Nra   ro   rc   rb   )r-   r–   r)   r/   r*   r   r   r™   r™   r™   rš   Útest_trig_symmetry  sD      &$&$$$$$  r»   c                  C   s	  t dƒ\} }tjtdƒksJ ‚ttƒtu s.J ‚ttƒtddƒksDJ ‚ttƒttƒ tddƒksbJ ‚ttt ƒtu svJ ‚tt t ƒtu sŒJ ‚ttƒtu sœJ ‚tdƒdks¬J ‚tt	| ƒƒ| ksÀJ ‚tt
| ƒƒdtd| d  ƒ ksäJ ‚tt| ƒƒtd| d  ƒksJ ‚tt| ƒƒdtdd| d   ƒ ks0J ‚tt| ƒƒtdd| d   ƒksVJ ‚tt| ƒƒd|  kspJ ‚tt|| ƒƒ| t| d |d  ƒ ksœJ ‚ttt ƒttƒks¶J ‚tt t ƒttƒksÒJ ‚tdt ƒtdƒksìJ ‚ttd ƒdksJ ‚tt d ƒdksJ ‚ttd ƒdks0J ‚tt d ƒdksHJ ‚tddd	  d t d ƒdksnJ ‚td
dd  d t d ƒdks”J ‚t dddd}t ddd}tt| d ƒdksÈJ ‚tt| d ƒd|d  ksêJ ‚ttƒdksüJ ‚tt ƒdksJ ‚tdt ƒdks&J ‚tdt ƒdks<J ‚tdt ƒdksRJ ‚ttd ƒtjksjJ ‚tttddƒ ƒtddƒksŒJ ‚ttd ƒtjtdƒ ks¬J ‚tt d ƒtjtdƒ ksÎJ ‚tttddƒ ƒtddƒtdƒ ksøJ ‚tttddƒ ƒtddƒtdƒ ks"J ‚ttd ƒtjtdƒ ksBJ ‚tt d ƒtjtdƒ ksdJ ‚tttd
dƒ ƒtddƒtdƒ ksŽJ ‚tttddƒ ƒtddƒtdƒ ks¸J ‚tttddƒ ƒtdƒd d ksàJ ‚tttddƒ ƒtdƒd d ksJ ‚tttddƒ ƒtttddƒ ƒ ks4J ‚tttddƒ ƒtttddƒ ƒ ks`J ‚tttddƒ ƒtttddƒ ƒ ksŒJ ‚tttddƒ ƒtttddƒ ƒks¶J ‚tttddƒ ƒtttddƒ ƒ ksâJ ‚ttd ƒtdtdƒ d ƒksJ ‚ttd ƒtdƒd tdƒd  ks2J ‚tttddƒ ƒtdƒ d tdƒd  ksdJ ‚tttd
dƒ ƒtdƒd tdƒd  ks”J ‚tttddƒ ƒtdƒ d tdƒd  ksÆJ ‚tttddƒ ƒttd ƒ ksìJ ‚tttddƒ ƒttd ƒ ksJ ‚tttddƒ ƒttd ƒ ks8J ‚tttddƒ ƒttd ƒ ks^J ‚t| t ƒt| ƒksxJ ‚ttt t ƒttt ƒksšJ ‚ttƒjdu s®J ‚tddd jsÂJ ‚ttƒjd u sÖJ ‚ttƒjdu sêJ ‚td!dd"}tt| ƒjs
J ‚tttdd
ƒ ƒjs$J ‚ttt ƒdt ks>J ‚tdt t ƒdksXJ ‚tddd jdu spJ ‚ttddƒƒjdu sŠJ ‚ttddd dd jd u sªJ ‚ttdd#ƒƒd$d%g D ]T}td| d ƒD ]<}|t | } t t!t| ƒƒtt!| ƒƒ ƒ}|d&k sÔJ ‚qÔqÀd S )'Nr[   r^   r_   r`   ra   r   re   rf   rg   rh   ri   rN   TFrk   rm   rn   rb   rr   ro   rc   é   rd   rq   rs   rt   rw   rx   ry   rz   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‰   rF   r   rŽ   rX   rZ   r   r•   r‘   r’   r“   r”   )r–   r—   rN   rm   r~   r˜   r™   r™   rš   Útest_cos*  sž    $"*&,&&"" "** "**((,,,*,&*202&&&&" r½   c                  C   st   t ddƒ} ttttfD ]X}|| t ƒ|td ƒks6J ‚|dt ƒ|td ƒksRJ ‚|dt ƒ|dt ƒksJ ‚qd S )Nz!123456789012345678901234567890.25Ú rc   g     €@rr   gÍÌÌÌÌÌ@ghfffffæ?)r	   r-   r)   r/   r*   r   )ÚcÚclsr™   r™   rš   Útest_issue_6190“  s
    
rÁ   c                   C   sZ   t tƒ tdd¡dtd d  td d  td d  td	 d
  ttd ƒ ksVJ ‚d S )Nr   r¤   r^   ra   rc   rž   rd   éÐ  rr   i€  )r)   r–   r8   r7   r™   r™   r™   rš   Útest_cos_series›  s    >ÿrÃ   c                	   C   s´  t tƒ t¡ttt ƒd tt t ƒd  ks4J ‚t tƒ t¡dttd ƒd  dttd ƒd   ksnJ ‚t tƒ t¡tdtt	tƒdƒtt
tdt ƒdƒ@ fttd ƒd d ttd ƒd d  dfƒksÔJ ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksJ ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksXJ ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksšJ ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksÜJ ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksJ ‚t t tƒƒ t¡ td¡ ¡ t tƒ t¡ tt dƒ¡ ¡ ks`J ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ks¢J ‚t ttƒƒ t¡ td¡ ¡ t tƒ t¡ ttdƒ¡ ¡ ksäJ ‚t ttƒƒ t¡tt d tt  d  ksJ ‚t tƒ t¡dttƒ ks6J ‚t tƒ t¡tttd  ddks^J ‚t tƒ t¡dtt td  dd ksŒJ ‚t ttƒƒ t¡t ttƒƒks°J ‚d S r¦   )r)   r–   r§   r   r
   r/   r*   rA   r@   r   r   r   r   r‹   rN   r   r    r   r-   r   r   r,   r+   r™   r™   r™   rš   Útest_cos_rewrite   sˆ    4:&*ÿÿÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
2 (.rÄ   c                   C   sŒ  t tt ƒjddt tƒt tƒ ttƒttƒ  ks8J ‚t tt ƒjddt tƒt tƒ ttƒttƒ  kspJ ‚t tt ƒjddt tƒt tƒ ttƒttƒ  ks¨J ‚t dt ƒjdddt tƒd  d ksÔJ ‚t dt ƒjdddt tƒd  dt tƒ  ks
J ‚t dt ƒjdddt tƒd  dt tƒd   d ksHJ ‚tt ddt dƒd  d ƒ tt ddt dƒd  dt dƒ  ƒ d S )NTr¯   ra   r^   ro   rc   rr   )r)   r–   r—   r²   r-   r®   r™   r™   r™   rš   Útest_cos_expansion½  s    888,6>rÅ   c                   C   sŒ  t tt tƒƒtddƒksJ ‚t tdtƒƒtddƒks:J ‚t tt dƒƒtddƒksXJ ‚t tddtj ƒƒtddƒkszJ ‚t ttj d tjd ƒƒtt tj d ƒdƒks°J ‚t ttjtddƒ tjtddƒ ƒƒtdt tjtddƒ ƒƒksôJ ‚t ttjtddƒ tjtddƒ ƒƒtt tjtddƒ ƒt tjtddƒ ƒƒksJJ ‚t ttjd tjd ƒƒtt tjd ƒt tjd ƒƒksˆJ ‚d S )Nr_   r^   r   ra   ro   rc   rb   )r)   r   r   r   r´   r   r™   r™   r™   rš   Útest_cos_AccumBoundsÈ  s    "6DVrÆ   c                   C   s,   t tƒ ¡ ttƒ ksJ ‚ttdd„ ƒ d S )Nc                   S   s   t tƒ d¡S r¶   )r)   r–   r·   r™   r™   r™   rš   r¸   Õ  r¹   z test_cos_fdiff.<locals>.<lambda>)r)   r–   r·   r-   rE   r>   r™   r™   r™   rš   Útest_cos_fdiffÓ  s    rÇ   c                  C   s
  t tƒtu sJ ‚t tƒtu s J ‚t tƒtt tƒks8J ‚t tƒt tƒ tt tƒksXJ ‚t jtdƒksjJ ‚t tt ƒtks~J ‚t t t ƒt ks–J ‚t dƒdks¦J ‚t tt	ƒƒt	ksºJ ‚t t
t	ƒƒt	tdt	d  ƒ ksÞJ ‚t tt	ƒƒtdt	d  ƒt	 ksJ ‚t tt	ƒƒdt	 ksJ ‚t tt	ƒƒdtddt	d   ƒt	  ksLJ ‚t tt	ƒƒtddt	d   ƒt	 ksvJ ‚t ttt	ƒƒtt	 ks’J ‚t tt ƒttƒt ks°J ‚t t t ƒttƒ t ksÒJ ‚t dt ƒtdƒ t ksòJ ‚t tƒdksJ ‚t t ƒdksJ ‚t dt ƒdks.J ‚t dt ƒdksDJ ‚t ddd  t ƒdksbJ ‚t td ƒtu sxJ ‚t ttddƒ ƒtu s”J ‚t td ƒtdƒks®J ‚t ttddƒ ƒtdƒksÎJ ‚t td	 ƒtju sæJ ‚t t d	 ƒtju s J ‚t ttd
d	ƒ ƒtju sJ ‚t ttdd	ƒ ƒtju s<J ‚t td ƒtddtdƒ  ƒksbJ ‚t ttddƒ ƒtddtdƒ  ƒksŽJ ‚t ttddƒ ƒtddtdƒ  ƒ ks¼J ‚t ttddƒ ƒtddtdƒ  ƒ ksêJ ‚t td ƒdtdƒ ksJ ‚t t d ƒdtdƒ ks(J ‚t ttddƒ ƒdtdƒ ksLJ ‚t ttddƒ ƒdtdƒ kspJ ‚t td ƒdtdƒ ksŽJ ‚t ttddƒ ƒdtdƒ ks²J ‚t ttddƒ ƒdtdƒ ksÖJ ‚t ttddƒ ƒdtdƒ ksúJ ‚t td ƒtddtdƒ d  ƒks$J ‚t ttddƒ ƒtddtdƒ d  ƒksTJ ‚t ttd
dƒ ƒtddtdƒ d  ƒ ks†J ‚t ttddƒ ƒtddtdƒ d  ƒ ks¸J ‚t td ƒtdƒ d ksØJ ‚t ttddƒ ƒtdƒd ksüJ ‚t ttddƒ ƒtdƒ d ks"J ‚t ttddƒ ƒtdƒd ksFJ ‚t td ƒ ¡ dtdƒ tdƒ tdƒ ksxJ ‚t ttddƒ ƒ ¡ dtdƒ tdƒ tdƒ ks°J ‚t ttddƒ ƒ ¡ dtdƒ tdƒ tdƒ ksèJ ‚t ttddƒ ƒ ¡ dtdƒ tdƒ tdƒ ks J ‚t ttddƒ ƒ ¡ dtdƒ tdƒ tdƒ ksXJ ‚t ttd
dƒ ƒ ¡ dtdƒ tdƒ tdƒ ksJ ‚t ttddƒ ƒ ¡ dtdƒ tdƒ tdƒ ksÈJ ‚t ttddƒ ƒ ¡ dtdƒ tdƒ tdƒ ks J ‚t t	t ƒtt	ƒt ksJ ‚t tt ƒdks4J ‚t d
t t ƒdksNJ ‚t tt t ƒttt ƒt kstJ ‚t tƒjd u sˆJ ‚t tƒjdu sœJ ‚t dddjs°J ‚t tƒjd u sÄJ ‚t tƒjdu sØJ ‚t ttddƒ ƒt ttddƒ ƒk	sJ ‚t ttddƒ ƒt ttddƒ ƒ k	s.J ‚t ttddƒ ƒt ttddƒ ƒk	sXJ ‚t ttddƒ ƒt td ƒk	s|J ‚t ttd dƒ ƒt td ƒ k	s¢J ‚t tƒj d u 	s¶J ‚t tt ƒj du 	sÎJ ‚t tt	tdƒd   ƒdt	  } |  !t	¡ddt t	d   k
sJ ‚d S )!Nr^   r   ra   r`   re   rf   rg   ro   rc   rp   rb   é   iðÿÿÿrd   r_   rh   rq   rr   iáÿÿÿrt   r¼   rž   é   é   é   TFr|   rv   rœ   é   éñÿÿÿ)"r/   r   r   r   r   r†   r:   r
   r'   r–   r&   r!   r"   r#   r$   r%   r(   r—   r   r    r   r   ÚOneÚNegativeOneÚradsimpr‰   rF   r   Úis_extended_realrŽ   rX   rZ   Ú	is_finiteÚas_leading_term©r¬   r™   r™   rš   Útest_tanØ  sš     $&.*"  &,.. $$$$$*022 $&$28888888&*,*$& rÕ   c                   C   sV   t tƒ tdd¡ttd d  dtd  d  dtd  d	  ttd ƒ ksRJ ‚d S )
Nr   r¤   ro   ra   rb   rœ   rp   rh   i;  )r/   r–   r8   r7   r™   r™   r™   rš   Útest_tan_series@  s    :ÿrÖ   c                  C   s˜  t t t ƒt tt ƒ } }ttƒ t ¡t| |  | |  ksBJ ‚ttƒ t¡dttƒd  tdt ƒ kspJ ‚ttƒ t¡tttjd  ddttƒ ks J ‚ttƒ t	¡dt	tƒ ks¾J ‚tt
tƒƒ t ¡ td¡ ¡ ttƒ t ¡ tt
dƒ¡ ¡ ks J ‚tttƒƒ t ¡ td¡ ¡ ttƒ t ¡ ttdƒ¡ ¡ ksBJ ‚tttƒƒ t ¡ td¡ ¡ ttƒ t ¡ ttdƒ¡ ¡ ks„J ‚tttƒƒ t ¡ td¡ ¡ ttƒ t ¡ ttdƒ¡ ¡ ksÆJ ‚tttƒƒ t ¡ td¡ ¡ ttƒ t ¡ ttdƒ¡ ¡ ksJ ‚tttƒƒ t ¡ td¡ ¡ ttƒ t ¡ ttdƒ¡ ¡ ksJJ ‚tttƒƒ t ¡ td¡ ¡ ttƒ t ¡ ttdƒ¡ ¡ ksŒJ ‚tt	tƒƒ t ¡ td¡ ¡ ttƒ t ¡ tt	dƒ¡ ¡ ksÎJ ‚tttƒƒ t¡ttt  tt   tt  tt   ksJ ‚ttƒ t¡ttƒtttd  dd ks>J ‚ttƒ t¡tt td  ddttƒ kspJ ‚tttƒƒ t¡tttƒƒks”J ‚d S )Nra   Fr|   r^   ro   )r   r–   r
   r/   r§   r-   r)   r   r´   r*   r   r‹   rN   r   r    r   r   r   r,   r   r+   )Úneg_expÚpos_expr™   r™   rš   Útest_tan_rewriteE  s"    &.0BBBBBBBB@02rÙ   c                   C   s
  dt td ƒttd ƒ ttd ƒ  t¡ks2J ‚dt td ƒttd ƒ ttd ƒ  t¡ksdJ ‚ttd ƒ t¡ttd ƒks†J ‚tttddƒ ƒ t¡tttddƒ ƒks´J ‚tttddƒ dd	 t¡ttdƒd tddƒ ƒtd
dƒtdƒd   ksJ ‚d S )Nr   é"   rp   rÊ   rr   ra   rb   Fr|   r_   rc   )r)   r   r/   r-   r§   Úpowr   r!   r™   r™   r™   rš   Útest_tan_rewrite_slowY  s    22".&ÿÿrÜ   c                   C   s~   t tƒ t tƒt¡tksJ ‚t tƒ tt¡t tƒks8J ‚t tƒ ttjd ¡tu sVJ ‚t tƒ ttjtddƒ ¡tu szJ ‚d S )Nra   ro   )r/   r–   r‹   r—   r   r´   r   r   r™   r™   r™   rš   Útest_tan_subsc  s    rÝ   c                   C   s2  t tt ƒjddt tƒt tƒ dt tƒt tƒ    ¡ ks@J ‚t tt ƒjddt tƒt tƒ dt tƒt tƒ    ¡ ks€J ‚t tt t ƒjddt tƒt tƒ t tƒ t tƒt tƒ t tƒ  dt tƒt tƒ  t tƒt tƒ  t tƒt tƒ    ¡ ksJ ‚dt dt ƒjdd t ¡ t tƒtddƒfg¡d d ksHJ ‚dt dt ƒjdd t ¡ t tƒtdd	ƒfg¡d
 d ksŠJ ‚dt dt td  ƒjdd t ¡ t tƒtdd	ƒfg¡d d ksÔJ ‚t	t ddt dƒ dt dƒd   ƒ t	t dt dƒd  dt dƒ  ddt dƒd    ƒ d S )NTr¯   r^   r   ra   rh   rž   ro   rb   é7   é%   rc   éï   )
r/   r–   r—   r²   r\   r§   r‹   r   r   r®   r™   r™   r™   rš   Útest_tan_expansionj  s    @@.2ÿÿBBJ$rá   c                   C   s   t tt tƒƒtt tƒks J ‚t ttjd tjtddƒ ƒƒtt tƒksPJ ‚t ttjd tjd ƒƒtt tjd ƒt tjd ƒƒksŒJ ‚d S )Nro   ra   rd   )r/   r   r   r   r´   r   r™   r™   r™   rš   Útest_tan_AccumBoundsw  s     0râ   c                   C   s2   t tƒ ¡ t tƒd d ks J ‚ttdd„ ƒ d S )Nra   r^   c                   S   s   t tƒ d¡S r¶   )r/   r–   r·   r™   r™   r™   rš   r¸     r¹   z test_tan_fdiff.<locals>.<lambda>)r/   r–   r·   rE   r>   r™   r™   r™   rš   Útest_tan_fdiff}  s     rã   c                  C   sª  t tƒtu sJ ‚t jtdƒks"J ‚t tt ƒt ks8J ‚t t t ƒtksNJ ‚t tƒtu s^J ‚t dƒtu snJ ‚t dt ƒtu s‚J ‚t tt	ƒƒt	ks–J ‚t t
t	ƒƒdt	 ks®J ‚t tt	ƒƒtdt	d  ƒt	 ksÒJ ‚t tt	ƒƒt	tdt	d  ƒ ksöJ ‚t tt	ƒƒtddt	d   ƒt	 ks J ‚t tt	ƒƒdtddt	d   ƒt	  ksNJ ‚t ttt	ƒƒt	t ksjJ ‚t tt ƒttƒ t ksŠJ ‚t t t ƒttƒt ksªJ ‚t dt ƒtdƒt ksÈJ ‚t tƒt dt ƒ  krôt dt ƒksún J ‚t t ƒt dt ƒ  kr(t dt ƒks.n J ‚t td ƒdksDJ ‚t t d ƒdks\J ‚t ttddƒ ƒdksxJ ‚t ttddƒ ƒdks”J ‚t td ƒdtdƒ ks²J ‚t ttddƒ ƒdtdƒ ksÖJ ‚t td	 ƒtju sîJ ‚t t d	 ƒtju sJ ‚t ttd
d	ƒ ƒtju s&J ‚t ttdd	ƒ ƒtju sDJ ‚t td ƒtdƒks^J ‚t t d ƒtdƒ ks|J ‚t ttddƒ ƒtdƒksœJ ‚t ttddƒ ƒtdƒks¼J ‚t td ƒdtdƒ ksÚJ ‚t ttddƒ ƒdtdƒ ksþJ ‚t ttddƒ ƒdtdƒ ks"J ‚t ttddƒ ƒdtdƒ ksFJ ‚t td ƒtdƒd ksdJ ‚t ttddƒ ƒtdƒ d ksŠJ ‚t ttddƒ ƒtdƒd ks®J ‚t ttddƒ ƒtdƒ d ksÔJ ‚t td ƒ ¡ tdƒtdƒ d tdƒ ksJ ‚t ttddƒ ƒ ¡ tdƒ tdƒ d tdƒ ks@J ‚t ttddƒ ƒ ¡ tdƒ tdƒ d tdƒ kszJ ‚t ttddƒ ƒ ¡ tdƒtdƒ d tdƒ ks²J ‚t ttddƒ ƒ ¡ tdƒ tdƒ d tdƒ ksìJ ‚t ttd
dƒ ƒ ¡ tdƒtdƒ d tdƒ ks$J ‚t ttddƒ ƒ ¡ tdƒtdƒ d tdƒ ks\J ‚t ttddƒ ƒ ¡ tdƒ tdƒ d tdƒ ks–J ‚t t	t ƒtt	ƒ t ks¶J ‚t tt t ƒttt ƒ t ksÞJ ‚t tƒjd u sòJ ‚t tƒjdu sJ ‚t tƒjd u sJ ‚t tƒjdu s.J ‚t ttddƒ ƒt ttddƒ ƒksXJ ‚t ttddƒ ƒt ttddƒ ƒ ks„J ‚t ttddƒ ƒt ttddƒ ƒks®J ‚t ttddƒ ƒt ttddƒ ƒksØJ ‚t ttddƒ ƒt ttddƒ ƒ ksJ ‚t t	ƒjd u sJ ‚t tƒjd u s,J ‚t ddd} t | ƒjdu sLJ ‚t t	ƒ !t	dt ¡tu sjJ ‚t tt	d	  ƒdt	  }| "t	¡ddt t	d   ks¦J ‚d S )Nr^   r   ra   r`   ro   re   rb   rh   rc   rp   rd   rq   rr   r_   rt   r¼   rž   rÉ   rÊ   rË   TFrf   rv   é'   rÚ   i×ÿÿÿ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‰   rF   r   rÑ   rX   rŽ   rZ   rÒ   r   r‹   rÓ   )r­   r¬   r™   r™   rš   Útest_cot‚  s†    $$*.  24$  $$$&$&2::8:88: (*,**,rå   c                   C   s˜   t tttddƒ ƒtttddƒ ƒ tttddƒ ƒ d  ¡ ƒdk sJJ ‚t tttddƒ ƒtttddƒ ƒ tttddƒ ƒ d  ¡ ƒdk s”J ‚d S )Nrr   rœ   r^   g›+¡†›„=rc   )r“   r/   r   r   r)   r-   Úevalfr*   r™   r™   r™   rš   Útest_tan_cot_sin_cos_evalfÝ  s    Jrç   c                   C   sˆ   dt ttddƒ ƒtttddƒ ƒ tttddƒ ƒ  ¡ ksBJ ‚dtttddƒ ƒtttddƒ ƒ tttddƒ ƒ  ¡ ks„J ‚d S )Nr^   rr   rœ   rc   )r/   r   r   r)   r-   Úratsimpr*   r™   r™   r™   rš   Útest_tan_cot_sin_cos_ratsimpá  s    Bré   c                   C   sP  t tƒ tdd¡dt td  td d  dtd  d  td	 d
  ttd ƒ ksZJ ‚t td td  ƒ tdd¡td dtd   td  dt  d ttƒ ks¬J ‚t tdt  ƒ tdd¡dtt  tt d  ttd ƒ ksîJ ‚t tƒ dt¡dt ksJ ‚t tƒ dt¡tju s(J ‚t tƒ dt¡td  d ksLJ ‚d S )Nr   r¤   r^   ro   é-   ra   rb   i±  rh   iu  rc   r°   r`   r_   )r*   r–   r8   r7   r   Útaylor_termr   r‡   r™   r™   r™   rš   Útest_cot_seriesç  s    Bÿ.ÿBrì   c                  C   sÈ  t t t ƒt tt ƒ } }ttƒ t ¡t||   ||   ksBJ ‚ttƒ t¡tdt ƒdttƒd   kspJ ‚ttƒ t¡ttƒtttd  dd ksžJ ‚ttƒ t¡dttƒ ks¼J ‚dd„ }|t	ƒ |t
ƒ |tƒ |tƒ |tƒ |tƒ |tƒ tttƒƒ t¡t tt  tt   tt  tt   ks>J ‚ttƒ t¡tttd  ddttƒ ksnJ ‚ttƒ t¡ttƒtt td  dd ks J ‚tttƒƒ t¡tttƒƒksÄJ ‚d S )Nra   Fr|   r^   c                 S   sF   t | tƒƒ t¡t tƒ t¡ t| tƒ¡ }| t¡ ¡ dksBJ ‚d S ©Nr   )r*   r–   r§   r   r‹   r²   )rŠ   r\   r™   r™   rš   Úcheckù  s    ,ztest_cot_rewrite.<locals>.check)r   r–   r
   r*   r§   r-   r)   r   r/   r   r   r    r   r   r   r,   r+   )r×   rØ   rî   r™   r™   rš   Útest_cot_rewriteó  s"    &..B02rï   c                   C   s.  t ttddƒ ƒ t¡ ¡ tttddƒ ƒtttddƒ ƒ  t¡ ¡ ksNJ ‚t ttddƒ ƒ t¡tttddƒ ƒtttddƒ ƒ  t¡ks”J ‚t td ƒ t¡t td ƒks¶J ‚t td ƒ t¡t td ƒksØJ ‚t ttddƒ dd t¡td	dƒtdƒd  ttdƒd
 tdd
ƒ ƒ ks*J ‚d S )Nrc   rÚ   rp   rÊ   ra   rb   Fr|   r_   rr   )	r*   r   r   r§   rÛ   rè   r)   r-   r!   r™   r™   r™   rš   Útest_cot_rewrite_slow	  s    ,ÿ(ÿ"".ÿrð   c                   C   sn   t tƒ t tƒt¡tksJ ‚t tƒ tt¡t tƒks8J ‚t tƒ td¡tu sPJ ‚t tƒ ttj¡tu sjJ ‚d S rí   )r*   r–   r‹   r—   r   r   r´   r™   r™   r™   rš   Útest_cot_subs  s    rñ   c                   C   sÐ  t tt ƒjdd ¡ t tƒt tƒ d t tƒt tƒ  ks@J ‚t tt ƒjdd ¡ t tƒt t ƒ d t tƒt t ƒ  ks„J ‚t tt t ƒjdd ¡ t tƒt tƒ t tƒ t tƒ t tƒ t tƒ dt tƒt tƒ  t tƒt tƒ  t tƒt tƒ   ks
J ‚t dt ƒjdd ¡ t tƒd d t tƒ dt tƒd  d  ksTJ ‚t dt ƒjddt tƒd ddt tƒ   ksŠJ ‚t dt ƒjdd ¡ t tƒd d t tƒ dt tƒd  d  ksÔJ ‚t dt td  ƒjdd ¡ ttƒd  dttƒd   dttƒd   dttƒ  d ttƒd dttƒd   dttƒd   dttƒ  d  kstJ ‚t	t ddt dƒd  dt dƒ  ƒ t	t dd	t dƒ t dƒd  ddt dƒd    ƒ d S )
NTr¯   r^   r_   ro   ra   rc   rd   re   )
r*   r–   r—   r²   Ztogetherr\   r   r4   r/   r®   r™   r™   r™   rš   Útest_cot_expansion  s4    "ÿ$ÿ
.2ÿÿ
*ÿ
6ÿÿ<:þ$rò   c                   C   sŒ   t tt tƒƒtt tƒks J ‚t ttj d tjd ƒƒtt tƒksLJ ‚t ttjd tjd ƒƒtt tjd ƒt tjd ƒƒksˆJ ‚d S )Nro   rd   )r*   r   r   r   r´   r™   r™   r™   rš   Útest_cot_AccumBounds0  s     ,ró   c                   C   s4   t tƒ ¡ t tƒd  d ks"J ‚ttdd„ ƒ d S )Nra   r^   c                   S   s   t tƒ d¡S r¶   )r*   r–   r·   r™   r™   r™   rš   r¸   8  r¹   z test_cot_fdiff.<locals>.<lambda>)r*   r–   r·   rE   r>   r™   r™   r™   rš   Útest_cot_fdiff6  s    "rô   c                  C   sÜ  t ttƒtƒsJ ‚tddd} t| ƒtju s0J ‚ttjƒtju sDJ ‚ttjƒtju sXJ ‚ttj	ƒtj	u slJ ‚ttj
ƒtj	u s€J ‚tdddd}t|t ƒtju s¤J ‚t| t ƒtju s¼J ‚ttd ƒdt ksÔJ ‚tt d ƒdt ksîJ ‚tttddƒ ƒddt  ksJ ‚tttddƒ ƒd	dt  ks6J ‚tt ƒttƒksNJ ‚ttƒ t¡ttƒt ttƒtd   ks~J ‚ttƒ t¡ttƒt  t¡ks¤J ‚ttƒ tt¡ttƒ dttƒ t  dttƒ td   t ksìJ ‚ttƒ tt¡ttƒt  tt¡ksJ ‚tttƒ t¡td
ƒd
ks6J ‚tttƒ tt¡td
ƒtdƒ d ksbJ ‚ttƒ ¡ dtd d  td d  ttd ƒ ksœJ ‚ttƒ t¡td
tƒksºJ ‚ttƒ t¡tttƒt ttd
ƒfdƒksêJ ‚ttddjdu sJ ‚td
ddjdu sJ ‚t|t ddjdu s6J ‚ttƒjd u sJJ ‚tdddd}ttƒjd u slJ ‚t|ƒjdu s€J ‚tt| ƒjdu s˜J ‚ttd ƒjdu s°J ‚ttƒjd u sÄJ ‚t|ƒjdu sØJ ‚d S )NÚsT©ZzerorN   )rJ   rT   ra   rb   rh   r`   r   r^   ro   rd   rc   r¡   )r^   TFr|   Úxr)rH   rT   éd   )r   r.   r–   r   r   rÎ   ÚInfinityr‡   ÚNegativeInfinityÚNaNZComplexInfinityr   r   r   r)   r-   r6   r8   r7   r§   r1   rA   r?   r•   r   r
   rÒ   )rõ   rN   r÷   r™   r™   rš   Ú	test_sinc;  sF    $$0&H* ,
:0rü   c                  C   s  t tƒtu sJ ‚t jtdƒks"J ‚t tƒt t ks8J ‚t t ƒtt ksNJ ‚t tƒtu s^J ‚t dƒdksnJ ‚t dƒtd ks‚J ‚t dƒt d ks˜J ‚t tdƒd ƒtd ks´J ‚t tdƒ d ƒt d ksÔJ ‚t tdƒd ƒtd ksðJ ‚t tdƒ d ƒt d ksJ ‚t tdtdƒ d ƒƒtd ks8J ‚t tdtdƒ d ƒ ƒt d ksbJ ‚t t	j
ƒtd	 kszJ ‚t tddƒƒt d	 ks˜J ‚t tdtdƒ ƒd ƒtd ks¾J ‚t tdtdƒ ƒ d ƒt d ksèJ ‚t tdƒd d ƒtd
 ks
J ‚t tdƒd  d ƒt d
 ks0J ‚t tdƒd tdƒ ƒtd ksVJ ‚t tdƒd  tdƒ ƒt d ks€J ‚dD ]\} t| d  | d d ƒD ]<}t|| ƒdkr t t|t |  ƒƒ|t |  ks J ‚q q„t tƒ t¡dtdtd  ƒ ks
J ‚t dddjdu s"J ‚t dƒjdu s6J ‚t tƒjd u sJJ ‚t dt ƒt tdƒ ksjJ ‚t tddƒddjdu sˆJ ‚t tddƒddjdu s¦J ‚t tƒjd u sºJ ‚t ttddƒƒƒtddƒt ksàJ ‚t ttddƒƒƒtddƒt ksJ ‚tt ttƒƒsJ ‚d S )Nr^   r   ra   r_   ro   rc   rb   rr   rd   rf   rt   ©rb   rd   rr   rf   rt   çš™™™™™É?Fr|   Tr`   rh   ru   )r&   r   r†   r:   r   r
   r   r   r!   r   rˆ   r   r’   r5   r-   r–   r   r   rF   r   Úis_positiverK   r=   r)   )r˜   rN   r™   r™   rš   Ú	test_asino  sJ     "&*&*"&&*.( &&r   c                  C   s¦   t tƒ tdd¡ttd d  dtd  d  dtd  d  ttd ƒ ksRJ ‚t tƒ dt¡} | dtd  d kszJ ‚t tƒ dt| d¡dtd  d ks¢J ‚d S )	Nr   r¤   ro   rd   rb   r    rh   ép   )r&   r–   r8   r7   rë   ©Zt5r™   r™   rš   Útest_asin_series   s    :ÿr  c                   C   s  t tƒ t¡tksJ ‚t td ƒ t¡td ks4J ‚t td ƒ t¡t d ksTJ ‚t dt ƒjtddtttƒ td  ttdƒ  ksŽJ ‚t dt ƒjtddt ttƒ dt d  ttdƒ  ksÎJ ‚t tt d ƒjtddtt dƒ ksøJ ‚t t t d ƒjtddt dƒks"J ‚t tt d ƒjtddt dƒ ksLJ ‚t t t d ƒjtddt t dƒ ks|J ‚t t td  t d ƒjtddt d ttdtdƒ ƒ  ksÄJ ‚t t td  t d ƒjtddt d ttdtdƒ ƒ  ksJ ‚d S )Nr^   ra   ©Úcdirr_   ro   )r&   r–   rÓ   r   r
   r   r!   r™   r™   r™   rš   Útest_asin_leading_term¨  s     :@***0Hr  c                	   C   s
  t tƒ t¡t ttt tdtd  ƒ ƒ ks4J ‚t tƒ t¡dttdtdtd  ƒ  ƒ ksfJ ‚t tƒ t¡tj	d ttƒ ksŠJ ‚t tƒ t
¡dt
ttd  d ƒd t ƒ ks¾J ‚t tƒ t¡tdt ƒ td  ksæJ ‚t tƒ t¡tdt ƒksJ ‚d S )Nr^   ra   )r&   r–   r§   r   r
   r!   r'   r"   r   r´   r#   r%   r   r$   r™   r™   r™   rš   Útest_asin_rewrite¹  s    42$4(r  c                   C   s6   t tƒ ¡ dtdtd  ƒ ks$J ‚ttdd„ ƒ d S )Nr^   ra   c                   S   s   t tƒ d¡S r¶   )r&   r–   r·   r™   r™   r™   rš   r¸   Ä  r¹   z!test_asin_fdiff.<locals>.<lambda>)r&   r–   r·   r!   rE   r>   r™   r™   r™   rš   Útest_asin_fdiffÂ  s    $r  c                  C   s0  t tƒtu sJ ‚t tƒtu s J ‚t jtdƒks2J ‚t tƒtt ksFJ ‚t t ƒt t ks^J ‚t dƒtd ksrJ ‚t tj	ƒtd ksˆJ ‚t t
ddƒƒtt
ddƒ ks¨J ‚t dƒdks¸J ‚t dƒtksÈJ ‚t tdƒd ƒtd ksäJ ‚t tdƒ d ƒtt
ddƒ ks
J ‚dD ]L} t| ƒD ]<}t|| ƒdkrt t|t |  ƒƒ|t |  ksJ ‚qqt dt ƒtd tdt ƒ ks‚J ‚t tƒ t¡dtdtd  ƒ ksªJ ‚t dƒjd	u s¾J ‚t d
ƒjdu sÒJ ‚t tƒjd u sæJ ‚t t
ddƒddjd	u sJ ‚t t
ddƒddjd	u s"J ‚t t
ddƒddjdu s@J ‚t tƒjd u sTJ ‚t dt ƒ ¡ t dt ƒksvJ ‚t dt ƒ ¡ t dt ƒks˜J ‚t t
ddƒƒ ¡ t t
ddƒƒks¾J ‚t t
ddƒƒ ¡ t t
ddƒƒksäJ ‚t ttt  ƒ ¡ t ttt  ƒksJ ‚t tƒ ¡ t ttƒƒks,J ‚d S )Nr^   r   ra   ro   r_   rc   rý   rþ   Tr`   Frh   r|   rf   re   )r"   r   r   r†   r:   r   r
   r   r   rˆ   r   r!   r’   r5   r)   r&   r–   r   r   rF   rÿ   rK   r   rN   r\   )r˜   Únumr™   r™   rš   Ú	test_acosÇ  s>     &.&(""&&*r
  c                   C   sþ  t tƒ t¡td ksJ ‚t td ƒ t¡tdƒtt ƒ ksBJ ‚t td ƒ t¡tks\J ‚t dt ƒjtddt ttƒ ttdƒ  ksJ ‚t dt ƒjtddtttƒ dt  ttdƒ  ksÊJ ‚t tt d ƒjtddt dƒ ksòJ ‚t t t d ƒjtddt dƒksJ ‚t tt d ƒjtddt dƒksDJ ‚t t t d ƒjtdddt t dƒ ksvJ ‚t t td  t d ƒjtddttttdƒd ƒ  ks¸J ‚t t td  t d ƒjtddttttdƒd ƒ  ksúJ ‚d S )Nra   r^   r  r_   r`   ro   )r"   r–   rÓ   r   r!   r
   r   r™   r™   r™   rš   Útest_acos_leading_termó  s    (4:(*(2Br  c                  C   s  t tƒ tdd¡td t td d  dtd  d  dtd  d	  ttd ƒ ksZJ ‚t tƒ tdd¡td ttƒ tdd¡ ksŠJ ‚t tƒ dt¡} | d
td  d ks²J ‚t tƒ dt| d¡dtd  d	 ksÚJ ‚t tƒ dt¡td ksöJ ‚t tƒ dt¡tju sJ ‚d S )Nr   rr   ra   ro   rd   rb   r    rh   r  re   rq   )	r"   r–   r8   r   r7   r&   rë   r   r‡   r  r™   r™   rš   Útest_acos_series  s    Bÿ0(r  c                	   C   sn  t tƒ t¡td tttt tdtd  ƒ ƒ  ks:J ‚t tƒ t¡tt ttd ƒ d  d ttdtd  ƒt ƒ ks‚J ‚t dƒ t¡tj	d ksžJ ‚t dƒ t¡t dƒ t¡ks¾J ‚t tƒ t
¡tj	d t
tƒ ksâJ ‚t tƒ t¡dtttd  d ƒd t ƒ td  ks J ‚t tƒ t¡tdt ƒks@J ‚t tƒ t¡tdt ƒ td  ksjJ ‚d S )Nra   r^   r`   r   ç      à?)r"   r–   r§   r   r   r
   r!   r'   r   r´   r&   r#   r%   r$   r™   r™   r™   rš   Útest_acos_rewrite  s    :H $> r  c                   C   s6   t tƒ ¡ dtdtd  ƒ ks$J ‚ttdd„ ƒ d S )Nr_   r^   ra   c                   S   s   t tƒ d¡S r¶   )r"   r–   r·   r™   r™   r™   rš   r¸     r¹   z!test_acos_fdiff.<locals>.<lambda>)r"   r–   r·   r!   rE   r>   r™   r™   r™   rš   Útest_acos_fdiff  s    $r  c                  C   sh  t tƒtu sJ ‚t jtdƒks"J ‚t tƒtd ks6J ‚t t ƒt d ksNJ ‚t tƒtt d td ƒksnJ ‚t dƒdks~J ‚t dƒtd ks’J ‚t tdƒƒtd ksªJ ‚t dtdƒ  ƒtt	ddƒ ksÎJ ‚t tddtdƒ  ƒƒtd ksòJ ‚t tddtdƒ d  ƒ ƒt d	 ks J ‚t tddtdƒ d  ƒƒtt	dd	ƒ ksPJ ‚t d
tdƒ ƒt d kspJ ‚t dtdƒ ƒtt	ddƒ ks”J ‚t d
tdƒ ƒtt	ddƒ ks¸J ‚dD ]\} t
| d  | d d ƒD ]<}t|| ƒdkrØt t|t |  ƒƒ|t |  ksØJ ‚qØq¼t tƒtd ks0J ‚t tƒ t¡ddtd   ksTJ ‚t tƒjdu shJ ‚t d
t ƒt tdƒ ksˆJ ‚tt ttƒƒsœJ ‚t tt	ddƒƒƒt	ddƒtd  ksÆJ ‚tt	ddƒƒjdu sàJ ‚ttttttttttt fD ]f}|js|j!d u r„|j"t |ƒj"u s*J ‚|j#t |ƒj#u s@J ‚|j$t |ƒj$u sVJ ‚|j%t |ƒj%u slJ ‚|j&t |ƒj&u sòJ ‚nn|j't |ƒj"u sšJ ‚|j(t |ƒj#u s°J ‚|j)t |ƒj$u sÆJ ‚|j*t |ƒj%u sÜJ ‚|j+t |ƒj&u sòJ ‚|j't |ƒj'u sJ ‚|j(t |ƒj(u sJ ‚|j)t |ƒj)u s4J ‚|j*t |ƒj*u sJJ ‚|j+t |ƒj+u súJ ‚qúd S )Nr^   ra   r   rc   ro   re   rr   rb   rf   r`   rt   rq   rý   Tr_   F),r'   r   r†   r:   r   r   r   r   r!   r   r’   r5   r/   r–   r   rF   r   r
   r   r=   r*   r#   r   rK   rN   ÚnpÚnnrS   rU   rV   ÚenpÚennrW   rÑ   Z
is_nonzerorÿ   Úis_negativeZis_nonpositiveÚis_nonnegativeZis_extended_nonzeroZis_extended_positiveZis_extended_negativeZis_extended_nonpositiveZis_extended_nonnegative)r˜   r	  rõ   r™   r™   rš   Ú	test_atan  sV     $$.0 $$.$ * r  c                   C   s¼  t tƒ t¡ttdtt  ƒtdtt  ƒ  d ks:J ‚t tƒ t¡tdttd d ƒ ƒ td  ttd ƒ t ks~J ‚t tƒ t¡ttd ƒtdttd d ƒ ƒ t ks¸J ‚t tƒ t	¡t	dt ƒksÖJ ‚t tƒ t
¡ttd ƒt
ttd d ƒƒ t ksJ ‚t tƒ t¡tttd d ƒƒ td  ttd ƒ t ksPJ ‚t dt ƒ ¡ t tƒ t¡jtdt idks„J ‚t dt ƒ ¡ t tƒ t¡jtdt idks¸J ‚d S )Nr^   ra   rq   ©r‹   rb   )r'   r–   r§   r   r
   r&   r!   r   r"   r#   r%   r$   ræ   r™   r™   r™   rš   Útest_atan_rewriteV  s    :D:8B4r  c                   C   s2   t tƒ ¡ dtd d  ks J ‚ttdd„ ƒ d S )Nr^   ra   c                   S   s   t tƒ d¡S r¶   )r'   r–   r·   r™   r™   r™   rš   r¸   d  r¹   z!test_atan_fdiff.<locals>.<lambda>)r'   r–   r·   rE   r>   r™   r™   r™   rš   Útest_atan_fdiffb  s     r  c                   C   s¼  t tƒ t¡tksJ ‚t dt ƒjtddtd ks8J ‚t dt ƒjtddt d ks\J ‚t tt ƒjtddt ttƒ d td  ttdƒ d  ks J ‚t tt ƒjtddt ttƒ d dt d  ttdƒ d  ksèJ ‚t tt ƒjtddtttƒ d td  ttdƒ d  ks,J ‚t tt ƒjtddtttƒ d td  ttdƒ d  kspJ ‚t tdt  ƒjtddttdƒ ksœJ ‚t tdt  ƒjtddt ttdƒ  ksÎJ ‚t tdt  ƒjtddtttdƒ  ksþJ ‚t tdt  ƒjtddt tdƒ ks,J ‚t dt tt  td  ƒjtddt d ttdƒ d  ksrJ ‚t dt tt  td  ƒjtddt d ttdƒ d  ks¸J ‚d S )Nr^   r  ra   r_   rc   ro   )r'   r–   rÓ   r   r
   r   r   r™   r™   r™   rš   Útest_atan_leading_termg  s    "$DHDD,20.Fr  c            	   
      s¾  t jtdƒksJ ‚t ddƒtju s&J ‚t ddƒdks8J ‚t ddƒtd ksNJ ‚t ddƒtd ksdJ ‚t ddƒttddƒ ks€J ‚t ddƒtks’J ‚t ddƒttddƒ ks®J ‚t ddƒt d ksÆJ ‚t ddƒt d ksÞJ ‚tdd	d
} tdd	d}t || ƒ}t t	| t|  t
| d |d  ƒ ƒ }|df| tff}| |¡| |¡ksTJ ‚tdd	d‰ tdd	d‰t ˆˆ ƒtˆˆ  ƒt ksŒJ ‚tdd	d‰t ˆˆ ƒtˆˆ  ƒt ks¸J ‚tdƒ‰t ˆˆ ƒt ˆˆ ddksÞJ ‚tdd	d}t d|ƒdksþJ ‚tdd	d}t d|ƒtksJ ‚t ˆtƒdks2J ‚t ˆt ƒdt ttˆƒtjƒ t ks`J ‚t ˆˆ ƒ t	¡t t	ˆ tˆ  t
ˆ d ˆd  ƒ ƒ ks J ‚t ddƒtju s¶J ‚t ˆˆ ƒtˆ tˆ  ƒ }| ˆ dˆdi¡ t¡dksòJ ‚| ˆ dˆdt i¡ t¡t tt	t
dƒt d ƒ  ks2J ‚| ˆ dt ˆdi¡ t¡t d tt	t
dƒt ƒ  ksrJ ‚| ˆ dt ˆdt i¡ t¡t ttddƒƒ ttddƒƒ ksºJ ‚tdd	d
} tdd	d}t | |ƒ}| t¡}| t|di}|t t	tt|  | ƒt
t| d |d  ƒƒ ƒ tt|  | t
| d |d  ƒ ƒ ksRJ ‚||  |¡ d¡slJ ‚t dˆ ƒ t¡tttˆ ƒdk fdtˆ dƒftd	fƒks¨J ‚t d|ƒ t¡tt|dk fdt|dƒftjd	fƒksâJ ‚t d| ƒsþJ |tƒdkƒ‚t d||  ƒ t¡tt|dk fdƒks*J ‚t ˆˆ ƒ t¡tdtˆˆ t
ˆ d ˆd  ƒ  ƒ tˆdƒfttˆ ƒdk fdtˆ ƒdkttˆ ƒdƒB ftd	fƒks¢J ‚tt ˆ ˆƒƒt tˆ ƒtˆƒƒksÈJ ‚tt ˆˆ ƒˆ ƒˆ ˆ d ˆd   ksôJ ‚tt ˆˆ ƒˆƒˆ ˆ d ˆd   ksJ ‚ttt ˆˆ ƒ t	¡ˆ ƒƒˆ ˆ d ˆd   ksTJ ‚ttt ˆˆ ƒ t	¡ˆƒƒˆ ˆ d ˆd   ksˆJ ‚tt ddƒ d¡ƒdks¦J ‚tt ‡ ‡fdd„ƒ d S )Nra   r   r^   rc   r_   ro   re   r­   Tr]   rF   rG   r–   rO   r—   rR   Fr|   ÚurL   rb   r`   )r   Tz0.46365c                      s   t ˆ ˆƒ d¡S )Nro   )r(   r·   r™   ©r–   r—   r™   rš   r¸   Á  r¹   ztest_atan2.<locals>.<lambda>)!r(   r†   r:   r   rû   r   r   r   r
   r   r!   r‹   r   r'   r   r2   r   rˆ   r§   r   r“   ÚequalsrA   r?   r   r   r   r   r<   Ústrræ   rE   r>   )	r­   rF   ÚeqZansZrepsr  Úexrm   r§   r™   r  rš   Ú
test_atan2z  s~    
*  .@"@@H

`þ:,,ü&,*64r!  c                  C   sB   G dd„ dt ƒ} | dƒ}| dƒ}tt||ƒ ¡ d ƒdks>J ‚d S )Nc                   @   s   e Zd ZdZdd„ ZdS )ztest_issue_17461.<locals>.ATc                 S   s   t dƒS )Ng      @)r	   )ÚselfÚprecr™   r™   rš   Ú_eval_evalfÇ  s    z'test_issue_17461.<locals>.A._eval_evalfN)Ú__name__Ú
__module__Ú__qualname__rÑ   r$  r™   r™   r™   rš   ÚAÄ  s   r(  ÚXÚYg-DTû!é?rª   )r   r“   r(   ræ   )r(  r–   r—   r™   r™   rš   Útest_issue_17461Ã  s    r+  c                   C   s(  t tƒtu sJ ‚t jtdƒks"J ‚t t ƒdks4J ‚t tƒdksDJ ‚t tƒdksTJ ‚t dƒtd kshJ ‚t dƒtd ks|J ‚t tdƒd ƒtd ks˜J ‚t dtdƒ ƒtd ks´J ‚t dtdƒ ƒt d ksÒJ ‚t tƒ 	t¡ddtd   ksôJ ‚t t
ƒjdu sJ ‚t tt ƒt ttƒ ks(J ‚t dt ƒttdƒ ksFJ ‚t tƒjd u sZJ ‚t tƒjd	u snJ ‚t tƒjdu s‚J ‚t tƒjd	u s–J ‚t tddƒƒjd	u s°J ‚tt ttƒƒsÄJ ‚tt ttƒƒsØJ ‚t ttddƒƒƒtddƒksúJ ‚t ttddƒƒƒtddƒtd  ks$J ‚d S )
Nr^   r   rc   ra   ro   r_   Tr`   F)r#   r   r†   r:   r   r   r   r!   r–   r   rF   rÑ   r
   r   rÿ   rN   rK   r   r   r=   r*   r/   r™   r™   r™   rš   Ú	test_acotÎ  s.    " "r,  c                   C   sè  t tƒ t¡ttdtt  ƒtdtt  ƒ  d ks:J ‚t tƒ t¡ttttd  ƒttd  d ƒ ƒ td   ttd ƒ ksŠJ ‚t tƒ t¡tttd ƒ tttd  ƒttd  d ƒ ƒ ksÐJ ‚t tƒ t	¡t	dt ƒksîJ ‚t tƒ t
¡tttd ƒ t
ttd d td  ƒƒ ks.J ‚t tƒ t¡ttttd d td  ƒƒ td   ttd ƒ ksxJ ‚t t d ƒ ¡ t tƒ t¡jtt d idks°J ‚t td ƒ ¡ t tƒ t¡jttd idksäJ ‚d S )Nr^   ra   r`   rb   r  )r#   r–   r§   r   r
   r&   r!   r   r"   r'   r%   r$   ræ   r™   r™   r™   rš   Útest_acot_rewriteë  s    :PF@J8r-  c                   C   s2   t tƒ ¡ dtd d  ks J ‚ttdd„ ƒ d S )Nr_   ra   r^   c                   S   s   t tƒ d¡S r¶   )r#   r–   r·   r™   r™   r™   rš   r¸   ù  r¹   z!test_acot_fdiff.<locals>.<lambda>)r#   r–   r·   rE   r>   r™   r™   r™   rš   Útest_acot_fdiff÷  s     r.  c                   C   sÚ  t dt ƒ t¡tksJ ‚t tt ƒjtddtttƒ d td  ttdƒ d  ks\J ‚t tt ƒjtddtttƒ d td  ttdƒ d  ksžJ ‚t tt ƒjtddt ttƒ d td  ttdƒ d  ksâJ ‚t tt ƒjtddt ttƒ d dt d  ttdƒ d  ks,J ‚t tƒjtddtd ksLJ ‚t tƒjtddt d ksnJ ‚t ttd  ƒjtddttttdƒd ƒ  ks¦J ‚t ttd  ƒjtddt ttdƒd ƒ ksÜJ ‚t ttd  ƒjtddtttdƒd ƒ ksJ ‚t ttd  ƒjtddt tttdƒd ƒ  ksJJ ‚t td tt  td  ƒjtddt d ttdƒ d  ksJ ‚t td tt  td  ƒjtddt d ttdƒ d  ksÖJ ‚d S )Nr^   r  ra   rc   r_   ro   )r#   r–   rÓ   r
   r   r   r   r   r™   r™   r™   rš   Útest_acot_leading_termû  s    BBDJ "864:Fr/  c                   C   s   t tƒjtfksJ ‚d S ©N)r-   r–   Úargsr™   r™   r™   rš   Útest_attributes  s    r2  c                   C   sn   t td t ƒttƒksJ ‚t tt ƒt tƒks4J ‚ttd t ƒt tƒksPJ ‚ttt ƒttƒ ksjJ ‚d S r¶   )r-   r   r–   r)   r™   r™   r™   rš   Útest_sincos_rewrite  s    r3  c                 C   s   | |ƒj d | kS )zMChecks that the expr has been rewritten using f(-x) -> f(x)
    arg : -x
    r   ©r1  ©rŠ   r   r™   r™   rš   Ú_check_even_rewrite  s    r6  c                 C   s   | |ƒj jS )zNChecks that the expr has been rewritten using f(-x) -> -f(x)
    arg : -x
    )rŠ   Zis_Mulr5  r™   r™   rš   Ú_check_odd_rewrite   s    r7  c                 C   s   | |ƒj d |kS )z%Checks that the expr is not rewrittenr   r4  r5  r™   r™   rš   Ú_check_no_rewrite'  s    r8  c                  C   sö   t dƒ} tdƒ}t g}ttttttg}ddd  t t d t	 t
 t	 t
 g}|D ]J}|D ]}t||ƒs\J ‚q\t|| | ƒs‚J ‚|t	t
 ƒ|t
t	 ƒksTJ ‚qT|D ]L}|D ]}t||ƒs¬J ‚q¬t|| | ƒsÒJ ‚|t	t
 ƒ|t
t	 ƒ ks¤J ‚q¤d S )Nra   r^   r_   é   rx   )r)   r-   r/   r*   r&   r'   r#   r   r   r–   r—   r6  r8  r7  )rX   Úbrl   ÚoddZ
with_minusrŠ   Úexprr™   r™   rš   Útest_evenodd_rewrite,  s.    *ÿ
ÿ
ÿÿr=  c                   C   s`   t tƒ t¡tksJ ‚ttƒ t¡dks,J ‚ttƒ t¡tksBJ ‚ttƒ t¡dt ks\J ‚d S )Nr^   )r-   r–   rÓ   r)   r/   r*   r™   r™   r™   rš   Útest_as_leading_term_issue_5272@  s    r>  c                  C   sB  t dt ƒ t¡tddƒks J ‚t tjƒ t¡t tjƒks>J ‚tdt ƒ t¡tddƒks^J ‚ttjƒ t¡ttjƒks|J ‚tdt ƒ t¡ttjtj	ƒks J ‚t
dt ƒ t¡ttjtj	ƒksÄJ ‚tdt ƒ t¡ttjtj	ƒksèJ ‚tdt ƒ t¡ttjtj	ƒksJ ‚t ttd  ƒdt  } |  t¡td ks>J ‚d S )Nr^   r_   rc   ro   )r-   r–   rÓ   r   r   rˆ   r)   r,   rú   rù   r+   r/   r*   r   rÔ   r™   r™   rš   Útest_leading_termsG  s      $$$&r?  c                   C   s¨  t ttd td ƒ t¡ttd td  ƒ t¡ ƒdks>J ‚t ttt ƒ tdd¡tttƒ tdd¡ tdtƒ tdƒ ƒttd ƒksŽJ ‚t ttt ƒ tdd¡tttƒ tdd¡ ttdƒ ttƒ ƒttd d tdfƒksèJ ‚t ttt t ƒ tdd¡ttt tƒ tdd¡ tdt dƒ tdt ƒ ƒttd d tdfƒksTJ ‚ttttƒgƒ 	ttg¡tttd td   t td td   ggƒks¤J ‚d S )Nra   r^   r   rb   rc   ro   )
r4   r(   r–   r   r'   r—   r8   r7   r3   Zjacobianr™   r™   r™   rš   Útest_atan2_expansionV  s2    >*ÿÿ
ÿ*ÿÿÿ2ÿ
ÿÿ
.ÿr@  c                  C   sD   dd„ } | t dddƒ | t dddƒ | tdddƒ | tdddƒ d S )Nc                 S   sB   t | d| ƒ ¡ | dt ƒjt|d ¡  t|¡ ƒ|k s>J ‚d S )Nr^   )Údir)r“   ræ   r–   r8   ZremoveOr‹   )rN   Úvr˜   rm   r™   r™   rš   Útc  s
    0ÿÿztest_aseries.<locals>.tgš™™™™™¹?ú+gñhãˆµøä>gš™™™™™¹¿ú-)r'   r#   )rC  r™   r™   rš   Útest_aseriesb  s
    rF  c                  C   sÈ	  t ddd} t ddd}t ddd}td|  t ƒd	ks<J ‚td|  t ƒd
ksTJ ‚td|  t ƒd
kslJ ‚td|  t ƒtu s„J ‚td|  t ƒtt|  ƒks¤J ‚td|  t ƒd
ks¼J ‚td|  t ƒd
ksÔJ ‚td|  t ƒtu sìJ ‚td|  t ƒd	ksJ ‚td|  t ƒd
ks J ‚td|  t ƒd
ks:J ‚td|  t ƒtu sTJ ‚td|  t ƒtt|  ƒksvJ ‚td|  t ƒd
ksJ ‚td|  t ƒd
ksªJ ‚td|  t ƒtu sÄJ ‚td|  t ƒtdt |  ƒksêJ ‚td|  t ƒtdt |  ƒksJ ‚td|  t ƒtdt |  ƒks6J ‚td|  t ƒtdt |  ƒks\J ‚td| t ƒd	ksvJ ‚td| t ƒd
ksJ ‚td| t ƒd
ksªJ ‚td| t ƒtu sÄJ ‚td| t ƒd	ksÞJ ‚td| t ƒd
ksøJ ‚td| t ƒd
ksJ ‚td| t ƒtu s,J ‚td| t ƒd	ksFJ ‚td| t ƒd
ks`J ‚td| t ƒd
kszJ ‚td| t ƒtu s”J ‚td| t ƒd	ks®J ‚td| t ƒd
ksÈJ ‚td| t ƒd
ksâJ ‚td| t ƒtu süJ ‚td| t ƒtdt | ƒks"J ‚td| t ƒtdt | ƒksHJ ‚td| t ƒtdt | ƒksnJ ‚td| t ƒtdt | ƒks”J ‚td| t ƒd	ks®J ‚td| t ƒd
ksÈJ ‚td| t ƒd
ksâJ ‚td| t ƒtu süJ ‚td| t ƒdksJ ‚td| t ƒd
ks0J ‚td| t ƒd
ksJJ ‚td| t ƒtu sdJ ‚td| t ƒd	ks~J ‚td| t ƒd
ks˜J ‚td| t ƒd
ks²J ‚td| t ƒtu sÌJ ‚td| t ƒdksæJ ‚td| t ƒd
ks J ‚td| t ƒd
ksJ ‚td| t ƒtu s4J ‚td| t ƒtdt | ƒksZJ ‚td| t ƒtdt | ƒks€J ‚td| t ƒtdt | ƒks¦J ‚td| t ƒtdt | ƒksÌJ ‚tdt t ƒtdt t ƒksòJ ‚tdt t ƒtdt t ƒksJ ‚tdt t ƒtdt t ƒks>J ‚tdt t ƒtdt t ƒksdJ ‚tdt t ƒtdt t ƒksŠJ ‚tdt t ƒtdt t ƒks°J ‚tdt t ƒtdt t ƒksÖJ ‚tdt t ƒtdt t ƒksüJ ‚tdt t ƒtdt t ƒks"J ‚tdt t ƒtdt t ƒksHJ ‚tdt t ƒtdt t ƒksnJ ‚tdt t ƒtdt t ƒks”J ‚tdt t ƒtdt t ƒksºJ ‚tdt t ƒtdt t ƒksàJ ‚tdt t ƒtdt t ƒk	sJ ‚tdt t ƒtdt t ƒk	s,J ‚tdt t ƒtdt t ƒk	sRJ ‚tdt t ƒtdt t ƒk	sxJ ‚tdt t ƒtdt t ƒk	sžJ ‚tdt t ƒtdt t ƒk	sÄJ ‚d S )Nr­   TrI   rm   rn   Úo)r;  rc   r^   r   ro   g      @g      @g      @r  r_   )r   r)   r   r-   r/   r*   r   r–   )r­   rm   rG  r™   r™   rš   Útest_issue_4420l  s¦     "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&rH  c                   C   s´   t tdd„ ƒ t tdd„ ƒ ttƒ ¡ tks0J ‚ttƒ ¡ tksDJ ‚t tdd„ ƒ t tdd„ ƒ ttƒ ¡ t	kstJ ‚t
tƒ ¡ tksˆJ ‚ttƒ ¡ tksœJ ‚ttƒ ¡ tks°J ‚d S )Nc                   S   s   t tƒ ¡ S r0  )r-   r–   Úinverser™   r™   r™   rš   r¸   Ú  r¹   ztest_inverses.<locals>.<lambda>c                   S   s   t tƒ ¡ S r0  )r)   r–   rI  r™   r™   r™   rš   r¸   Û  r¹   c                   S   s   t tƒ ¡ S r0  )r+   r–   rI  r™   r™   r™   rš   r¸   Þ  r¹   c                   S   s   t tƒ ¡ S r0  )r,   r–   rI  r™   r™   r™   rš   r¸   ß  r¹   )rE   ÚAttributeErrorr/   r–   rI  r'   r*   r#   r&   r-   r"   r)   r™   r™   r™   rš   Útest_inversesÙ  s    rK  c                  C   sØ  t ddd\} }| |t  }dD ]°}t|ƒj|dt| ƒt|ƒ t| ƒt|ƒ fksZJ ‚t|ƒj|dt| ƒt|ƒ t| ƒ t|ƒ fksJ ‚t|ƒj|dtd|  ƒtd|  ƒtd| ƒ  td| ƒtd|  ƒtd| ƒ  fksìJ ‚t|ƒj|dtd|  ƒ td|  ƒtd| ƒ  td| ƒtd|  ƒtd| ƒ  fksLJ ‚t| ƒj|dt| ƒdfksnJ ‚t| ƒj|dt| ƒdfksJ ‚t| ƒj|dt| ƒdfks²J ‚t| ƒj|dt| ƒdfks J ‚q d S )Nza bTrG   )TF)Údeepra   r   )	r   r
   r-   Úas_real_imagr   r)   r   r/   r*   )rX   r:  r\   rL  r™   r™   rš   Útest_real_imagæ  s>    
ÿÿÿÿÿ ÿ"
ÿ"ÿ
$
ÿ"ÿ"""rN  c                   C   s(   t tƒtju sJ ‚ttƒtju s$J ‚d S r0  )r-   r   r   rû   r)   r™   r™   r™   rš   Útest_sin_cos_with_infinityø  s    rO  c            	      C   sb  dD ]} dD  ]ü}||  }t dt|d d d dƒƒD ]Ò}dt||ƒkr8|t | }t|ƒ t¡}t|ƒ t¡}| tt¡rŽJ d||f ƒ‚| tt¡rªJ d||f ƒ‚dt	t| 
d¡ƒ| 
d¡ ƒksÚJ d||f ƒ‚dt	t| 
d¡ƒ| 
d¡ ƒks8J d||f ƒ‚q8qqttd	 ƒ t¡tttd
 ƒd tj ƒksBJ ‚tttddƒ d dd t¡ttttddƒ ƒ d tj ƒ ksŒJ ‚ttdttjdddd t¡dks¶J ‚ttd d ƒ}dttdƒ d ƒ ttdƒd ƒ d dtdƒ ttdƒd ƒ d  ttdƒd ƒtdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  ttdƒ d ƒtdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  tddƒ tdƒtdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  dtdƒ ttdƒd ƒ d  tdƒttdƒ d ƒ d  dtdƒ ttdƒ d ƒ d  tdƒttdƒ d ƒ tdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  dtdƒ d  tdƒttdƒ ttdƒd ƒ ttdƒd tdƒttdƒ d ƒ d  tdƒtdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  tddƒ ƒ d dtdƒ ttdƒd tdƒttdƒ d ƒ d  tdƒtdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  tddƒ ƒ tdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  dtdƒ ttdƒ d ƒ ttdƒd tdƒttdƒ d ƒ d  tdƒtdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  tddƒ ƒ d  tdƒttdƒd tdƒttdƒ d ƒ d  tdƒtdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  tddƒ ƒ tdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  ttdƒd tdƒttdƒ d ƒ d  tdƒtdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  tddƒ ƒd  tj ttdƒ d ƒttdƒd tdƒttdƒ d ƒ d  tdƒtdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  tddƒ ƒ tdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  tdƒttdƒ d ƒ ttdƒd tdƒttdƒ d ƒ d  tdƒtdtdƒ ttdƒd ƒ tdƒttdƒ d ƒ  tdƒttdƒ d ƒ  dtdƒ  d ƒ d  tddƒ ƒ d  ƒ d  }| t¡|k
sðJ ‚| ¡ | ¡ ksJ ‚ttd d ƒ t¡ttd ƒtttddƒ ƒ ttd ƒtttddƒ ƒ  ks^J ‚d S )N©r^   ro   rb   rp   ©r^   rr   r^   ra   rf   r¢   çü©ñÒMbP?rb   rÌ   rh   rÍ   r¼   Fr|   rc   r_   ro   rp   re   é@   rÚ   é€   r±   rd   é    rÉ   rœ   rr   r¤   )r’   Úminr5   r   r-   r§   r!   r)   Úhasr“   ræ   r   rˆ   r   r   rN   )	rK   rC  rN   r­   r–   Ús1Úc1rm   rX   r™   r™   rš   Útest_sincos_rewrite_sqrt   s   

 062ÿ"ÿ
ÿÿ
(ÿÿ6ÿ
ÿÿÿþÿ
ÿ,ÿÿ
ÿÿÿþýû2ÿÿ
ÿÿÿúøø	 ÷	ÿ6ÿ
ÿÿÿþ÷õ,ÿ2ÿÿ
ÿÿÿþýý42ÿÿ
ÿÿÿÿý,ÿÿ
ÿÿýüü	(ÿ2ÿÿ
ÿÿÿþýý÷02ÿÿ
ÿÿÿÿý,ÿÿ
ÿÿýüó*2ÿÿ
ÿÿÿÿþþîë,ÿÿ"ÿÿ
þþþÿýÿÿ
þþýûë$ÿ2ÿÿ
ÿÿÿþüüæâôÿ,:ÿrZ  c                   C   s2   t td ƒ t¡ d¡t td ƒ d¡ks.J ‚d S )Ni  rS  )r)   r   r§   r!   ræ   r™   r™   r™   rš   Útest_sincos_rewrite_sqrt_257P  s    r[  c               	   C   sD  dD ]8} dD ],}||  }t dt|d d d dƒƒD ] }dt||ƒkr8|t | }d| |krÎd| d| krÎt|ƒ t¡}| tt¡ržJ d||f ƒ‚dt	t| 
d	¡ƒ| 
d
¡ ƒksÎJ d||f ƒ‚|dkr8||kr8t|ƒ t¡}| tt¡r
J d||f ƒ‚dt	t| 
d	¡ƒ| 
d
¡ ƒks8J d||f ƒ‚q8qqd S )NrP  rQ  r^   ra   rf   ro   r¢   rR  rh   rc   r   )r’   rV  r5   r   r/   r§   r!   rW  r*   r“   ræ   )rK   rC  rN   r­   r–   Út1rY  r™   r™   rš   Útest_tancot_rewrite_sqrtU  s    

"0r]  c               	   C   s&  t ddd} t dƒ}tjtdƒks&J ‚ttƒtu s6J ‚tdƒdksFJ ‚ttƒdksVJ ‚ttd ƒtu sjJ ‚tt d ƒtu s€J ‚ttd	 ƒdtd
ƒ d
 ks J ‚ttd
 ƒdks´J ‚tttddƒ ƒtu sÎJ ‚tttddƒ ƒtttddƒ ƒ ksøJ ‚tttd
dƒ ƒtdƒ ksJ ‚tt	ƒdt
dƒ ks4J ‚t| t	 ƒdt
| ƒ ksRJ ‚t|  ƒt| ƒksjJ ‚tt| ƒƒ| ks€J ‚t|ƒ ¡ tt|ƒƒksžJ ‚t|ƒ ¡ tt|ƒƒt
t|ƒƒ tt|ƒƒd tt|ƒƒd  tt|ƒƒd t
t|ƒƒd    tt|ƒƒtt|ƒƒ tt|ƒƒd tt|ƒƒd  tt|ƒƒd t
t|ƒƒd    fks`J ‚t| ƒjdddt| ƒ ks‚J ‚td|  ƒjddddt| ƒd  d  ks´J ‚t| ƒjdksÈJ ‚t|ƒjd ksÜJ ‚ttƒjd u sðJ ‚ttƒjdu sJ ‚t| ƒ ¡ t| ƒksJ ‚tdddjdks6J ‚t| ƒjd ksJJ ‚ttd ddjdksfJ ‚tt| ƒ| dd	dd| d d  d| d  d  t| d	 ƒ ks¬J ‚ttt| ƒƒƒd| d d  d| d  d  t| d	 ƒ ksîJ ‚ttt| ƒƒ| td
 d dddt| ttd
dƒ  ƒ | ttd
dƒ  td
dƒ d  | ttd
dƒ  tddƒ d  t| ttd
dƒ  d | ttd
dƒ fƒ ks˜J ‚t| ƒ | ¡t| ƒt| ƒ ks¼J ‚t|ƒ d|¡d|d  d ksâJ ‚t|ƒ d	|¡d|d	  d ksJ ‚t|ƒ d|¡dks"J ‚d S )Nr–   TrG   r\   r^   r   r_   ra   rd   ro   rb   r¤   rh   rc   r¯   Fr|   ©Zx0rN   rž   é`   rt   é    é=   rÂ   ) r   r,   r†   r:   r   r   r   r!   r   r
   r   r%   r   rM  r)   r   r   r-   r   r²   rÑ   r   rX   rŽ   rZ   rÓ   rÒ   r8   r7   r   r/   rë   )r–   r\   r™   r™   rš   Útest_sech  sd     *"
4ÿ4ÿþÿ
"2FB8ÿ(ÿÿ
$&&rb  c                   C   sš  t tƒ t¡dttt ƒd tt t ƒd   ks8J ‚t tƒ t¡dttƒ ksVJ ‚t tƒ t¡ttd ƒd d ttd ƒd  d  ks’J ‚t tƒ t¡t tƒks¬J ‚t tƒ t¡t tƒksÆJ ‚t t	ƒ t
¡t
t	d ƒd d t
t	d ƒd d  ksJ ‚t tƒ t¡dtttd  dd ks.J ‚t tƒ t¡ttd ƒd d ttd ƒd  d  kslJ ‚t tƒ t¡tt td  ddks–J ‚d S )Nr^   ra   Fr|   )r,   r–   r§   r   r
   r)   r/   rÛ   r!   r\   r*   r-   r   r+   r™   r™   r™   rš   Útest_sec_rewrite§  s    8<<,>rc  c                   C   s2   t tƒ ¡ ttƒt tƒ ks J ‚ttdd„ ƒ d S )Nc                   S   s   t tƒ d¡S r¶   )r,   r–   r·   r™   r™   r™   rš   r¸   µ  r¹   z test_sec_fdiff.<locals>.<lambda>)r,   r–   r·   r/   rE   r>   r™   r™   r™   rš   Útest_sec_fdiff³  s     rd  c                     s  t ddd‰ t dƒ} tdƒ}dtdƒ }| |¡dks:J ‚| |¡dksLJ ‚tjtdƒks^J ‚tdƒtu snJ ‚ttƒtu s~J ‚ttƒtu sŽJ ‚ttd ƒdks¢J ‚tt d ƒdks¸J ‚ttd	 ƒdksÌJ ‚ttd
 ƒdt	d
ƒ d
 ksìJ ‚ttt
ddƒ ƒdksJ ‚ttt
ddƒ ƒttt
ddƒ ƒ ks4J ‚ttt
d
dƒ ƒt	dƒksTJ ‚ttƒt tdƒ kspJ ‚tˆ t ƒt tˆ ƒ ksJ ‚tˆ  ƒtˆ ƒ ksªJ ‚ttˆ ƒƒˆ ksÀJ ‚t| ƒ ¡ tt| ƒƒksÞJ ‚t| ƒ ¡ tt| ƒƒtt| ƒƒ tt| ƒƒd tt| ƒƒd  tt| ƒƒd tt| ƒƒd    tt| ƒƒ tt| ƒƒ tt| ƒƒd tt| ƒƒd  tt| ƒƒd tt| ƒƒd    fks¢J ‚tˆ ƒjdddtˆ ƒ ksÄJ ‚tdˆ  ƒjddddtˆ ƒ tˆ ƒ  ksöJ ‚tˆ ƒjdks
J ‚t| ƒjd ksJ ‚ttƒjd u s2J ‚ttƒjdu sFJ ‚tˆ ƒ ¡ tˆ ƒks`J ‚tdddjdksxJ ‚tˆ ƒjd ksŒJ ‚ttd ddjdks¨J ‚ttˆ ƒˆ td d	ddˆ td  d d  dˆ td  d  d  tˆ td  d	 ˆ td fƒ ksJ ‚ttˆ ƒˆ dd	ddˆ  ˆ d	  dˆ d
  d  dˆ d  d  tˆ d	 ƒ ksjJ ‚tˆ ƒ ˆ ¡tˆ ƒ tˆ ƒ ksJ ‚tˆ ƒ  dˆ ¡dksªJ ‚tˆ ƒ  d
ˆ ¡dˆ d
  d ksÐJ ‚tˆ ƒ  dˆ ¡dˆ d  d ksöJ ‚t!t"‡ fdd„ƒ d S )Nr–   TrG   r\   r^   r   ra   r_   rd   ro   rb   r¤   rh   rc   r¯   Fr|   r^  rž   ih  é   i;  c                      s   t ˆ ƒ d¡S r¶   )r+   r·   r™   ©r–   r™   rš   r¸   ö  r¹   ztest_csc.<locals>.<lambda>)#r   r+   r-   r  r†   r:   r   r   r   r!   r   r
   r   r$   r   rM  r   r   r   r)   r²   rÑ   r   rX   rŽ   rZ   rÓ   rÒ   r8   r7   r   r*   rë   rE   r>   )r\   ZcosecantÚ	alternater™   rf  rš   Útest_csc¸  sh     ,  
4ÿ6ÿþÿ
"2Lÿ
:ÿ
&&&rh  c                  C   sp  t ddd} t| ƒtu sJ ‚ttƒtu s,J ‚tdƒdks<J ‚tdƒtksLJ ‚ttƒtd ks`J ‚tt ƒtd ksvJ ‚ttƒtd ksŠJ ‚ttttdd	ƒ ƒƒttd
d	ƒ ks²J ‚tdtdƒ ƒttddƒ ksÔJ ‚tdtd
ƒ ƒtd ksðJ ‚ttd	dtdƒ  ƒƒtd ksJ ‚ttd	dtdƒ  ƒ ƒttddƒ ksDJ ‚ttddtdƒ d  ƒƒttd
dƒ kstJ ‚ttddtdƒ d  ƒ ƒttddƒ ks¦J ‚ttdƒtdƒ ƒttddƒ ksÎJ ‚tt	ƒ 
t	¡dt	d tddt	d   ƒ  ksJ ‚tt	ƒ t¡tttddt	d   ƒtt	  ƒ td  ksBJ ‚tt	ƒ t¡tdt	 ƒ td  kslJ ‚tt	ƒ t¡tdt	 ƒksŒJ ‚tt	ƒ t¡tdtt	d ƒt	   d tt	d ƒttt	d d ƒƒ t	  ksàJ ‚tt	ƒ t¡tdtt	d ƒt	   d tt	d ƒtdtt	d d ƒ ƒ t	  ks8J ‚tt	ƒ t¡tt	ƒ td  ks^J ‚ttdd„ ƒ d S )Nr\   Trö   r^   r   r_   ra   rÉ   rc   ro   rb   rd   rr   rf   rh   r¼   rt   c                   S   s   t tƒ d¡S r¶   )r%   r–   r·   r™   r™   r™   rš   r¸     r¹   ztest_asec.<locals>.<lambda>)r   r%   r   r   r   r   r,   r   r!   r–   r   r§   r   r
   r&   r"   r'   r#   r$   rE   r>   ©r\   r™   r™   rš   Ú	test_asecù  s8    ("&.02(4@* >ÿ
Bÿ
&rj  c                  C   s|   t tjƒjdu sJ ‚tdddd} t | ƒjdu s4J ‚t tƒjd u sFJ ‚t tƒjd u sXJ ‚tdddd}t |ƒjdu sxJ ‚d S )NFrN   T)rM   rJ   rC  ©rH   Zfinite)r%   r   rˆ   r   r   rÑ   r–   rF   )rN   rC  r™   r™   rš   Útest_asec_is_real  s    rl  c                   C   s  t dt ƒ t¡td ksJ ‚t td ƒ t¡tdƒttƒ ksDJ ‚t td ƒ t¡tks^J ‚t tƒjtddt ttƒ ttdƒ  ksŽJ ‚t tƒjtddtttƒ dt  ttdƒ  ksÄJ ‚t tt d ƒjtddt dƒksêJ ‚t t t d ƒjtddt dƒ ksJ ‚t tt d ƒjtdddt t dƒ ksFJ ‚t t t d ƒjtddt dƒkspJ ‚t t td  t tdƒd  ƒjtddtttdtdƒ ƒ  ksºJ ‚t t td  t tdƒd  ƒjtddtttdtdƒ ƒ  ksJ ‚d S )Nr^   ra   r  r_   r  ç      à¿ro   )r%   r–   rÓ   r   r!   r
   r   r   r™   r™   r™   rš   Útest_asec_leading_term#  s    &06&,0*Jrn  c                  C   sâ   t tƒ tdd¡ttdƒ tttƒ  ttd  d  dt td  d  dt td  d	  d
t td  d  ttd ƒ ks†J ‚t tƒ dt¡} | dt td  d ks²J ‚t tƒ dt| d¡dt td  d	 ksÞJ ‚d S )Nr   r¤   ra   rc   ro   rU  rb   rd   r_  é#   rr   r9  re   rq   )r%   r–   r8   r
   r   r7   rë   )Zt4r™   r™   rš   Útest_asec_series4  s    :ÿÿ
ÿÿrp  c                   C   s´  t tƒtu sJ ‚t dƒtd ks$J ‚t dƒt d ks:J ‚t tƒdksJJ ‚t t ƒdks\J ‚t tƒdkslJ ‚t dƒtu s|J ‚t tdƒƒdt ks”J ‚t tdƒƒdt ks¬J ‚t td	ƒƒd	dt  ksÈJ ‚tt ttƒƒsÚJ ‚tt ttƒƒsìJ ‚t dt	dƒ ƒtd ks
J ‚t ttt
d
dƒ ƒƒt d ks0J ‚t t	ddt	dƒ d  ƒƒtd ksZJ ‚t t	ddt	dƒ d  ƒ ƒt d ksˆJ ‚t dƒt d	 ks J ‚t t	ddt	dƒ  ƒ ƒt d ksÊJ ‚t t	ddt	dƒ  ƒƒtt
ddƒ ksöJ ‚t dt	dƒ ƒtd ksJ ‚t t	dƒt	d	ƒ ƒtt
ddƒ ks<J ‚t tƒ t¡dtd t	ddtd   ƒ  kspJ ‚t tƒ t¡t tt	ddtd   ƒtt  ƒ ksªJ ‚t tƒ t¡tdt ƒksÊJ ‚t tƒ t¡tdt ƒ td  ksôJ ‚t tƒ t¡tt	td d ƒƒ td  t	td ƒ t ks6J ‚t tƒ t¡tdt	td d ƒ ƒ td  t	td ƒ t ks|J ‚t tƒ t¡ttƒ td  ks¢J ‚ttdd„ ƒ d S )Nr^   ra   r_   r   ro   re   rc   r°   rd   rÉ   rb   r`   rr   rf   rq   rt   c                   S   s   t tƒ d¡S r¶   )r$   r–   r·   r™   r™   r™   rš   r¸   _  r¹   ztest_acsc.<locals>.<lambda>)r$   r   r   r   r   r+   r=   r–   r,   r!   r   r   r§   r   r
   r&   r"   r'   r#   r%   rE   r>   r™   r™   r™   rš   Ú	test_acsc=  s>    &*.*,(4: *,ÿ
F&rq  c                   C   sÀ  t tƒ t¡t tƒksJ ‚t tƒ t¡t tƒks4J ‚t tƒ t¡dt ttt ƒtt t ƒ  kshJ ‚t tƒ t¡dttƒ ks†J ‚t tƒ t¡ttd ƒd d dttd ƒ  ks¼J ‚t tƒ t	¡t	td ƒd d dt	td ƒ  ksòJ ‚t tƒ t
¡dt
ttd  dd ksJ ‚t tƒ t¡tt td  ddksHJ ‚t dttttƒ ƒ ƒ t
¡dt
t d d t
ttttƒ ƒ tt
t d ttttƒ  dd  dd ks¼J ‚d S )Nra   r^   Fr|   r_   )r+   r–   r§   rÛ   r!   r   r
   r-   r/   r*   r)   r   r,   r0   r™   r™   r™   rš   Útest_csc_rewriteb  s    466,*""ÿÿÿrr  c                   C   s  t dt ƒ t¡tksJ ‚t td ƒ t¡td ks8J ‚t td ƒ t¡t d ksXJ ‚t tƒjtddtttƒ td  ttdƒ  ksŽJ ‚t tƒjtddt ttƒ dt d  ttdƒ  ksÊJ ‚t tt d ƒjtddt dƒksðJ ‚t t t d ƒjtddtt dƒ ksJ ‚t tt d ƒjtddt t dƒ ksLJ ‚t t t d ƒjtddt dƒ ksxJ ‚t t td  t tdƒd  ƒjtddt d tttdƒd ƒ  ksÈJ ‚t t td  t tdƒd  ƒjtddt d tttdƒd ƒ  ksJ ‚d S )Nr^   ra   r  r_   ro   r  rm  )r$   r–   rÓ   r   r
   r   r   r!   r™   r™   r™   rš   Útest_acsc_leading_terms  s     6<&..,Prs  c                  C   sì   t tƒ tdd¡t tdƒ td  tttƒ  ttd  d  dt td  d  dt td  d	  d
t td  d  ttd ƒ ksJ ‚t tƒ dt¡} | dt td  d	 ks¼J ‚t tƒ dt| d¡d
t td  d ksèJ ‚d S )Nr   r¤   ra   rc   ro   rU  rb   rd   r_  ro  rr   r9  )r$   r–   r8   r
   r   r   r7   rë   )Zt6r™   r™   rš   Útest_acsc_series„  s    0ÿÿÿ
ÿÿrt  c                   C   sè  t td ƒ tdd t¡t dƒ t tdƒt t d  tdƒt td  d  tdƒt td  d  ttd ƒ kszJ ‚t td ƒ tdd t ¡t dƒtdƒt t d  tdƒt td  d  tdƒt td  d  ttd ƒ ksðJ ‚t td ƒ tdd t¡t dƒ tdƒt t d  tdƒt td  d  tdƒt td  d  ttd ƒ kshJ ‚t td ƒ tdd t ¡t dƒt tdƒt t d  tdƒt td  d  tdƒt td  d  ttd ƒ ksäJ ‚t dt ƒ tdd ¡td tdƒtt ƒ  tdƒt tdƒd   d  dtdƒ t tdƒd   d	  ttd ƒ ksfJ ‚t d
t ƒ tdd ¡t d tdƒttƒ  tdƒttdƒd   d  dtdƒ ttdƒd   d	  ttd ƒ ksäJ ‚t ttƒƒ tdd ¡td tdƒtt ƒ  tdƒt tdƒd   d  tdƒt tdƒd   d  ttd ƒ ksbJ ‚t ttƒ ƒ tdd ¡t d tdƒtt ƒ  tdƒt tdƒd   d  tdƒt tdƒd   d  ttd ƒ ksäJ ‚d S )Nra   rc   ro   r¤   rÈ   r^   rt   rb   r`  r_   rd   r¡   )	r&   r–   Ú_eval_nseriesr
   r   r!   r7   r   r   r™   r™   r™   rš   Útest_asin_nseries  s€    "ÿÿÿ
ÿ
ÿÿÿ
ÿ
ÿÿÿ
ÿ"ÿÿÿ
ÿ,ÿ ÿ
ÿ,ÿÿ
ÿ,ÿÿ
ÿ0ÿÿ
ÿrv  c                   C   sÌ  t td ƒ tdd t¡t dƒ tdƒt t d  tdƒt td  d  tdƒt td  d  ttd ƒ ksvJ ‚t td ƒ tdd t ¡t dƒtdƒt t d  tdƒt td  d  tdƒt td  d  ttd ƒ ksìJ ‚t td ƒ tdd t¡t dƒtdƒt t d  tdƒt td  d  tdƒt td  d  ttd ƒ ksbJ ‚t td ƒ tdd t ¡t dƒ dt  tdƒt t d  tdƒt td  d  tdƒt td  d  ttd ƒ ksäJ ‚t dt ƒ tdd ¡tdƒtt ƒ tdƒt tdƒd   d  dtdƒ t td	ƒd   d
  ttd ƒ ks^J ‚t dt ƒ tdd ¡ttdƒttƒ  tdƒttdƒd   d  dtdƒ ttd	ƒd   d
  ttd ƒ ksÖJ ‚t ttƒƒ tdd ¡tdƒtt ƒ tdƒt tdƒd   d  tdƒt td	ƒd   d  ttd ƒ ksLJ ‚t ttƒ ƒ tdd ¡ttdƒtt ƒ  tdƒt tdƒd   d  tdƒt td	ƒd   d  ttd ƒ ksÈJ ‚d S )Nra   rc   ro   r¤   rÈ   r`   r^   rt   rb   r`  r_   rd   r¡   )	r"   r–   ru  r
   r!   r7   r   r   r   r™   r™   r™   rš   Útest_acos_nseries¡  st    2ÿÿ
ÿ
2ÿÿ
ÿ
0ÿÿ
ÿ(ÿÿÿ
ÿ$ÿ ÿ
ÿ&ÿÿ
ÿ$ÿÿ
ÿ*ÿÿ
ÿrw  c                   C   sü  t tdt  ƒ tdd d¡ttdƒ td  dt td  d  dtd  d  ttd ƒ ksdJ ‚t tdt  ƒ tdd d¡ttdƒ t td  dt td  d  dtd  d  ttd ƒ ksÌJ ‚t tdt  ƒ tdd d¡t tdƒ t td  dt td  d  dtd  d  ttd ƒ ks8J ‚t tdt  ƒ tdd d¡t tdƒ td  dt td  d  dtd  d  ttd ƒ ks J ‚t dt ƒ tdd d¡td t ttd ƒ ksÖJ ‚t dt ƒ tdd d¡t d t ttd ƒ ksJ ‚t tt ƒ tdd ¡ttdƒ d td  tttƒ d  td  ttd  d	  td d
  ttd ƒ ks‚J ‚t tt ƒ tdd ¡t tdƒ d td  tttƒ d  td  ttd  d	  td d
  ttd ƒ ksøJ ‚d S )Nra   rc   r^   ro   r¤   rÉ   éQ   r_   é   é0   )r'   r–   r
   ru  r   r7   r   r   r™   r™   r™   rš   Útest_atan_nseriesµ  sp    ,ÿÿ
ÿ
(ÿÿÿ
ÿ
*ÿÿÿ
ÿ.ÿÿ
ÿ68*ÿÿÿ
ÿ
ÿ,ÿÿÿ
ÿ
ÿr{  c                   C   sD  t ttdƒd t  ƒ tdd d¡t ttdƒd ƒ t dt d  dt td  d  dtd  d  ttd ƒ ks~J ‚t ttdƒd t  ƒ tdd d	¡t ttdƒd ƒ dt d  dt td  d  dtd  d  ttd ƒ ksøJ ‚t ttdƒd t  ƒ tdd d¡tttdƒd ƒ dt d  dt td  d  dtd  d  ttd ƒ ksrJ ‚t ttdƒd t  ƒ tdd d	¡tttdƒd ƒ t dt d  dt td  d  dtd  d  ttd ƒ ksðJ ‚t tƒ tdd d¡td t ttd ƒ ks"J ‚t tƒ tdd d	¡t d t ttd ƒ ksVJ ‚t tt ƒ tdd ¡t tdƒ d td  tttƒ d  td  ttd  d
  td d  ttd ƒ ksÌJ ‚t tt ƒ tdd ¡ttdƒ d td  tttƒ d  td  ttd  d
  td d  ttd ƒ ks@J ‚d S )Nr^   ra   rc   ro   rr   r¤   r  rx  r_   ry  rz  )	r#   r–   r   r
   ru  r   r   r7   r   r™   r™   r™   rš   Útest_acot_nseriesÇ  s€    6ÿ
ÿÿÿ
ÿ
6
ÿÿÿ
ÿ
4
ÿÿÿ
ÿ4ÿ
ÿÿÿ
ÿ24,ÿÿÿ
ÿ
ÿ*ÿÿÿ
ÿ
ÿr|  c                   C   s>  t ttdƒd  ƒ tdd t¡t tdƒd ƒdtdƒ t t d  dtdƒ t td  d  dtdƒ t td  d  ttd ƒ ksJ ‚t ttdƒd  ƒ tdd t ¡t tdƒd ƒ dtdƒ t t d  dtdƒ t td  d  dtdƒ t td  d  ttd ƒ ks&J ‚t ttdƒd  ƒ tdd t¡t tdƒ d ƒ dt  dtdƒ t t d  dtdƒ t td  d  dtdƒ t td  d  ttd ƒ ksÄJ ‚t ttdƒd  ƒ tdd t ¡t tdƒ d ƒdtdƒ t t d  dtdƒ t td  d  dtdƒ t td  d  ttd ƒ ksZJ ‚t dt ƒ tdd ¡tdƒttƒ dtdƒ ttdƒd   d	  d
tdƒ ttdƒd   d  ttd ƒ ksÒJ ‚t dt ƒ tdd ¡ttdƒtt ƒ  dtdƒ t tdƒd   d	  d
tdƒ t tdƒd   d  ttd ƒ ksTJ ‚t ttƒƒ tdd ¡tdƒttƒ tdƒttdƒd   d  tdƒttdƒd   d  ttd ƒ ksÄJ ‚t ttƒ ƒ tdd ¡ttdƒttƒ  tdƒttdƒd   d  tdƒttdƒd   d  ttd ƒ ks:J ‚d S ©Nr^   ra   rc   ro   rr   r¤   ry  rb   rt   é+   r`  r_   rd   r¡   )	r%   r–   r   ru  r
   r!   r7   r   r   r™   r™   r™   rš   Útest_asec_nseriesÙ  s„    ,ÿÿÿ
ÿ
0ÿÿÿ
ÿ0ÿÿÿÿ
ÿ0ÿÿÿ
ÿ"ÿÿ
ÿ( ÿ ÿ
ÿ"ÿÿ
ÿ(ÿÿ
ÿr  c                   C   sV  t ttdƒd  ƒ tdd t¡t tdƒd ƒdtdƒ t t d  dtdƒ t td  d  dtdƒ t td  d  ttd ƒ ksJ ‚t ttdƒd  ƒ tdd t ¡t tdƒd ƒ t dtdƒ t t d  dtdƒ t td  d  dtdƒ t td  d  ttd ƒ ks*J ‚t ttdƒd  ƒ tdd t¡t tdƒd ƒt dtdƒ t t d  dtdƒ t td  d  dtdƒ t td  d  ttd ƒ ksÀJ ‚t ttdƒd  ƒ tdd t ¡t tdƒd ƒ dtdƒ t t d  dtdƒ t td  d  dtdƒ t td  d  ttd ƒ ksVJ ‚t dt ƒ tdd ¡td tdƒttƒ  dtdƒ ttdƒd   d	  d
tdƒ ttdƒd   d  ttd ƒ ksÖJ ‚t dt ƒ tdd ¡t d tdƒtt ƒ  dtdƒ t tdƒd   d	  d
tdƒ t tdƒd   d  ttd ƒ ks^J ‚t ttƒƒ tdd ¡td tdƒttƒ  tdƒttdƒd   d  tdƒttdƒd   d  ttd ƒ ksÖJ ‚t ttƒ ƒ tdd ¡t d tdƒttƒ  tdƒttdƒd   d  tdƒttdƒd   d  ttd ƒ ksRJ ‚d S r}  )	r$   r–   r   ru  r
   r!   r7   r   r   r™   r™   r™   rš   Útest_acsc_nseriesí  s„    ,ÿÿÿ
ÿ
0ÿÿÿÿ
ÿ0ÿÿÿ
ÿ0ÿÿÿ
ÿ*ÿÿ
ÿ. ÿ ÿ
ÿ*ÿÿ
ÿ.ÿÿ
ÿr€  c                  C   sF   t ddd} t| ƒjd u sJ ‚t| ƒjd u s0J ‚t| ƒjd u sBJ ‚d S )NrN   TrI   )r   r-   Zis_irrationalr)   r/   ©rN   r™   r™   rš   Útest_issue_8653  s    r‚  c                  C   s(   t dddd} t| d ƒjdu s$J ‚d S )NrN   T)rJ   rM   r^   )r   r'   r  r  r™   r™   rš   Útest_issue_9157  s    rƒ  c                     s‚  t dƒ\‰ } tˆ ƒ ¡ dt ks$J ‚tˆ ƒ ¡ dt ks<J ‚tˆ ƒ ¡ tksPJ ‚tˆ ƒ ¡ tksdJ ‚tˆ ƒ ¡ dt ks|J ‚tˆ ƒ ¡ dt ks”J ‚tdˆ  ƒ ¡ tks¬J ‚tdˆ  d ƒ ¡ td ksÌJ ‚tdˆ  ƒ ¡ tt	ddƒ ksîJ ‚tˆ |  ƒ ˆ ¡dt t
| ƒ ksJ ‚tdˆ  |  dt  ƒ | ¡dt t
dˆ  ƒ ksNJ ‚tdˆ  ƒ | ¡tju slJ ‚tt‡ fdd„ƒ d S )	Nzx, yra   rc   rd   re   ro   c                      s   t ˆ d ƒ ˆ ¡S r¶   )r-   Úperiodr™   rf  r™   rš   r¸     r¹   z"test_trig_period.<locals>.<lambda>)r   r-   r„  r   r)   r/   r*   r,   r+   r   r“   r   r‡   rE   ÚNotImplementedError)r—   r™   rf  rš   Útest_trig_period  s     "(8r†  c                   C   s8   t tƒ t¡t tƒksJ ‚t tƒ t¡t tƒks4J ‚d S r0  )r-   r–   r§   r!   rÛ   r™   r™   r™   rš   Útest_issue_7171  s    r‡  c                  C   s~   t ddd\} }tdtdt | dƒftt| ƒt|  dfƒ}tdtdt | dƒftt| ƒdfƒ}| t¡|kszJ ‚d S )Nzw, kTrG   r^   ra   r   )r   rA   r@   r   r-   r.   r§   )Úwr‰   ÚFZsolnr™   r™   rš   Útest_issue_11864$  s    0(rŠ  c                  C   s`  t dddd} t| ƒjd u s J ‚t| ƒjd u s2J ‚t| ƒjdu sDJ ‚t| ƒjd u sVJ ‚t| ƒjd u shJ ‚t| ƒjdu szJ ‚tt	ƒjd u sŒJ ‚tt
ƒjd u sžJ ‚tt	ƒjd u s°J ‚tt
ƒjd u sÂJ ‚tt	ƒjd u sÔJ ‚tt
ƒjd u sæJ ‚tt	ƒjd u søJ ‚tt
ƒjd u sJ ‚tt	ƒjdu s J ‚tt
ƒjdu s4J ‚tt	ƒjdu sHJ ‚tt
ƒjdu s\J ‚d S )Nr\   FTrk  )r   r-   r   r)   r/   r,   r+   r*   r&   rK   rN   r%   r"   r$   r'   rÿ   r  r#   ri  r™   r™   rš   Útest_real_assumptions*  s&    r‹  c                   C   s–  t tdƒƒdt krNt d dt   kr6td krNn ntdƒtdt ƒksRJ ‚t tdƒƒdtd  kr¬t d dtd    krtd kr¬n ntdƒtdtd  ƒks°J ‚ttdƒƒt d d krdt d d   krìtkrn ntdƒtt d d ƒksJ ‚ttdƒƒdt d krhddt d   krJtkrhn ntdƒtdt d ƒkslJ ‚ttdƒƒddt  krÄdddt    kr¦tkrÄn ntdƒtddt  ƒksÈJ ‚ttd	ƒƒd
t d	 kr*t d d
t d	   k rtd k r*n ntd	ƒtd
t d	 ƒks.J ‚ttdƒƒd
t d krt d d
t d   k rrtd k rn ntdƒtd
t d ƒks”J ‚ttdƒƒdttddƒ  krt d dttddƒ    k rätd k rn n tdƒtdttddƒ  ƒksJ ‚t	tdƒƒd
t d krnt d d
t d   k rPtd krnn ntdƒtd
t d ƒksrJ ‚t	tdƒƒdttddƒ  kræt d dttddƒ    k rÂtd kræn n tdƒtdttddƒ  ƒksêJ ‚t
tdƒƒddt  krBdddt    kr$tkrBn ntdƒtddt  ƒksFJ ‚t
tdƒƒdttddƒ  kr°ddttddƒ    krŒtkr°n n tdƒtdttddƒ  ƒks´J ‚ttdƒƒdt d krt d dt d   krøtd krn ntdƒtdt d ƒksJ ‚ttdƒƒttddƒ d krŽt d ttddƒ d   krjtd krŽn n tdƒtttddƒ d ƒks’J ‚d S )Nra   r`   r   r   iúÿÿÿrŸ   iâÿÿÿrf   rp   rq   rœ   rt   iôÿÿÿrh   rÊ   iíÿÿÿrÉ   r¼   rv   rc   ióÿÿÿr¤   rÌ   r°   ru   )r&   r-   r   r)   r"   r'   r/   r*   r   r#   r%   r,   r+   r$   r™   r™   r™   rš   Útest_issue_14320?  s    R^`\\ffxfx\nfrŒ  c                  C   sò  t dt d ƒt dƒksJ ‚t dt d ƒt dƒks8J ‚t td ƒt dƒ ksRJ ‚t td ƒt dƒ kslJ ‚tdt d ƒtdƒksˆJ ‚tdt d ƒtdƒ ks¦J ‚ttd ƒtdƒ ksÀJ ‚ttd ƒtdƒksØJ ‚tdƒ} ttd |  ƒt | ƒksüJ ‚ttd |  ƒt | ƒksJ ‚tttddƒ |  ƒt | ƒ ks@J ‚tttddƒ |  ƒt | ƒ ksfJ ‚t td |  ƒt| ƒks„J ‚t td |  ƒt| ƒ ks¤J ‚t ttddƒ |  ƒt| ƒksÈJ ‚t ttddƒ |  ƒt| ƒ ksîJ ‚d S )Nra   r¼   rp   r–   ro   )r,   r   r+   r   r   rf  r™   r™   rš   Útest_issue_14543Q  s"    && $r  c                  C   s0   t ttttdƒ   ƒ} |  ¡ | dfks,J ‚d S )Nr^   r   )r'   r
   r/   rM  )r<  r™   r™   rš   Útest_as_real_imagh  s    rŽ  c                  C   s*   t tjtd d  ƒ} |  ¡ dks&J ‚d S )Nrc   g      Ð?rr   )r)   r   r´   r–   r„  )Ze3r™   r™   rš   Útest_issue_18746p  s    r  N)×Z!sympy.calculus.accumulationboundsr   Zsympy.core.addr   r«   r   r   Zsympy.core.modr   Zsympy.core.mulr   Zsympy.core.numbersr   r	   r
   r   r   r   r   r   Zsympy.core.powerr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z$sympy.functions.elementary.complexesr   r   r   r   Z&sympy.functions.elementary.exponentialr   r   Z%sympy.functions.elementary.hyperbolicr   r   r   r   r   r   r    Z(sympy.functions.elementary.miscellaneousr!   Z(sympy.functions.elementary.trigonometricr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   Zsympy.functions.special.besselr0   r1   Z'sympy.functions.special.delta_functionsr2   Zsympy.matrices.denser3   Zsympy.polys.polytoolsr4   r5   Zsympy.series.limitsr6   Zsympy.series.orderr7   Zsympy.series.seriesr8   Zsympy.sets.fancysetsr9   Zsympy.sets.setsr:   r;   Zsympy.simplify.simplifyr<   Zsympy.core.exprr=   r>   Zsympy.core.relationalr?   r@   Z$sympy.functions.elementary.piecewiserA   Zsympy.sets.setexprrB   Zsympy.testing.pytestrC   rD   rE   r–   r—   r\   rF   r‰   rŒ   rK   rN   r  r  rS   rU   rV   r  r  rW   rX   rZ   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/  r2  r3  r6  r7  r8  r=  r>  r?  r@  rF  rH  rK  rN  rO  rZ  r[  r]  rb  rc  rd  rh  rj  rl  rn  rp  rq  rr  rs  rt  rv  rw  r{  r|  r  r€  r‚  rƒ  r†  r‡  rŠ  r‹  rŒ  r  rŽ  r  r™   r™   r™   rš   Ú<module>   s.  ($@

%ih
	[

41	,7I
m

O

?A 
	%	