U
    ZÊ¹j¸T  ã                	   @   s¶  d dl Z d dl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 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mZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z1m2Z3m4Z5m6Z7m8Z9m:Z;m<Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN edƒ\	ZOZPZQZRZSZTZUZVZWeddd�ZXedddƒZYedddgƒZZedƒZ[edeXƒZ\edddƒZ]edddƒZ^dd„ Z_dd„ Z`dd„ Zadd „ Zbd!d"„ Zcd#d$„ Zdd%d&„ Zed'd(„ Zfd)d*„ Zgd+d,„ Zhd-d.„ Zid/d0„ Zjd1d2„ Zkd3d4„ Zld5d6„ Zmd7d8„ Znd9d:„ Zod;d<„ Zpd=d>„ Zqd?d@„ ZrdAdB„ ZsdCdD„ ZtdEdF„ ZudGdH„ ZvdIdJ„ ZwdKdL„ ZxdMdN„ ZydOdP„ ZzdQdR„ Z{dSdT„ Z|dUdV„ Z}dS )Wé    N)ÚTuple)ÚnanÚooÚFloatÚInteger)ÚLt)ÚsymbolsÚSymbol)Úsin)ÚMatrix)ÚMatrixSymbol)ÚRange)ÚIdxÚIndexedBase)Úraises)-Ú
AssignmentÚ	AttributeÚ
aug_assignÚ	CodeBlockÚForÚTypeÚVariableÚPointerÚDeclarationÚAddAugmentedAssignmentÚSubAugmentedAssignmentÚMulAugmentedAssignmentÚDivAugmentedAssignmentÚModAugmentedAssignmentÚvalue_constÚpointer_constÚintegerÚrealÚcomplex_Úint8Úuint8Úfloat16Úfloat32Úfloat64Úfloat80Úfloat128Ú	complex64Ú
complex128ÚWhileÚScopeÚStringÚPrintÚQuotedStringÚFunctionPrototypeÚFunctionDefinitionÚReturnÚFunctionCallÚuntypedÚIntBaseTypeÚintcÚNodeÚnoneÚ	NoneTokenÚTokenÚCommentzx, y, z, t, x0, x1, x2, a, bÚnT©r!   ÚAé   é   é   ÚBÚiÚA22ÚB22c                  C   s.  t ttƒ t tdƒ t ttƒ t td dƒ t td tƒ t tt tƒ t tt dƒ t ttƒ} | j| jŽ | kstt	‚| j
dks‚t	‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttd	d„ ƒ ttd
d„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ d S )Nr   ©rB   r   z:=c                   S   s   t tt tƒS ©N)r   rD   rE   r@   © rJ   rJ   ú[/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/codegen/tests/test_ast.pyÚ<lambda>0   ó    z!test_Assignment.<locals>.<lambda>c                   S   s   t tt tƒS rI   )r   rD   rE   ÚmatrJ   rJ   rJ   rK   rL   1   rM   c                   S   s
   t ttƒS rI   )r   ÚxrN   rJ   rJ   rJ   rK   rL   2   rM   c                   S   s
   t ttƒS rI   )r   rO   r@   rJ   rJ   rJ   rK   rL   3   rM   c                   S   s   t td tƒS )NrH   ©r   r@   rN   rJ   rJ   rJ   rK   rL   4   rM   c                   S   s
   t ttƒS rI   )r   r@   rO   rJ   rJ   rJ   rK   rL   6   rM   c                   S   s
   t tdƒS ©Nr   )r   r@   rJ   rJ   rJ   rK   rL   7   rM   c                   S   s
   t ttƒS rI   )r   rN   r@   rJ   rJ   rJ   rK   rL   9   rM   c                   S   s
   t dtƒS rQ   ©r   rO   rJ   rJ   rJ   rK   rL   :   rM   c                   S   s   t tt dƒS ©NrB   rR   rJ   rJ   rJ   rK   rL   ;   rM   c                   S   s   t tt tƒS rI   rP   rJ   rJ   rJ   rK   rL   <   rM   c                   S   s
   t tdƒS rQ   )r   rD   rJ   rJ   rJ   rK   rL   =   rM   )r   rO   Úyr@   rN   rD   rE   ÚfuncÚargsÚAssertionErrorÚopr   Ú
ValueErrorÚ	TypeError)ÚarJ   rJ   rK   Útest_Assignment"   s,    



r\   c                  C   s”  t tdtƒ t tddƒ t tdtƒ t td ddƒ t td dtƒ t tt dtƒ t tt ddƒ dtfdtfdt	fdt
fdtffD ]`\} }t t| tƒ}|ttƒ}|j|jŽ |  krÀ|ksÆn t‚|j| ksÔt‚|j| d ks†t‚q†ttd	d
„ ƒ ttdd
„ ƒ ttdd
„ ƒ ttdd
„ ƒ ttdd
„ ƒ ttdd
„ ƒ ttdd
„ ƒ ttdd
„ ƒ ttdd
„ ƒ ttdd
„ ƒ ttdd
„ ƒ ttdd
„ ƒ d S )Nú+r   rH   ú-Ú*ú/ú%ú=c                   S   s   t tt dtƒS ©Nr]   )r   rD   rE   r@   rJ   rJ   rJ   rK   rL   Z   rM   z test_AugAssign.<locals>.<lambda>c                   S   s   t tt dtƒS rc   )r   rD   rE   rN   rJ   rJ   rJ   rK   rL   [   rM   c                   S   s   t tdtƒS rc   )r   rO   rN   rJ   rJ   rJ   rK   rL   \   rM   c                   S   s   t tdtƒS rc   )r   rO   r@   rJ   rJ   rJ   rK   rL   ]   rM   c                   S   s   t td dtƒS )NrH   r]   ©r   r@   rN   rJ   rJ   rJ   rK   rL   ^   rM   c                   S   s   t tdtƒS rc   )r   r@   rO   rJ   rJ   rJ   rK   rL   `   rM   c                   S   s   t tddƒS ©Nr]   r   )r   r@   rJ   rJ   rJ   rK   rL   a   rM   c                   S   s   t tdtƒS rc   )r   rN   r@   rJ   rJ   rJ   rK   rL   c   rM   c                   S   s   t ddtƒS )Nr   r]   ©r   rO   rJ   rJ   rJ   rK   rL   d   rM   c                   S   s   t tt ddƒS )Nr]   rB   rf   rJ   rJ   rJ   rK   rL   e   rM   c                   S   s   t tt dtƒS rc   rd   rJ   rJ   rJ   rK   rL   f   rM   c                   S   s   t tddƒS re   )r   rD   rJ   rJ   rJ   rK   rL   g   rM   )r   rO   rT   r@   rN   rD   rE   r   r   r   r   r   rU   rV   rW   ÚbinoprX   r   rY   rZ   )rg   Úclsr[   ÚbrJ   rJ   rK   Útest_AugAssign@   s<    û
"rj   c                  C   s†   t tttttg} tdt d ftt	 tft
tftd tfg}| D ]@}|D ]6\}}|||ƒ}t|ƒd|jt|ƒt|ƒf ksHt‚qHq@d S )NrC   )r   r   z
%s(%s, %s))r   r   r   r   r   r   rO   rT   rD   rE   rF   rG   r@   ÚreprÚ__name__rW   )Zassignment_classesÚpairsrh   ÚlhsÚrhsr[   rJ   rJ   rK   Útest_Assignment_printingj   s     ú	

ü
rp   c                  C   s^   t ttdƒtttd ƒƒ} | j| jŽ | ks.t‚| jtttƒksBt‚| j	tdtd ƒksZt‚d S rS   )
r   r   rO   rT   rU   rV   rW   Zleft_hand_sidesr   Zright_hand_sides©ÚcrJ   rJ   rK   Útest_CodeBlock€   s    rs   c                     s$  t ttt ƒt tdƒt ttƒt tdƒg} t tdƒt tdƒt ttt ƒt ttƒg}t | ¡}|t|Ž ksjt‚t ttt ƒt tdƒt ttƒt tdƒg‰ tt	‡ fdd„ƒ t ttt ƒt tt
t ƒt ttƒt ttd ƒg}t tt
t ƒt ttd ƒt ttt ƒt ttƒg}t |¡}|t|Ž k�s t‚d S )NrB   rC   c                      s
   t  ˆ ¡S rI   )r   Útopological_sortrJ   ©Zinvalid_assignmentsrJ   rK   rL   ¡   rM   z1test_CodeBlock_topological_sort.<locals>.<lambda>rA   )r   rO   rT   ÚzÚtr   rt   rW   r   rY   r[   ri   )ZassignmentsZordered_assignmentsÚc1Zfree_assignmentsZfree_assignments_orderedÚc2rJ   ru   rK   Útest_CodeBlock_topological_sort‡   s<    ü	û
üüü
rz   c                  C   s‚   t tttt ƒttdƒtttƒttdƒƒ} | jtƒ ks:t‚t tttt ƒttt	t
 ƒtttƒttt
d ƒƒ}|jt	t
hks~t‚d S )NrB   rC   rA   )r   r   rO   rT   rv   rw   Zfree_symbolsÚsetrW   r[   ri   ©rx   ry   rJ   rJ   rK   Útest_CodeBlock_free_symbolsµ   s    üür}   c               
   C   sú   t ttdƒttt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tt ƒƒkstt	‚t
tdd„ ƒ t ttttƒd ƒttdttƒ ƒtttt ƒƒ}| ¡ t ttttƒƒtttd ƒttdt ƒtttt ƒƒksöt	‚d S )NrB   c                   S   s"   t ttdƒttdƒttdƒƒ ¡ S )NrB   rC   )r   r   rO   rT   ÚcserJ   rJ   rJ   rK   rL   Ö   s    þz$test_CodeBlock_cse.<locals>.<lambda>rC   )r   r   rT   rO   r
   rv   rw   r~   Úx0rW   r   ÚNotImplementedErrorÚx1Úx2r|   rJ   rJ   rK   Útest_CodeBlock_cseÆ   s2    üû
	ýürƒ   c               
   C   s¨   t ttttttƒgddggƒƒtttttƒdttƒ gttƒd dggƒƒƒ} |  ¡ t tt	ttƒƒttttt	gddggƒƒtttt	dt	 gt	d dggƒƒƒks¤t
‚d S )NrA   é   rC   é   )r   r   rF   r   rO   r
   rT   rG   r~   r   rW   rq   rJ   rJ   rK   Útest_CodeBlock_cse__issue_14118é   s    ,þ ýr†   c                  C   sv   t ttddƒtttdf tt ƒttdtƒfƒ} t tdtttdf tt ƒfƒ} | j| j	Ž | ksdt
‚ttdd„ ƒ d S )Nr   rA   r]   )rB   rC   rA   r„   é   c                   S   s   t tttt fƒS rI   )r   r>   rO   rT   rJ   rJ   rJ   rK   rL   ù   rM   ztest_For.<locals>.<lambda>)r   r>   r   r   r@   rO   r   rT   rU   rV   rW   r   rZ   )ÚfrJ   rJ   rK   Útest_Forõ   s    0 r‰   c                  C   sj   t js
t‚t t kst‚G dd„ dtƒ} | ƒ }|t ks8t‚t d ksDt‚t tƒ ksRt‚t jt jŽ t ksft‚d S )Nc                   @   s   e Zd ZdS )ztest_none.<locals>.FooN©rl   Ú
__module__Ú__qualname__rJ   rJ   rJ   rK   ÚFooÿ   s   r�   )r:   Úis_AtomrW   r<   r;   rU   rV   )r�   ÚfoorJ   rJ   rK   Ú	test_noneü   s    
r�   c                  C   s¼   t dƒ} | jst‚| t dƒks"t‚| jdks0t‚| jf |  ¡ Ž| ksHt‚| j| jŽ | ks\t‚G dd„ dt ƒ}|dƒ}|| ks€t‚|j| jks�t‚t dƒ}t|ƒdks¨t‚t|ƒdks¸t‚d S )NÚfoobarc                   @   s   e Zd ZdS )ztest_String.<locals>.SignifierNrŠ   rJ   rJ   rJ   rK   Ú	Signifier  s   r’   r�   zString('foo'))	r/   rŽ   rW   ÚtextrU   ÚkwargsrV   Ústrrk   )Ústr’   ÚsiÚsrJ   rJ   rK   Útest_String  s    
r™   c                  C   s*   t dƒ} | jdkst‚t| ƒdks&t‚d S )Nr‘   )r=   r“   rW   r•   rq   rJ   rJ   rK   Útest_Comment  s    rš   c                  C   s,   t ƒ } | t ƒ kst‚| j| jŽ | ks(t‚d S rI   )r9   rW   rU   rV   )r>   rJ   rJ   rK   Ú	test_Node   s    r›   c                  C   sÄ   t dƒ} t| jƒdkst‚| jtdƒks,t‚t| ƒdks<t‚t| ƒdksLt‚t | ƒ| ks\t‚| j| jŽ | kspt‚t dƒ}t dƒ}||ksŒt‚||krœ||ks t‚t dƒ}||ks´t‚||ksÀt‚d S )NZMyTyperB   zType(String('MyType'))Út1Út2)	r   ÚlenrV   rW   Únamer/   r•   rk   rU   )rw   rœ   r�   Zt1brJ   rJ   rK   Ú	test_Type&  s    r    c                  C   sŠ   t  t¡tkst‚tddd�} t  | ¡tks0t‚t  t¡tksBt‚t  d¡tksTt‚t  d¡tksft‚t  d¡tksxt‚t	t
dd„ ƒ d S )	NÚuT©r"   rA   ç      @ù      @      ð?c                   S   s
   t  t¡S rI   )r   Ú	from_exprÚsumrJ   rJ   rJ   rK   rL   ?  rM   z&test_Type__from_expr.<locals>.<lambda>)r   r¥   rE   r!   rW   r   r"   r>   r#   r   rY   )r¡   rJ   rJ   rK   Útest_Type__from_expr7  s    r§   c                   C   sÐ   t tdd„ ƒ t d¡dks t‚t tdƒ¡dks6t‚t tdƒ¡dksLt‚t d¡dks^t‚t td	d„ ƒ t d
¡d
ks~t‚t tdd„ ƒ t d¡dksžt‚t d¡dks°t‚t tdd„ ƒ t tdd„ ƒ d S )Nc                   S   s
   t  d¡S )Nç      @)r!   Ú
cast_checkrJ   rJ   rJ   rK   rL   D  rM   z1test_Type__cast_check__integers.<locals>.<lambda>Ú3rA   z3.0000000000000000000z3.0000000000000000001g     À_@é   c                   S   s
   t  d¡S )Né€   ©r$   r©   rJ   rJ   rJ   rK   rL   K  rM   i€ÿÿÿc                   S   s
   t  d¡S )Niÿÿÿr­   rJ   rJ   rJ   rK   rL   M  rM   r   r¬   c                   S   s
   t  d¡S )Ng      p@©r%   r©   rJ   rJ   rJ   rK   rL   Q  rM   c                   S   s
   t  d¡S )Néÿÿÿÿr®   rJ   rJ   rJ   rK   rL   R  rM   )r   rY   r!   r©   rW   r   r$   r%   rJ   rJ   rJ   rK   Útest_Type__cast_check__integersB  s    r°   c                  C   sT   t dƒ} | t dƒkst‚t ddgƒ}t ddgƒ}||ks<t‚|j|jŽ |ksPt‚d S )NÚnoexceptZalignasé   é    )r   rW   rU   rV   )r±   Z	alignas16Z	alignas32rJ   rJ   rK   Útest_AttributeT  s    r´   c                  C   sJ  t ttd�} | t | ƒkst‚| t dtd�ks0t‚| jtks>t‚| jtksLt‚t| jksZt‚| j| j	Ž | ksnt‚t
| ƒdks~t‚t ttthd�}|jtksœt‚|jtksªt‚t|jks¸t‚|j|j	Ž |ksÌt‚t tt t¡d�}|jtksìt‚|j|j	Ž |k�st‚t tt t¡d�}|jtk�s$t‚||k�s2t‚t  t¡}|jtk�sLt‚t  tddd�¡jtk�sjt‚|j|j	Ž |k�s€t‚t jtddd	�}|j|j	Ž |k�s¦t‚t|jd ƒd
k �s¾t‚ttdd„ ƒ t  t¡}|jtk�sæt‚t
|ƒdk�søt‚t jtdd�jtk�st‚t jtdd�jtk�s,t‚t jtdd�jtk�sFt‚d S )N©ÚtyperO   zVariable(x, type=real))ÚattrsTr¢   r¨   F©Úvaluer©   gVçž¯Ò<c                   S   s   t jtddd�S )Nr¨   Tr¸   )r   Údeducedr>   rJ   rJ   rJ   rK   rL   |  rM   ztest_Variable.<locals>.<lambda>zVariable(n, type=integer)rA   )r¹   r£   r¤   )r   rO   r"   rW   Úsymbolr¶   r   r·   rU   rV   r•   rT   Úf32r>   r   r¥   r!   rE   rº   r	   Úabsr¹   r   rY   rv   r#   )ÚvÚwZv_nZv_iZa_iZv_n2Zv_n3rJ   rJ   rK   Útest_Variable]  sB    

rÀ   c                  C   sì   t tƒ} | jtkst‚| jtks$t‚t| jks2t‚t| jks@t‚| j	| j
Ž | ksTt‚tddd�}t |t |¡tthd�}|j|ks†t‚|jtks”t‚t|jks¢t‚t|jks°t‚|j	|j
Ž |ksÄt‚tddd�}|| }|j|fksèt‚d S )Nr¡   Tr¢   )r¶   r·   rE   r?   )r   rO   r»   rW   r¶   r6   r   r·   r    rU   rV   r   r   r¥   r"   Úindices)Úpr¡   ZpurE   ZderefrJ   rJ   rK   Útest_Pointer†  s     rÃ   c                     s–  t ddd�} t| t | ¡d�}t|ƒjjtks2t‚tt	t t	¡d�}t|ƒjjt
ksXt‚t| t | ¡dthd�}t|jks~t‚t|jksŒt‚t|ƒ}|j|ks¢t‚t|jjtƒs´t‚|jjdksÄt‚|j|jŽ |ksØt‚| ¡ |ksèt‚|jd d d�t|ƒk�st‚ttt
dd�}t|ƒ}|j|k�s*t‚|jjtdƒk�s@t‚ttt t¡dd�‰ tˆ ƒ}|jjt
k�snt‚|jjdk�s€t‚tt‡ fd	d
„ƒ d S )Nr¡   Tr¢   rµ   r£   )r¹   r·   rA   )r¶   r¹   c                      s
   t ˆ dƒS )Né*   )r   rJ   ©ÚvirJ   rK   rL   »  rM   z"test_Declaration.<locals>.<lambda>)r   r   r   r¥   r   Úvariabler¶   r"   rW   r>   r!   r   r·   r    Ú
isinstancer¹   r   rU   rV   Zas_DeclarationrT   r   rE   r   rY   )r¡   ZvuÚvnZvucÚdeclZvyZdecl2Zdecl3rJ   rÅ   rK   Útest_Declaration›  s0    rË   c                   C   s>   t jtdƒkst‚t jt jfks$t‚ttdƒjƒdks:t‚d S )Nr8   r[   )r8   rŸ   r/   rW   rV   r•   r7   rJ   rJ   rJ   rK   Útest_IntBaseType¾  s    rÌ   c                   C   sæ  t jdkst‚tjdkst‚tjdks*t‚tjdks8t‚tjdksFt‚t jdksTt‚tjdksbt‚tjdkspt‚tjd	ks~t‚tjd
ksŒt‚t jdksšt‚tjdks¨t‚tjdks¶t‚tjdksÄt‚tjdksÒt‚t j	dksàt‚tj	dksît‚tj	dksüt‚tj	dk�st‚tj	dk�st‚t
t jtddd� d ƒddt j   k �sLt‚t
tjtddd� d ƒddtj   k �s|t‚t
tjtddd� d ƒddtj   k �s¬t‚t
tjtddd� d ƒddtj   k �sÜt‚t
tjtddd� d ƒddtj   k �st‚t
t jtddd� d ƒddt j   k �s<t‚t
tjtd dd� d ƒddtj   k �slt‚t
tjtd!dd� d ƒddtj   k �sœt‚t
tjtd"dd� d ƒddtj   k �sÌt‚t
tjtd#dd� d ƒddtj   k �süt‚t
t jtd$dd� d ƒddt j   k �s,t‚t
tjtd%dd� d ƒddtj   k �s\t‚t
tjtd&dd� d ƒddtj   k �sŒt‚t
tjtd'dd� d ƒddtj   k �s¼t‚t
tjtd(dd� d ƒddtj   k �sìt‚t d)¡td)dƒk�st‚t
t d*¡d* ƒd+k �s"t‚tt d¡ttfƒ�s<t‚t t¡td,ƒk�sTt‚t t ¡td-ƒk�snt‚t ttƒ¡td,ƒk�sŠt‚t tt ƒ¡td-ƒk�s¨t‚t t t¡¡�s¾t‚ttk�sÌt‚ttjtjŽ k�sât‚d S ).NrA   é   é   é   é!   r‡   é	   é   é   é$   r²   r¬   i   i @  ióÿÿÿiƒÿÿÿiüÿÿiÀÿÿz
0.00097656©Ú	precisionrB   gš™™™™™¹?é
   z1.1920929e-07r³   z2.2204460492503131e-16é@   z1.08420217248550443401e-19éP   z* 1.92592994438723585305597794258492732e-34Z65504z3.40282347e+38z1.79769313486231571e+308z1.18973149535723176502e+4932z+1.18973149535723176508575932662800702e+4932z
6.1035e-05z1.17549435e-38z2.22507385850720138e-308z3.36210314311209350626e-4932z*3.3621031431120935062626778173217526e-4932g      à?gš™™™™™@gqµô7K�<Úinfz-inf)Úf16ÚdigrW   r¼   Úf64Úf80Úf128Zdecimal_digZmax_exponentZmin_exponentr½   Úepsr   ÚmaxZtinyr©   rÈ   ÚfloatZcast_nocheckr   ÚmathÚisnanr   rU   rV   rJ   rJ   rJ   rK   Útest_FloatTypeÄ  sZ    000000000000000rå   c                     s  t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ tdt d¡ d ƒdk sVt‚td	t d	¡ d
 ƒdk stt‚tdƒ} t| t | ¡ d ƒdk sšt‚t tddd�¡ t tdd„ ƒ d‰ t t‡ fdd„ƒ ttt	ˆ ƒdd�t ˆ ¡ ƒˆ d k sút‚tt d¡d ƒdk �st‚d S )Nc                   S   s
   t  d¡S )Ng8-ü	<Ý^@©r¼   r©   rJ   rJ   rJ   rK   rL   ÿ  rM   z7test_Type__cast_check__floating_point.<locals>.<lambda>c                   S   s
   t  d¡S )NgÆ½ÉÔü°(@ræ   rJ   rJ   rJ   rK   rL      rM   c                   S   s
   t  d¡S )NgÒ—ÔCÊÀó?ræ   rJ   rJ   rJ   rK   rL     rM   c                   S   s
   t  d¡S )Ng&T9Ýš¿?ræ   rJ   rJ   rJ   rK   rL     rM   g¨"<Ý^@ç”x{;‚Nj>ç:Œ0âŽyE>g_^e7Ýš¿?g•dyáýÅ=g•dyáý¥=ú0.123456789012345670499ç^<Í÷ëh"<ç¬Ò¶OÉƒý;z0.12345678901234567890103éX   rÕ   c                   S   s   t  tddd�¡S )Nz0.12345678901234567890149rì   rÕ   )rÞ   r©   r   rJ   rJ   rJ   rK   rL   
  rM   gùƒ�çÖÈ@c                      s
   t  ˆ ¡S rI   ræ   rJ   ©Zv10rJ   rK   rL     rM   éH   g¼‰Ø—²Òœ<iÿÿÿl       rB   )
r   rY   r½   r¼   r©   rW   r   rÝ   rÞ   r•   )Údcm21rJ   rí   rK   Ú%test_Type__cast_check__floating_pointþ  s    *rð   c                     s„   d} t tdd„ ƒ t| t | ¡ d ƒdk s0t‚tdƒd }t|t |¡ d ƒd	k sZt‚td
ƒdtd
ƒ  ‰ t t‡ fdd„ƒ d S )Ny¨"<Ý^@¥Co7Ýš¿?c                   S   s
   t  d¡S )Ny&T9Ýš¿?&T9Ýš¿?)Úc64r©   rJ   rJ   rJ   rK   rL     rM   z?test_Type__cast_check__complex_floating_point.<locals>.<lambda>rç   rè   ré   y        #B’¡œÇ;rê   rë   z0.1234567890123456749y              ð?c                      s
   t  ˆ ¡S rI   )Úc128r©   rJ   ©Zv19rJ   rK   rL     rM   )r   rY   r½   rñ   r©   rW   r   rò   )Zval9_11rï   rJ   ró   rK   Ú-test_Type__cast_check__complex_floating_point  s    rô   c                  C   sÄ   t tdƒ} ttdk | gƒ}|jjd tks.t‚|jjd dksBt‚|jttddd�ksZt‚|jj| fkslt‚|j|jŽ |ks€t‚t	t tdƒƒ}ttdk |ƒ}||ks¨t‚|ttdk | gƒksÀt‚d S )NrB   rC   r   F)ÚevaluaterA   )
r   rO   r-   Ú	conditionrV   rW   r   ÚbodyrU   r   )ÚxppZwhl1ÚcblkZwhl2rJ   rJ   rK   Ú
test_While  s    
rú   c                  C   st   t ttƒ} ttdƒ}t| |gƒ}t| |ƒ}|j|ks8t‚|t|ƒksHt‚|t|| gƒks\t‚|j|j	Ž |kspt‚d S rS   )
r   rO   rT   r   r.   r   r÷   rW   rU   rV   )ZassignÚincrZscprù   rJ   rJ   rK   Ú
test_Scope-  s    


rü   c                  C   sÔ   d} t ttg| ƒ}t|jƒ| ks$t‚|jtttƒks8t‚|jtttƒt	| ƒt
fksVt‚|t ttf| ƒkslt‚|t ttg| ƒks‚t‚|j|jŽ |ks–t‚t ttgƒ}|t ttgƒks¶t‚||ksÂt‚|jd ksÐt‚d S )Nz%d %.3f)r0   r>   rO   r•   Úformat_stringrW   Z
print_argsr   rV   r1   r:   rU   )ÚfmtZpsZps2rJ   rJ   rK   Ú
test_Print8  s    rÿ   c               	   C   sž  t ttd�} t ttd�}ttd| |gƒ}|jtks6t‚|jt	dƒksHt‚|j
t| |ƒks\t‚|ttd| |gƒkstt‚|ttd|| gƒksŒt‚|j|jŽ |ks t‚tttt ƒttƒg}ttd| |g|ƒ}|jtksÖt‚t|jƒdksèt‚|j
t| |ƒksüt‚|jt|Ž k�st‚|ttd| |g|ƒk�s,t‚|ttd| |g|d d d… ƒk�sRt‚|j|jŽ |k�sht‚t |¡}||k�s€t‚t ||¡}||k�sšt‚d S )Nrµ   Úpowerr¯   )r   rO   r"   r>   r!   r2   Úreturn_typerW   rŸ   r/   Ú
parametersr   rU   rV   r   r4   r3   r•   r÷   r   Zfrom_FunctionDefinitionZfrom_FunctionPrototype)ZvxrÉ   Úfp1r÷   Zfd1Úfp2Úfd2rJ   rJ   rK   Ú-test_FunctionPrototype_and_FunctionDefinitionH  s,    &
r  c                  C   sP   t tƒ} | jtfkst‚| t tƒks(t‚| t tƒks8t‚| j| jŽ | ksLt‚d S rI   )r4   rO   rV   rW   rT   rU   )ÚrsrJ   rJ   rK   Útest_Returne  s
    r  c                  C   s  t dtdfƒ} | jd tks t‚| jd dks2t‚t| jƒdksDt‚t| jd tƒsXt‚| t dtdfƒksnt‚| t ddtfƒks„t‚| t dtdfƒksšt‚| j| jŽ | ks®t‚t ddddgƒ}t|jƒdksÐt‚|jd dksât‚|jd dksôt‚|jd dk�st‚t	|ƒd	k�st‚d S )
Nr   rA   r   rB   rC   ZPowerÚfmar„   )z*FunctionCall(fma, function_args=(2, 3, 4))z,FunctionCall("fma", function_args=(2, 3, 4)))
r5   rO   Zfunction_argsrW   rž   rÈ   r   rU   rV   r•   )ÚfcZfc2rJ   rJ   rK   Útest_FunctionCallm  s    r  c            
      C   s&  t dtƒ} t dtƒ}t dtƒ}ttd| |gt| j|jƒgƒ}|j}td|dgƒ}t||ƒ}t	|j
d jƒdksrt‚t	|j
d jƒdksŠt‚t|||gƒD ]\}}||ks˜t‚q˜| |tdƒ¡}	t	|j
d jƒdksÖt‚t	|j
d jƒdksît‚t	|	j
d jƒdk�st‚t	|	j
d jƒdk�s"t‚d S )	NrO   rT   r>   ÚpwerrA   r   rB   r   )r   r"   r!   r3   Úpowr»   rŸ   r5   r   r•   rV   rW   ÚzipÚreplacer/   )
rO   rT   r>   r  ZpnameZpcallZtree1r[   ri   Ztree2rJ   rJ   rK   Útest_ast_replace‚  s     



r  )~rã   Zsympy.core.containersr   Zsympy.core.numbersr   r   r   r   Zsympy.core.relationalr   Zsympy.core.symbolr   r	   Z(sympy.functions.elementary.trigonometricr
   Zsympy.matrices.denser   Z"sympy.matrices.expressions.matexprr   Zsympy.sets.fancysetsr   Zsympy.tensor.indexedr   r   Zsympy.testing.pytestr   Zsympy.codegen.astr   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   rO   rT   rv   rw   r   r�   r‚   r[   ri   r>   r@   rN   rD   rE   rF   rG   r\   rj   rp   rs   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  rJ   rJ   rJ   rK   Ú<module>   sd   ¼

*.#	)#: