§
    OŠtj€Š  ã                   óô  — d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ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+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC d dlmDZD d dlmEZE d dlFmGZGmHZHmIZImJZJmKZK d dlLmMZMmNZN d dlOmPZPmQZQ d dlRmSZSmTZT d dlUmVZVmWZW d dlXmYZY d dlZm[Z[ d„ Z\d„ Z]d „ Z^d!„ Z_d"„ Z`d#„ Zad$„ Zbd%„ Zcd&„ Zdd'„ Zed(„ Zfd)„ Zgd*„ Zhd+„ Zid,„ Zjd-„ Zkd.„ Zld/„ Zmd0„ Znd1„ Zod2„ Zpd3„ Zqd4„ Zrd5„ Zsd6„ Ztd7„ Zud8„ Zvd9„ Zwd:„ Zxd;„ Zyd<„ Zzd=„ Z{d>„ Z|d?„ Z}d@„ Z~dA„ ZdB„ Z€dC„ Z�dD„ Z‚dE„ ZƒdF„ Z„dG„ Z…dH„ Z†dIS )Jé    )ÚAdd)ÚExpr)ÚFunctionÚLambdaÚdiff)ÚMod)ÚCatalanÚ
EulerGammaÚGoldenRatio)ÚEÚFloatÚIÚIntegerÚRationalÚpi)ÚEq)ÚS)ÚDummyÚsymbols)Ú	factorial)Ú	conjugateÚsign)ÚexpÚlog)Úsqrt)Ú	Piecewise)Úatan2ÚcosÚsin)Úgamma)ÚIntegral)ÚRange)ÚForÚ
AssignmentÚ
aug_assign)ÚDeclarationÚVariableÚfloat32Úfloat64Úvalue_constÚrealÚbool_ÚWhileÚFunctionPrototypeÚFunctionDefinitionÚintegerÚReturnÚElement)ÚUnevaluatedExpr)Ú
Relational)ÚAndÚOrÚNotÚ
EquivalentÚXor)ÚMatrixÚMatrixSymbol)ÚfcodeÚFCodePrinter)ÚIndexedBaseÚIdx)ÚArraySymbolÚArrayElement)Úimplemented_function)Úraisesc                  óü  — t          dd¬¦  «        \  } }}t          ||z   ¦  «        }t          t          | |z   ¦  «        ¦  «        }t	          |d¬¦  «        dk    sJ ‚t          d¦  «        \  }}}t          ||z   ¦  «        }t          t          ||z   ¦  «        ¦  «        }	t	          |	d¬	¦  «        d
                              ¦   «         dk    sJ ‚t	          |	ddi¬¦  «                             ¦   «         dk    sJ ‚d S )Nzp q rT)r+   Úfree©Úsource_formatzexp(p + (q + r))úx y zF©Úhumané   zexp(re(x) + re(y + z))ÚreÚrealpart©Úuser_functionsz"exp(realpart(x) + realpart(y + z)))r   r3   Úabsr   r<   Úlstrip)
ÚpÚqÚrÚq_rÚexprÚxÚyÚzÚy_zÚexpr2s
             ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/printing/tests/test_fortran.pyÚtest_UnevaluatedExprr]   #   sþ   € Ý�g DÐ)Ñ)Ô)�G€A€qˆ!Ý
˜!˜a™%Ñ
 Ô
 €CÝ�s�1�S‘5‰zŒz‰?Œ?€DÝ� VÐ,Ñ,Ô,Ð0BÒBÐBÐBÐBÝ�gÑÔ�G€A€qˆ!Ý
˜!˜a™%Ñ
 Ô
 €CÝ•�A�c‘E‘
”
‰OŒO€EÝ�˜eÐ$Ñ$Ô$ QÔ'×.Ò.Ñ0Ô0Ð4LÒLÐLÐLÐLÝ�¨¨jÐ'9Ð:Ñ:Ô:×AÒAÑCÔCÐGkÒkÐkÐkÐkÐkÐkó    c                  ó†   — t          d¦  «        }  G d„ dt          ¦  «        }t           || ¦  «        ¦  «        dk    sJ ‚d S )NrW   c                   ó   — e Zd Zd„ ZdS )útest_printmethod.<locals>.nintc                 óH   — d|                      | j        d         ¦  «        z  S )Nznint(%s)r   )Ú_printÚargs)ÚselfÚprinters     r\   Ú_fcodez%test_printmethod.<locals>.nint._fcode3   s   € Ø §¢¨t¬y¸¬|Ñ <Ô <Ñ<Ð<r^   N)Ú__name__Ú
__module__Ú__qualname__rg   © r^   r\   Únintra   2   s#   € € € € € ð	=ð 	=ð 	=ð 	=ð 	=r^   rl   z      nint(x))r   r   r<   )rW   rl   s     r\   Útest_printmethodrm   /   s^   € Ý�‰Œ€Að=ð =ð =ð =ð =�xñ =ô =ð =õ ���a‘”‰>Œ>˜_Ò,Ð,Ð,Ð,Ð,Ð,r^   c                  óx  ‡— t          d¦  «        Št          dd¬¦  «        } t          dd¬¦  «        }t          t          ‰¦  «        dd¬	¦  «        d
k    sJ ‚t          t          | ¦  «        dd¬	¦  «        dk    sJ ‚t          t          |¦  «        dd¬	¦  «        dk    sJ ‚t          t          ˆfd„¦  «         d S )NrW   rX   T©r0   rY   )Úcomplexé_   rE   ©ÚstandardrG   z#merge(0d0, dsign(1d0, x), x == 0d0)zmerge(0, isign(1, y), y == 0)z/merge(cmplx(0d0, 0d0), z/abs(z), abs(z) == 0d0)c                  ó<   •— t          t          ‰ ¦  «        ¦  «        S ©N)r<   r   ©rW   s   €r\   ú<lambda>z!test_fcode_sign.<locals>.<lambda>?   s   ø€ ­­d°1©g¬g©¬€ r^   )r   r<   r   rC   ÚNotImplementedError)rX   rY   rW   s     @r\   Útest_fcode_signry   8   sÈ   ø€ Ýˆc�l„l€AÝˆc˜4Ð Ñ Ô €AÝˆc˜4Ð Ñ Ô €AÝ•�a‘” 2°VÐ<Ñ<Ô<Ð@eÒeÐeÐeÐeÝ•�a‘” 2°VÐ<Ñ<Ô<Ð@_Ò_Ð_Ð_Ð_Ý•�a‘” 2°VÐ<Ñ<Ô<Ð@qÒqÐqÐqÐqÝ
ÕÐ 6Ð 6Ð 6Ð 6Ñ7Ô7Ð7Ð7Ð7r^   c                  ó  — t          d¦  «        \  } }t          dd¬¦  «        }t          | dz  ¦  «        dk    sJ ‚t          | |dz  z  ¦  «        dk    sJ ‚t          dt          | ¦  «        d	z  | || z  z
  z  z  | d
z  |z   z  ¦  «        dk    sJ ‚t          t          | ¦  «        ¦  «        dk    sJ ‚t          t          |¦  «        ¦  «        dk    sJ ‚t          | dz  ¦  «        dk    sJ ‚t          t          | ¦  «        ¦  «        dk    sJ ‚t          t          d¦  «        ¦  «        dk    sJ ‚t          | dz  ¦  «        dk    sJ ‚t          | dz  dd¬¦  «        dk    sJ ‚t          | t	          dd¦  «        z  ¦  «        dk    sJ ‚d S )Núx,yÚnTro   é   z
      x**3z      x**(y**3)é   g      @rK   z,      (3.5d0*sin(x))**(-x + y**x)/(x**2 + y)z      sqrt(x)z      sqrt(dble(n))g      à?é
   z      sqrt(10.0d0)g      ð¿z      1d0/xg       ÀrX   rE   rF   zy = x**(-2.0d0)é   z      x**(3.0d0/7.0d0))r   r<   r   r   r   )rW   rX   r|   s      r\   Útest_fcode_Powr�   B   s©  € Ý�5‰>Œ>�D€A€qÝ�˜TÐ"Ñ"Ô"€Aå��A‘‰;Œ;˜,Ò&Ð&Ð&Ð&Ý��Q˜‘T‘ÑÔÐ0Ò0Ð0Ð0Ð0Ý�•C˜‘F”F˜3‘J ! a¨¡d¡(Ñ+Ñ+¨Q°©T°A©XÑ6Ñ7Ô7Ø6ò7ð 7ð 7ð 7å•�a‘”‰>Œ>˜_Ò,Ð,Ð,Ð,Ý•�a‘”‰>Œ>Ð2Ò2Ð2Ð2Ð2Ý��C‘‰=Œ=˜OÒ+Ð+Ð+Ð+Ý•�a‘”‰>Œ>˜_Ò,Ð,Ð,Ð,Ý•�b‘”‰?Œ?Ð2Ò2Ð2Ð2Ð2Ý��D‘‰>Œ>˜]Ò*Ð*Ð*Ð*Ý��D‘˜#¨VÐ4Ñ4Ô4Ð8IÒIÐIÐIÐIÝ�•H˜Q ‘N”NÑ"Ñ#Ô#Ð'?Ò?Ð?Ð?Ð?Ð?Ð?r^   c                  óÔ  — t          d¦  «        } t          t          dd¦  «        ¦  «        dk    sJ ‚t          t          dd¦  «        ¦  «        dk    sJ ‚t          t          dd¦  «        ¦  «        d	k    sJ ‚t          t          d
d¦  «        ¦  «        dk    sJ ‚t          | t          dd¦  «        z   ¦  «        dk    sJ ‚t          t          dd¦  «        | z  ¦  «        dk    sJ ‚d S )NrW   r}   r€   z      3.0d0/7.0d0é   é	   z      2iùÿÿÿz      -3.0d0/7.0d0éýÿÿÿz      x + 3.0d0/7.0d0z      (3.0d0/7.0d0)*x)r   r<   r   rv   s    r\   Útest_fcode_Rationalr†   T   sê   € Ý�‰Œ€AÝ•˜!˜Q‘”Ñ Ô Ð$7Ò7Ð7Ð7Ð7Ý•˜"˜a‘”Ñ!Ô! YÒ.Ð.Ð.Ð.Ý•˜!˜R‘”Ñ!Ô!Ð%9Ò9Ð9Ð9Ð9Ý•˜"˜bÑ!Ô!Ñ"Ô"Ð&9Ò9Ð9Ð9Ð9Ý�•X˜a ‘^”^Ñ#Ñ$Ô$Ð(?Ò?Ð?Ð?Ð?Ý•˜!˜Q‘” Ñ!Ñ"Ô"Ð&=Ò=Ð=Ð=Ð=Ð=Ð=r^   c                  óŽ   — t          t          d¦  «        ¦  «        dk    sJ ‚t          t          d¦  «        ¦  «        dk    sJ ‚d S )NéC   z      67éÿÿÿÿz      -1)r<   r   rk   r^   r\   Útest_fcode_IntegerrŠ   ^   sF   € Ý•˜‘”ÑÔ Ò+Ð+Ð+Ð+Ý•˜‘”ÑÔ Ò+Ð+Ð+Ð+Ð+Ð+r^   c                  óŽ   — t          t          d¦  «        ¦  «        dk    sJ ‚t          t          d¦  «        ¦  «        dk    sJ ‚d S )Ng      E@z      42.0000000000000d0g@Œµx¯Äz      -1.00000000000000d+20)r<   r   rk   r^   r\   Útest_fcode_FloatrŒ   c   sH   € Ý•�t‘”ÑÔÐ!;Ò;Ð;Ð;Ð;Ý•�u‘”ÑÔÐ"?Ò?Ð?Ð?Ð?Ð?Ð?r^   c                  óâ  ‡‡— t          d¦  «        \  ŠŠt          t          ‰¦  «        t          ‰¦  «        z  ¦  «        dk    sJ ‚t	          t
          ˆˆfd„¦  «         t	          t
          ˆˆfd„¦  «         t	          t
          ˆˆfd„¦  «         t	          t
          ˆˆfd„¦  «         dD ]A} t          t          ‰‰¦  «        | ¬¦  «        d	k    sJ ‚t          ‰‰z  | ¬¦  «        d	k    sJ ‚ŒBd S )
Nr{   z      sin(x)**cos(y)c                  óB   •— t          t          ‰ ‰¦  «        d¬¦  «        S ©NéB   ©rs   ©r<   r   ©rW   rX   s   €€r\   rw   z&test_fcode_functions.<locals>.<lambda>k   ó   ø€ ­­c°!°Q©i¬iÀ"Ð(EÑ(EÔ(E€ r^   c                  ó,   •— t          ‰ ‰z  d¬¦  «        S r�   ©r<   r“   s   €€r\   rw   z&test_fcode_functions.<locals>.<lambda>l   ó   ø€ ­¨a°!©e¸bÐ(AÑ(AÔ(A€ r^   c                  óB   •— t          t          ‰ ‰¦  «        d¬¦  «        S ©NéM   r‘   r’   r“   s   €€r\   rw   z&test_fcode_functions.<locals>.<lambda>m   r”   r^   c                  ó,   •— t          ‰ ‰z  d¬¦  «        S r™   r–   r“   s   €€r\   rw   z&test_fcode_functions.<locals>.<lambda>n   r—   r^   )éZ   rq   iÓ  iØ  r‘   z      modulo(x, y))r   r<   r   r   rC   rx   r   )rs   rW   rX   s    @@r\   Útest_fcode_functionsr�   h   s   øø€ Ý�5‰>Œ>�D€A€qÝ•�Q‘”�3˜q™6œ6Ñ!Ñ"Ô"Ð&<Ò<Ð<Ð<Ð<Ý
ÕÐ EÐ EÐ EÐ EÐ EÑFÔFÐFÝ
ÕÐ AÐ AÐ AÐ AÐ AÑBÔBÐBÝ
ÕÐ EÐ EÐ EÐ EÐ EÑFÔFÐFÝ
ÕÐ AÐ AÐ AÐ AÐ AÑBÔBÐBØ(ð Gð GˆÝ•S˜˜A‘Y”Y¨Ð2Ñ2Ô2Ð6JÒJÐJÐJÐJÝ�Q˜‘U XÐ.Ñ.Ô.Ð2FÒFÐFÐFÐFÐFðGð Gr^   c            	      óT  — t          ¦   «         } t          d¦  «        \  }}}}}}}t          t          |¦  «        t	          ||z  ¦  «        z   t          ||z  ¦  «        z   ¦  «        dk    sJ ‚t          t          |¦  «        d|z  |z  |t          dd¦  «        z  z  z   ¦  «        dk    sJ ‚t          t          |¦  «        t	          ||z  ¦  «        z   t          ||z  ¦  «        z   d¬¦  «        dk    sJ ‚t          |t          |¦  «        z
  d¬¦  «        d	k    sJ ‚|                      |t	          |¦  «        z  |z   d
¬¦  «        dk    sJ ‚|                      |t	          |¦  «        z  d¬¦  «        dk    sJ ‚|                      |d¬¦  «        dk    sJ ‚t          dd¬¦  «        \  }}	t          d¦  «        }
t          d¦  «        }t          d¦  «        }t          d|	¦  «        }t          d|¦  «        }t          |
||f         ||         z  ||         d¬¦  «        dk    sJ ‚d S )Nzx,x_,x__,y,X,X_,Yz&      exp(x_) + sin(x*y) + cos(X__*Y_)rK   r€   z(      2*X_**(7.0d0/2.0d0)*Y*x + exp(x__)F)Úname_manglingz#      exp(x_) + sin(x*y) + cos(X*Y)z      x - cos(X)Úme©Ú	assign_toz      me = X*sin(x_) + x__Úmuz      mu = X*sin(x_)Úadz      ad = x__ún,mTro   ÚArW   rX   Úir   rE   ©r¢   rG   zndo i = 1, m
   y(i) = 0
end do
do i = 1, m
   do I_ = 1, n
      y(i) = A(i, I_)*x(I_) + y(i)
   end do
end do)
r=   r   r<   r   r   r   r   Údoprintr>   r?   )ÚobrW   Úx_Úx__rX   ÚXÚX_ÚYr|   Úmr¦   r§   r   s                r\   Ú	test_caser±   t   sO  € Ý	‰Œ€BÝÐ 3Ñ4Ô4Ñ€A€bˆˆQˆq��AÝ•�R‘”�3˜q ™s™8œ8Ñ#¥c¨!¨A©#¡h¤hÑ.Ñ/Ô/Ø@òAð Að Að Aå•�S‘”˜A˜a™C ™E "¥h¨q°!¡n¤nÑ"4Ñ4Ñ4Ñ5Ô5ØBòCð Cð Cð Cå•�R‘”�3˜q ™s™8œ8Ñ#¥c¨!¨A©#¡h¤hÑ.¸eÐDÑDÔDØ=ò>ð >ð >ð >å�•S˜‘V”V‘¨5Ð1Ñ1Ô1Ð5GÒGÐGÐGÐGØ�:Š:�a�˜A™œ‘h ‘m¨tˆ:Ñ4Ô4Ð8TÒTÐTÐTÐTØ�:Š:�a�˜A™œ‘h¨$ˆ:Ñ/Ô/Ð3IÒIÐIÐIÐIØ�:Š:�b Dˆ:Ñ)Ô)Ð-=Ò=Ð=Ð=Ð=Ý�5 $Ð'Ñ'Ô'�D€A€qÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝˆC�‰Œ€AÝˆC�‰Œ€AÝ��1�a�4”˜˜1œ‘¨¨1¬¸VÐDÑDÔDð-5ò7ð 7ð 7ð 7ð 7ð 7r^   c            
      óR  — t          d¦  «        } t          d¦  «                             d¦  «        }d}t          | t          d¦  «        z  ¦  «        d|z  k    sJ ‚t          | t          d¦  «        z  ¦  «        d|z  k    sJ ‚t          | t          t	          d¦  «        ¦  «        z  ¦  «        d|z  k    sJ ‚t          t          t	          d¦  «        ¦  «        ¦  «        d|z  k    sJ ‚t          t          d¦  «        ¦  «        dt          d¦  «                             d¦  «        z  k    sJ ‚t          | t          t          d¦  «        ¦  «        z  ¦  «        d|z  k    sJ ‚t          | t          t          t	          d¦  «        ¦  «        ¦  «        z  ¦  «        d|z  k    sJ ‚d S )NrW   r   é   z0.8340324452479558d0z      x*%sd0z
      %sd0z
      x*%s)r   r   Úevalfr<   r   r   )rW   Úlog10_17Úloglog10_17s      r\   Ú"test_fcode_functions_with_integersr·   “   so  € Ýˆs�|„|€AÝ�2‰wŒw�}Š}˜RÑ Ô €HØ(€KÝ�•S˜‘W”W‘ÑÔ °(Ñ!:Ò:Ð:Ð:Ð:Ý�•S˜‘W”W‘ÑÔ °(Ñ!:Ò:Ð:Ð:Ð:Ý�•S�˜2™œ‘Z”Z‘Ñ Ô  N°XÑ$=Ò=Ð=Ð=Ð=Ý••Q�r‘U”U‘”ÑÔ ¨xÑ 7Ò7Ð7Ð7Ð7Ý•�R‘”‰>Œ>˜\­C°©G¬G¯MªM¸"Ñ,=Ô,=Ñ=Ò=Ð=Ð=Ð=Ý�•S�˜R™œ‘\”\Ñ!Ñ"Ô" l°[Ñ&@Ò@Ð@Ð@Ð@Ý�•S��Q˜r™UœU™œ‘_”_Ñ$Ñ%Ô%¨¸Ñ)CÒCÐCÐCÐCÐCÐCr^   c                  ó€  — d} t          ¦   «         }t          t          ¦  «        dt          j        | ¦  «        z  k    sJ ‚t          t          ¦  «        dt	          j        | ¦  «        z  k    sJ ‚t          t
          ¦  «        dt          j        | ¦  «        z  k    sJ ‚t          t          ¦  «        dt          j        | ¦  «        z  k    sJ ‚t          t          ¦  «        dt          j        | ¦  «        z  k    sJ ‚t          t          d¬¦  «        dt          j        d¦  «        z  k    sJ ‚t          t          d	¬
¦  «        t          |                     t          j        | ¦  «        ¦  «        fht          ¦   «         dfk    sJ ‚t          t          d	¬
¦  «        t          |                     t	          j        | ¦  «        ¦  «        fht          ¦   «         dfk    sJ ‚t          t
          d	¬
¦  «        t
          |                     t          j        | ¦  «        ¦  «        fht          ¦   «         dfk    sJ ‚t          t          d	¬
¦  «        t          |                     t          j        | ¦  «        ¦  «        fht          ¦   «         dfk    sJ ‚t          t          d	¬
¦  «        t          |                     t          j        | ¦  «        ¦  «        fht          ¦   «         dfk    sJ ‚t          t          dd	¬¦  «        t          |                     t          j        d¦  «        ¦  «        fht          ¦   «         dfk    sJ ‚d S )Nr³   z.      parameter (Catalan = %sd0)
      Catalanz4      parameter (EulerGamma = %sd0)
      EulerGammaz"      parameter (E = %sd0)
      Ez6      parameter (GoldenRatio = %sd0)
      GoldenRatioz$      parameter (pi = %sd0)
      pié   )Ú	precisionFrI   z      Catalanz      EulerGammaz      Ez      GoldenRatioz      pi)rº   rJ   )
r=   r<   r	   r´   r
   r   r   r   rc   Úset)ÚprecrR   s     r\   Útest_fcode_NumberSymbolr½       s0  € Ø€DÝ‰Œ€AÝ•‰>Œ>ÐNÕQXÔQ^Ð_cÑQdÔQdÑdÒdÐdÐdÐdÝ•ÑÔÐ WÕZdÔZjÐkoÑZpÔZpÑ pÒpÐpÐpÐpÝ•‰8Œ8Ð<½q¼wÀt¹}¼}ÑLÒLÐLÐLÐLÝ•ÑÔÐ!ZÕ]hÔ]nÐosÑ]tÔ]tÑ!tÒtÐtÐtÐtÝ•‰9Œ9Ð?Å"Ä(È4Á.Ä.ÑPÒPÐPÐPÐPÝÝ
�aðñ ô ØCÅbÄhÈqÁkÄkÑQòRð Rð Rð Rå• Ð&Ñ&Ô&Ý	�!—(’(�7œ=¨Ñ.Ô.Ñ/Ô/Ð0ð,2Ý36±5´5¸/ð+Kò Kð Kð Kð Kå• 5Ð)Ñ)Ô)µ
¸A¿HºHÝÔ˜ÑÔñ= ô = ð 0!ð /"Ý#&¡5¤5Ð*<ð.>ò >ð >ð >ð >å•˜%Ð Ñ Ô Ý
ˆQ�XŠX•a”g˜d‘m”mÑ$Ô$Ð	%Ð&­©¬¨yð%:ò :ð :ð :ð :å• EÐ*Ñ*Ô*µ¸a¿hºhÝÔ˜$ÑÔñ?!ô ?!ð 1"ð 0#Ý$'¡E¤EÐ+>ð/@ò @ð @ð @ð @å•˜5Ð!Ñ!Ô!Ý
ˆa�hŠh•r”x ‘~”~Ñ&Ô&Ð	'Ð(­#©%¬%°ð&=ò =ð =ð =ð =å•˜q¨Ð.Ñ.Ô.Ý
ˆa�hŠh•r”x ‘{”{Ñ#Ô#Ð	$Ð%¥s¡u¤u¨jð3:ò :ð :ð :ð :ð :ð :r^   c                  óT  — t          t          ¦  «        dk    sJ ‚t          d¦  «        } t          dt          z  ¦  «        dk    sJ ‚t          ddt          z  z   ¦  «        dk    sJ ‚t          ddt          z  z   | z   ¦  «        dk    sJ ‚t          t          | z  ¦  «        dk    sJ ‚t          ddt          z  z   | z
  ¦  «        d	k    sJ ‚t          dd
¬¦  «        } t          d| z  ¦  «        dk    sJ ‚t          t          | z  ¦  «        dk    sJ ‚t          d| z   ¦  «        dk    sJ ‚d S )Nz      cmplx(0,1)rW   é   z      cmplx(0,4)r}   z      cmplx(3,4)z      cmplx(3,4) + xz      cmplx(0,1)*xz      cmplx(3,4) - xT)Ú	imaginaryr¹   z	      5*xz      x + 3)r<   r   r   rv   s    r\   Útest_fcode_complexrÁ   ¸   s3  € Ý•‰8Œ8Ð)Ò)Ð)Ð)Ð)Ý�‰Œ€AÝ�•1‘‰:Œ:Ð+Ò+Ð+Ð+Ð+Ý��Q•q‘S‘‰>Œ>Ð/Ò/Ð/Ð/Ð/Ý��Q•q‘S‘˜1‘ÑÔÐ!7Ò7Ð7Ð7Ð7Ý•�1‘‰:Œ:Ð-Ò-Ð-Ð-Ð-Ý��Q•q‘S‘˜1‘ÑÔÐ!7Ò7Ð7Ð7Ð7Ý�˜tÐ$Ñ$Ô$€AÝ��1‘‰:Œ:˜Ò$Ð$Ð$Ð$Ý•�1‘‰:Œ:Ð-Ò-Ð-Ð-Ð-Ý��Q‘‰<Œ<˜=Ò(Ð(Ð(Ð(Ð(Ð(r^   c                  óø   — t          d¦  «        \  } }t          t          | ¦  «        ¦  «        dk    sJ ‚t          t          | |¦  «        ¦  «        dk    sJ ‚t          t	          | ¦  «        ¦  «        dk    sJ ‚d S )Nr{   z      sin(x)z      atan2(x, y)z      conjg(x))r   r<   r   r   r   r“   s     r\   Útest_implicitrÃ   Æ   sv   € Ý�5‰>Œ>�D€A€qÝ•�Q‘”‰=Œ=˜NÒ*Ð*Ð*Ð*Ý•�q˜!‘”ÑÔÐ!4Ò4Ð4Ð4Ð4Ý•˜1‘”ÑÔÐ"2Ò2Ð2Ð2Ð2Ð2Ð2r^   c                  ó¾  — t          d¦  «        } t          d¦  «        }t          t          ¦  «        5  t	          t          | ¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t          t          | ¦  «        ¦  «        d¬¦  «        dk    sJ ‚t          t          ¦  «        5  t	           || ¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrW   ÚgF)ÚstrictzHC     Not supported in Fortran:
C     Integral
      Integral(sin(x), x))r   r   rC   rx   r<   r    r!   r   )rW   rÅ   s     r\   Útest_not_fortranrÇ   Í   sO  € Ý�‰Œ€AÝ�‰Œ€AÝ	Õ#Ñ	$Ô	$ð ð Ý�e�A‰hŒh‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å•�#˜a™&œ&Ñ!Ô!¨%Ð0Ñ0Ô0ð  5Aò  Að  Að  Að  AÝ	Õ#Ñ	$Ô	$ð ð Ýˆaˆa�‰dŒd‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s#   ³AÁA Á#A Â,CÃCÃCc                  óª  — t          d¦  «        } t          t          | ¦  «        ddi¬¦  «        dk    sJ ‚t          d¦  «        } t          t          | ¦  «        ddi¬¦  «        dk    sJ ‚t	          d	¦  «        }t           || ¦  «        d	d
i¬¦  «        dk    sJ ‚t          dd¬¦  «        }t          t          |¦  «        ddi¬¦  «        dk    sJ ‚d S )NrW   r   ÚzsinrN   z      zsin(x)r    Úmygammaz      mygamma(x)rÅ   Úgreatz      great(x)r|   Tro   r   Úfctz      fct(n))r   r<   r   r    r   r   )rW   rÅ   r|   s      r\   Útest_user_functionsrÍ   ×   s  € Ý�‰Œ€AÝ•�Q‘”¨°¨Ð8Ñ8Ô8¸OÒKÐKÐKÐKÝ�‰Œ€AÝÝˆa‰Œ '¨9Ð!5ð7ñ 7ô 7Ø:LòMð Mð Mð Må�‰Œ€AÝ���1‘” s¨G nÐ5Ñ5Ô5Ð9IÒIÐIÐIÐIÝ�˜TÐ"Ñ"Ô"€AÝÝ�!‰Œ k°5Ð%9ð;ñ ;ô ;Ø>LòMð Mð Mð Mð Mð Mr^   c            	      ób  — t          d¦  «        } t          dt          | d| z  ¦  «        ¦  «        }t           || ¦  «        ¦  «        dk    sJ ‚t          dt          | dt          z  | z  ¦  «        ¦  «        }t           || ¦  «        ¦  «        dt	          j        d¦  «        z  k    sJ ‚t          d¦  «        }t          dt          d	d
¬¦  «        ¦  «        }t          dt          | | d| z   z  d| z   z  ¦  «        ¦  «        }t           |||         ¦  «        ||         ¬¦  «        dk    sJ ‚d S )NrW   rÅ   rK   z	      2*xz(      parameter (pi = %sd0)
      2*pi/xr³   r¦   r§   r|   Tro   r~   r¡   zI      do i = 1, n
         A(i) = (A(i) + 1)*(A(i) + 2)*A(i)
      end do)r   rB   r   r<   r   r´   r>   r?   )rW   rÅ   r¦   r§   s       r\   Útest_inline_functionrÏ   ä   s:  € Ý�‰Œ€AÝ˜S¥&¨¨A¨a©C¡.¤.Ñ1Ô1€AÝ���1‘”‰;Œ;˜+Ò%Ð%Ð%Ð%Ý˜S¥&¨¨A­b©D°©FÑ"3Ô"3Ñ4Ô4€AÝ���1‘”‰;Œ;ð	å
Œ�‰Œñò ð ð ð õ 	�CÑÔ€AÝˆC•˜ dÐ+Ñ+Ô+Ñ,Ô,€AÝ˜S¥&¨¨A¨q°1©u©I°q¸1±uÑ,=Ñ">Ô">Ñ?Ô?€AÝ���1�Q”4‘” A a¤DÐ)Ñ)Ô)ð	òð ð ð ð ð r^   c                  ól   — t          d¦  «        } t          t          | ¦  «        d¬¦  «        dk    sJ ‚d S )NrW   Úsr¡   z      s = sin(x))r   r<   r   rv   s    r\   Útest_assign_torÒ   ÷   s8   € Ý�‰Œ€AÝ•�Q‘” 3Ð'Ñ'Ô'Ð+=Ò=Ð=Ð=Ð=Ð=Ð=r^   c                  óø   ‡— t          d¦  «        \  Š} t          ‰| z   dz                       ¦   «         d¬¦  «        dk    sJ ‚ˆfd„t          d¦  «        D ¦   «         }t          t	          |Ž ¦  «        dk    sJ ‚d S )	Nr{   r   Úvarr¡   z¯      var = x**10 + 10*x**9*y + 45*x**8*y**2 + 120*x**7*y**3 + 210*x**6*
     @ y**4 + 252*x**5*y**5 + 210*x**4*y**6 + 120*x**3*y**7 + 45*x**2*y
     @ **8 + 10*x*y**9 + y**10c                 ó   •— g | ]}‰|z  ‘ŒS rk   rk   )Ú.0r§   rW   s     €r\   ú
<listcomp>z&test_line_wrapping.<locals>.<listcomp>  s   ø€ Ð!Ð!Ð!�!ˆˆA‰Ð!Ð!Ð!r^   é   zR      x**10 + x**9 + x**8 + x**7 + x**6 + x**5 + x**4 + x**3 + x**2 + x
     @ + 1)r   r<   ÚexpandÚranger   )rX   ÚerW   s     @r\   Útest_line_wrappingrÜ   ü   s    ø€ Ý�5‰>Œ>�D€A€qÝ�1�q‘5˜2‘+×%Ò%Ñ'Ô'°5Ð9Ñ9Ô9ð	)òð ð ð ð
 	"Ð!Ð!Ð!•u˜R‘y”yÐ!Ñ!Ô!€AÝ•�a�‰>Œ>ð	òð ð ð ð ð r^   c                  ó®  — t          d¦  «        \  } }t          t          | |k     || dz   k     ¦  «        d¬¦  «        dk    sJ ‚t          t          | |k     || dz   k     ¦  «        d¬¦  «        dk    sJ ‚t          t	          | |k     || dz   k     d¬¦  «        d¬¦  «        d	k    sJ ‚t          t          | |k     || dz   k     ¦  «        d¬¦  «        d
k    sJ ‚d S )Núx yr~   rE   rF   zx < y .and. y < x + 1zx < y .or. y < x + 1F©Úevaluatezx < y .neqv. y < x + 1zx < y .eqv. y < x + 1)r   r<   r5   r6   r9   r8   r“   s     r\   Útest_fcode_precedencerá   
  s  € Ý�5‰>Œ>�D€A€qÝ•�Q˜’U˜A  A¡šIÑ&Ô&°fÐ=Ñ=Ô=Øò ð  ð  ð  å•�A˜’E˜1˜q 1™uš9Ñ%Ô%°VÐ<Ñ<Ô<Øòð ð ð å•�Q˜’U˜A  A¡šI°Ð6Ñ6Ô6Øðñ ô Ø!9ò:ð :ð :ð :å•˜A šE 1 q¨1¡u¢9Ñ-Ô-¸VÐDÑDÔDØò ð  ð  ð  ð  ð  r^   c            	      ó˜
  — t          d¦  «        \  } }}t          t          | ¦  «        d¬¦  «        dk    sJ ‚t          t          | |¦  «        d¬¦  «        dk    sJ ‚t          t          | t          |¦  «        ¦  «        d¬¦  «        dk    sJ ‚t          t          t          | ¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t          t          | ¦  «        t          |¦  «        ¦  «        d¬¦  «        dk    sJ ‚t          t          t          | |¦  «        d	¬
¦  «        d¬¦  «        dk    sJ ‚t          t	          | |¦  «        d¬¦  «        dk    sJ ‚t          t	          | t          |¦  «        ¦  «        d¬¦  «        dk    sJ ‚t          t	          t          | ¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t	          t          | ¦  «        t          |¦  «        ¦  «        d¬¦  «        dk    sJ ‚t          t          t	          | |¦  «        d	¬
¦  «        d¬¦  «        dk    sJ ‚t          t          t	          ||¦  «        | ¦  «        d¬¦  «        dk    sJ ‚t          t          t	          || ¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t          t	          | |¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t	          t          ||¦  «        | ¦  «        d¬¦  «        dk    sJ ‚t          t	          t          || ¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t	          t          | |¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t          | ||¦  «        d¬¦  «        dk    sJ ‚t          t          | |t          |¦  «        ¦  «        d¬¦  «        dk    sJ ‚t          t          | t          |¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t          t          | ¦  «        ||¦  «        d¬¦  «        dk    sJ ‚t          t          t          | ||¦  «        d	¬
¦  «        d¬¦  «        dk    sJ ‚t          t	          | ||¦  «        d¬¦  «        dk    sJ ‚t          t	          | |t          |¦  «        ¦  «        d¬¦  «        dk    sJ ‚t          t	          | t          |¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t	          t          | ¦  «        ||¦  «        d¬¦  «        dk    sJ ‚t          t          t	          | ||¦  «        d	¬
¦  «        d¬¦  «        d k    sJ ‚d S )!NrH   rE   rF   z.not. xz	x .and. yzx .and. .not. yzy .and. .not. xz.not. x .and. .not. yFrß   z.not. (x .and. y)zx .or. yzx .or. .not. yzy .or. .not. xz.not. x .or. .not. yz.not. (x .or. y)zx .and. (y .or. z)zy .and. (x .or. z)zz .and. (x .or. y)zx .or. y .and. zzy .or. x .and. zzz .or. x .and. yzx .and. y .and. zzx .and. y .and. .not. zzx .and. z .and. .not. yzy .and. z .and. .not. xz.not. (x .and. y .and. z)zx .or. y .or. zzx .or. y .or. .not. zzx .or. z .or. .not. yzy .or. z .or. .not. xz.not. (x .or. y .or. z))r   r<   r7   r5   r6   ©rW   rX   rY   s      r\   Útest_fcode_Logicalrä     s…  € Ý�gÑÔ�G€A€qˆ!å•�Q‘” vÐ.Ñ.Ô.°)Ò;Ð;Ð;Ð;å•�Q˜‘”¨&Ð1Ñ1Ô1°[Ò@Ð@Ð@Ð@Ý•�Q�˜A™œ‘”¨vÐ6Ñ6Ô6Ð:KÒKÐKÐKÐKÝ••S˜‘V”V˜Q‘”¨vÐ6Ñ6Ô6Ð:KÒKÐKÐKÐKÝ••S˜‘V”V�S ™VœVÑ$Ô$°FÐ;Ñ;Ô;Øò ð  ð  ð  å••S˜˜A‘Y”Y¨Ð/Ñ/Ô/¸vÐFÑFÔFØòð ð ð õ •�A�q‘”¨Ð0Ñ0Ô0°JÒ>Ð>Ð>Ð>Ý•�A•s˜1‘v”v‘”¨fÐ5Ñ5Ô5Ð9IÒIÐIÐIÐIÝ••C˜‘F”F˜A‘”¨fÐ5Ñ5Ô5Ð9IÒIÐIÐIÐIÝ••C˜‘F”F�C ™FœFÑ#Ô#°6Ð:Ñ:Ô:Øòð ð ð å••R˜˜1‘X”X¨Ð.Ñ.Ô.¸fÐEÑEÔEØòð ð ð õ ••R˜˜1‘X”X˜qÑ!Ô!°Ð8Ñ8Ô8Ð<PÒPÐPÐPÐPÝ••R˜˜1‘X”X˜qÑ!Ô!°Ð8Ñ8Ô8Ð<PÒPÐPÐPÐPÝ••R˜˜1‘X”X˜qÑ!Ô!°Ð8Ñ8Ô8Ð<PÒPÐPÐPÐPÝ••C˜˜1‘I”I˜qÑ!Ô!°Ð8Ñ8Ô8Ð<NÒNÐNÐNÐNÝ••C˜˜1‘I”I˜qÑ!Ô!°Ð8Ñ8Ô8Ð<NÒNÐNÐNÐNÝ••C˜˜1‘I”I˜qÑ!Ô!°Ð8Ñ8Ô8Ð<NÒNÐNÐNÐNå•�Q˜˜1‘”¨VÐ4Ñ4Ô4Ð8KÒKÐKÐKÐKÝ•�Q˜�3˜q™6œ6Ñ"Ô"°&Ð9Ñ9Ô9Ø!ò"ð "ð "ð "å•�Q�˜A™œ Ñ"Ô"°&Ð9Ñ9Ô9Ø!ò"ð "ð "ð "å••S˜‘V”V˜Q Ñ"Ô"°&Ð9Ñ9Ô9Ø!ò"ð "ð "ð "å••S˜˜A˜q‘\”\¨EÐ2Ñ2Ô2À&ÐIÑIÔIØ#ò$ð $ð $ð $õ •�A�q˜!‘”¨FÐ3Ñ3Ô3Ð7HÒHÐHÐHÐHÝ•�A�q�#˜a™&œ&Ñ!Ô!°Ð8Ñ8Ô8Øò ð  ð  ð  å•�A•s˜1‘v”v˜qÑ!Ô!°Ð8Ñ8Ô8Øò ð  ð  ð  å••C˜‘F”F˜A˜qÑ!Ô!°Ð8Ñ8Ô8Øò ð  ð  ð  å••R˜˜1˜a‘[”[¨5Ð1Ñ1Ô1ÀÐHÑHÔHØ!ò"ð "ð "ð "ð "ð "r^   c            	      óú  — t          d¦  «        \  } }}t          t          | |d¬¦  «        d¬¦  «        dk    sJ ‚t          t          | t          |¦  «        d¬¦  «        d¬¦  «        dk    sJ ‚t          t          t          | ¦  «        |d¬¦  «        d¬¦  «        dk    sJ ‚t          t          t          | ¦  «        t          |¦  «        d¬¦  «        d¬¦  «        d	k    sJ ‚t          t          t          | |d¬¦  «        d¬¦  «        d¬¦  «        d
k    sJ ‚t          t	          | |¦  «        d¬¦  «        dk    sJ ‚t          t	          | t          |¦  «        ¦  «        d¬¦  «        dk    sJ ‚t          t	          t          | ¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t	          t          | ¦  «        t          |¦  «        ¦  «        d¬¦  «        dk    sJ ‚t          t          t	          | |¦  «        d¬¦  «        d¬¦  «        dk    sJ ‚t          t	          t          ||¦  «        | ¦  «        d¬¦  «        dk    sJ ‚t          t	          t          || ¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t	          t          | |¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t          t	          ||¦  «        | ¦  «        d¬¦  «        dk    sJ ‚t          t          t	          || ¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t          t	          | |¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t	          t          ||¦  «        | ¦  «        d¬¦  «        dk    sJ ‚t          t	          t          || ¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t	          t          | |¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t          t	          ||¦  «        | ¦  «        d¬¦  «        dk    sJ ‚t          t          t	          || ¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t          t	          | |¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t	          t          ||d¬¦  «        | ¦  «        d¬¦  «        dk    sJ ‚t          t	          t          || d¬¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t	          t          | |d¬¦  «        |¦  «        d¬¦  «        dk    sJ ‚t          t          t	          ||¦  «        | d¬¦  «        d¬¦  «        dk    sJ ‚t          t          t	          || ¦  «        |d¬¦  «        d¬¦  «        d k    sJ ‚t          t          t	          | |¦  «        |d¬¦  «        d¬¦  «        d!k    sJ ‚t          t          t          ||¦  «        | d¬¦  «        d¬¦  «        d"k    sJ ‚t          t          t          || ¦  «        |d¬¦  «        d¬¦  «        d#k    sJ ‚t          t          t          | |¦  «        |d¬¦  «        d¬¦  «        d$k    sJ ‚t          t          t          ||d¬¦  «        | ¦  «        d¬¦  «        d%k    sJ ‚t          t          t          || d¬¦  «        |¦  «        d¬¦  «        d&k    sJ ‚t          t          t          | |d¬¦  «        |¦  «        d¬¦  «        d'k    sJ ‚t          t          t          ||¦  «        | d¬¦  «        d¬¦  «        d(k    sJ ‚t          t          t          || ¦  «        |d¬¦  «        d¬¦  «        d)k    sJ ‚t          t          t          | |¦  «        |d¬¦  «        d¬¦  «        d*k    sJ ‚t          t          t          ||d¬¦  «        | ¦  «        d¬¦  «        d+k    sJ ‚t          t          t          || d¬¦  «        |¦  «        d¬¦  «        d,k    sJ ‚t          t          t          | |d¬¦  «        |¦  «        d¬¦  «        d-k    sJ ‚t          t          | ||d¬¦  «        d¬¦  «        d.k    sJ ‚t          t          | |t          |¦  «        d¬¦  «        d¬¦  «        d/k    sJ ‚t          t          | t          |¦  «        |d¬¦  «        d¬¦  «        d0k    sJ ‚t          t          t          | ¦  «        ||d¬¦  «        d¬¦  «        d1k    sJ ‚d S )2NrH   Frß   rE   rF   z
x .neqv. yzx .neqv. .not. yzy .neqv. .not. xz.not. x .neqv. .not. yz.not. (x .neqv. y)z	x .eqv. yzx .eqv. .not. yzy .eqv. .not. xz.not. x .eqv. .not. yz.not. (x .eqv. y)zx .eqv. y .and. zzy .eqv. x .and. zzz .eqv. x .and. yzx .and. (y .eqv. z)zy .and. (x .eqv. z)zz .and. (x .eqv. y)zx .eqv. y .or. zzy .eqv. x .or. zzz .eqv. x .or. yzx .or. (y .eqv. z)zy .or. (x .eqv. z)zz .or. (x .eqv. y)zx .eqv. (y .neqv. z)zy .eqv. (x .neqv. z)zz .eqv. (x .neqv. y)zx .neqv. (y .eqv. z)zy .neqv. (x .eqv. z)zz .neqv. (x .eqv. y)zx .neqv. y .and. zzy .neqv. x .and. zzz .neqv. x .and. yzx .and. (y .neqv. z)zy .and. (x .neqv. z)zz .and. (x .neqv. y)zx .neqv. y .or. zzy .neqv. x .or. zzz .neqv. x .or. yzx .or. (y .neqv. z)zy .or. (x .neqv. z)zz .or. (x .neqv. y)zx .neqv. y .neqv. zzx .neqv. y .neqv. .not. zzx .neqv. z .neqv. .not. yzy .neqv. z .neqv. .not. x)r   r<   r9   r7   r8   r5   r6   rã   s      r\   Útest_fcode_Xlogicalræ   G  sÎ
  € Ý�gÑÔ�G€A€qˆ!å•�Q˜ EÐ*Ñ*Ô*¸&ÐAÑAÔAØòð ð ð å•�Q�˜A™œ¨Ð/Ñ/Ô/¸vÐFÑFÔFØòð ð ð å••S˜‘V”V˜Q¨Ð/Ñ/Ô/¸vÐFÑFÔFØòð ð ð å••S˜‘V”V�S ™VœV¨eÐ4Ñ4Ô4Øðñ ô Ø!9ò:ð :ð :ð :å••S˜˜A¨Ð.Ñ.Ô.¸Ð?Ñ?Ô?Øðñ ô Ø!5ò6ð 6ð 6ð 6õ •˜A˜qÑ!Ô!°Ð8Ñ8Ô8¸KÒGÐGÐGÐGÝ•˜A�s 1™vœvÑ&Ô&°fÐ=Ñ=Ô=Øòð ð ð å•�C ™FœF AÑ&Ô&°fÐ=Ñ=Ô=Øòð ð ð å•�C ™FœF¥C¨¡F¤FÑ+Ô+¸6ÐBÑBÔBØò ð  ð  ð  å••Z  1Ñ%Ô%°Ð6Ñ6Ô6Øðñ ô Ø!4ò5ð 5ð 5ð 5õ •�C  1™IœI qÑ)Ô)¸Ð@Ñ@Ô@Øòð ð ð å•�C  1™IœI qÑ)Ô)¸Ð@Ñ@Ô@Øòð ð ð å•�C  1™IœI qÑ)Ô)¸Ð@Ñ@Ô@Øòð ð ð å••Z  1Ñ%Ô% qÑ)Ô)¸Ð@Ñ@Ô@Øòð ð ð å••Z  1Ñ%Ô% qÑ)Ô)¸Ð@Ñ@Ô@Øòð ð ð å••Z  1Ñ%Ô% qÑ)Ô)¸Ð@Ñ@Ô@Øòð ð ð õ •�B˜q !™HœH aÑ(Ô(¸Ð?Ñ?Ô?Øòð ð ð å•�B˜q !™HœH aÑ(Ô(¸Ð?Ñ?Ô?Øòð ð ð å•�B˜q !™HœH aÑ(Ô(¸Ð?Ñ?Ô?Øòð ð ð å••J˜q !Ñ$Ô$ aÑ(Ô(¸Ð?Ñ?Ô?Øòð ð ð å••J˜q !Ñ$Ô$ aÑ(Ô(¸Ð?Ñ?Ô?Øòð ð ð å••J˜q !Ñ$Ô$ aÑ(Ô(¸Ð?Ñ?Ô?Øòð ð ð õ •�C  1¨uÐ5Ñ5Ô5°qÑ9Ô9Øðñ ô Ø!7ò8ð 8ð 8ð 8å•�C  1¨uÐ5Ñ5Ô5°qÑ9Ô9Øðñ ô Ø!7ò8ð 8ð 8ð 8å•�C  1¨uÐ5Ñ5Ô5°qÑ9Ô9Øðñ ô Ø!7ò8ð 8ð 8ð 8å••Z  1Ñ%Ô% q°5Ð9Ñ9Ô9Øðñ ô Ø!7ò8ð 8ð 8ð 8å••Z  1Ñ%Ô% q°5Ð9Ñ9Ô9Øðñ ô Ø!7ò8ð 8ð 8ð 8å••Z  1Ñ%Ô% q°5Ð9Ñ9Ô9Øðñ ô Ø!7ò8ð 8ð 8ð 8õ ••S˜˜A‘Y”Y ¨EÐ2Ñ2Ô2À&ÐIÑIÔIØòð ð ð å••S˜˜A‘Y”Y ¨EÐ2Ñ2Ô2À&ÐIÑIÔIØòð ð ð å••S˜˜A‘Y”Y ¨EÐ2Ñ2Ô2À&ÐIÑIÔIØòð ð ð å••S˜˜A¨Ð.Ñ.Ô.°Ñ2Ô2À&ÐIÑIÔIØòð ð ð å••S˜˜A¨Ð.Ñ.Ô.°Ñ2Ô2À&ÐIÑIÔIØòð ð ð å••S˜˜A¨Ð.Ñ.Ô.°Ñ2Ô2À&ÐIÑIÔIØòð ð ð õ ••R˜˜1‘X”X˜q¨5Ð1Ñ1Ô1ÀÐHÑHÔHØòð ð ð å••R˜˜1‘X”X˜q¨5Ð1Ñ1Ô1ÀÐHÑHÔHØòð ð ð å••R˜˜1‘X”X˜q¨5Ð1Ñ1Ô1ÀÐHÑHÔHØòð ð ð å••C˜˜1 uÐ-Ñ-Ô-¨qÑ1Ô1ÀÐHÑHÔHØòð ð ð å••C˜˜1 uÐ-Ñ-Ô-¨qÑ1Ô1ÀÐHÑHÔHØòð ð ð å••C˜˜1 uÐ-Ñ-Ô-¨qÑ1Ô1ÀÐHÑHÔHØòð ð ð õ •�Q˜˜1 uÐ-Ñ-Ô-¸VÐDÑDÔDØòð ð ð å•�Q˜�3˜q™6œ6¨EÐ2Ñ2Ô2À&ÐIÑIÔIØ#ò$ð $ð $ð $å•�Q�˜A™œ ¨EÐ2Ñ2Ô2À&ÐIÑIÔIØ#ò$ð $ð $ð $å••S˜‘V”V˜Q ¨EÐ2Ñ2Ô2À&ÐIÑIÔIØ#ò$ð $ð $ð $ð $ð $r^   c                  óò  — t          d¦  «        \  } }t          t          | |d¦  «        d¬¦  «        dk    sJ ‚t          t          | |d¦  «        d¬¦  «        dk    sJ ‚t          t          | |d¦  «        d¬¦  «        d	k    sJ ‚t          t          | |d
¦  «        d¬¦  «        dk    sJ ‚t          t          | |d¦  «        d¬¦  «        dk    sJ ‚t          t          | |d¦  «        d¬¦  «        dk    sJ ‚d S )NrÞ   z==rE   rF   zx == yz!=zx /= yz>=zx >= yz<=zx <= yú>zx > yú<zx < y)r   r<   r4   r“   s     r\   Útest_fcode_Relationalrê   ª  s  € Ý�5‰>Œ>�D€A€qÝ•˜A˜q $Ñ'Ô'°vÐ>Ñ>Ô>À(ÒJÐJÐJÐJÝ•˜A˜q $Ñ'Ô'°vÐ>Ñ>Ô>À(ÒJÐJÐJÐJÝ•˜A˜q $Ñ'Ô'°vÐ>Ñ>Ô>À(ÒJÐJÐJÐJÝ•˜A˜q $Ñ'Ô'°vÐ>Ñ>Ô>À(ÒJÐJÐJÐJÝ•˜A˜q #Ñ&Ô&°fÐ=Ñ=Ô=ÀÒHÐHÐHÐHÝ•˜A˜q #Ñ&Ô&°fÐ=Ñ=Ô=ÀÒHÐHÐHÐHÐHÐHr^   c            	      óV  ‡— t          d¦  «        } t          | | dk     f| dz  df¦  «        Št          t          ˆfd„¦  «         t	          ‰d¬¦  «        }d}||k    sJ ‚t	          t          | | dk     f| dz  df¦  «        d	¬
¦  «        dk    sJ ‚t          | ¦  «        | z  }t          | ¦  «        | z  }t          d¦  «        D ]"}t          || ¦  «        }t          || ¦  «        }Œ#d}t	          t          || dk     f|df¦  «        d¬
¦  «        }||k    sJ ‚t	          t          | | dk     f| dz  | dk    ft          | ¦  «        df¦  «        d¬¦  «        }d}||k    sJ ‚t          | | dk     f| dz  | dk    ft          | ¦  «        | dk    f¦  «        Št          t          ˆfd„¦  «         d S )NrW   r~   rK   Tc                  ó"   •— t          ‰ ¦  «        S ru   r–   ©rV   s   €r\   rw   z&test_fcode_Piecewise.<locals>.<lambda>¸  s   ø€ ­¨d©¬€ r^   rq   r‘   z      merge(x, x**2, x < 1)rÔ   r¡   zR      if (x < 1) then
         var = x
      else
         var = x**2
      end ifr   a/        if (x < 0) then
         weird_name = -cos(x)/x + 10*sin(x)/x**2 + 90*cos(x)/x**3 - 720*
     @ sin(x)/x**4 - 5040*cos(x)/x**5 + 30240*sin(x)/x**6 + 151200*cos(x
     @ )/x**7 - 604800*sin(x)/x**8 - 1814400*cos(x)/x**9 + 3628800*sin(x
     @ )/x**10 + 3628800*cos(x)/x**11
      else
         weird_name = -sin(x)/x - 10*cos(x)/x**2 + 90*sin(x)/x**3 + 720*
     @ cos(x)/x**4 - 5040*sin(x)/x**5 - 30240*cos(x)/x**6 + 151200*sin(x
     @ )/x**7 + 604800*cos(x)/x**8 - 1814400*sin(x)/x**9 - 3628800*cos(x
     @ )/x**10 + 3628800*sin(x)/x**11
      end ifr   Ú
weird_namez1      merge(x, merge(x**2, sin(x), x > 1), x < 1)c                  ó"   •— t          ‰ ¦  «        S ru   r–   rí   s   €r\   rw   z&test_fcode_Piecewise.<locals>.<lambda>Ü  s   ø€ �u T™{œ{€ r^   )
r   r   rC   rx   r<   r   r   rÚ   r   Ú
ValueError)rW   ÚcodeÚexpectedÚaÚbr§   rV   s         @r\   Útest_fcode_Piecewiserõ   ´  sï  ø€ Ý�‰Œ€AÝ�a˜˜Qš�Z ! Q¡$¨ Ñ.Ô.€Då
ÕÐ 3Ð 3Ð 3Ð 3Ñ4Ô4Ð4Ý� Ð#Ñ#Ô#€DØ,€HØ�8ÒÐÐÐÝ•˜A˜q 1šu˜:¨¨1©¨d |Ñ4Ô4ÀÐFÑFÔFð	òð ð ð õ 	ˆA‰Œˆq‰€AÝˆA‰Œˆq‰€AÝ�2‰YŒYð ð ˆÝ��A‰JŒJˆÝ��A‰JŒJˆˆð
	ð õ •˜A˜q 1šu˜:¨¨4 yÑ1Ô1¸\ÐJÑJÔJ€DØ�8ÒÐÐÐÝ•˜A˜q 1šu˜:¨¨1©¨a°!ªe }µs¸1±v´v¸t°nÑEÔEÐPRÐSÑSÔS€DØB€HØ�8ÒÐÐÐå�a˜˜Qš�Z ! Q¡$¨¨Aª µ°Q±´¸¸Qº°Ñ@Ô@€DÝ
�:Ð*Ð*Ð*Ð*Ñ+Ô+Ð+Ð+Ð+r^   c                  ó  — t          ¦   «         } g d¢}|                      |¦  «        }g d¢}|D ]}t          |¦  «        dk    sJ ‚Œt          ||¦  «        D ]\  }}||k    sJ ‚Œt          |¦  «        t          |¦  «        k    sJ ‚d S )N)zbC     This is a long comment on a single line that must be wrapped properly to produce nice outputzf      this = is + a + long + and + nasty + fortran + statement + that * must + be + wrapped + properlyzg      this = is + a + long + and + nasty + fortran + statement +  that * must + be + wrapped + properlyzh      this = is + a + long + and + nasty + fortran + statement +   that * must + be + wrapped + properlyzd      this = is + a + long + and + nasty + fortran + statement + that*must + be + wrapped + properlyzf      this = is + a + long + and + nasty + fortran + statement +   that*must + be + wrapped + properlyzg      this = is + a + long + and + nasty + fortran + statement +    that*must + be + wrapped + properlyzh      this = is + a + long + and + nasty + fortran + statement +     that*must + be + wrapped + properlyze      this = is + a + long + and + nasty + fortran + statement + that**must + be + wrapped + properlyzf      this = is + a + long + and + nasty + fortran + statement +  that**must + be + wrapped + properlyzg      this = is + a + long + and + nasty + fortran + statement +   that**must + be + wrapped + properlyzh      this = is + a + long + and + nasty + fortran + statement +    that**must + be + wrapped + properlyzi      this = is + a + long + and + nasty + fortran + statement +     that**must + be + wrapped + properlyzc      this = is + a + long + and + nasty + fortran + statement(that)/must + be + wrapped + properlyzg      this = is + a + long + and + nasty + fortran +     statement(that)/must + be + wrapped + properly)zBC     This is a long comment on a single line that must be wrappedz%C     properly to produce nice outputzG      this = is + a + long + and + nasty + fortran + statement + that *ú%     @ must + be + wrapped + properlyzH      this = is + a + long + and + nasty + fortran + statement +  that *r÷   úG      this = is + a + long + and + nasty + fortran + statement +   thatz'     @ * must + be + wrapped + properlyzF      this = is + a + long + and + nasty + fortran + statement + that*r÷   zH      this = is + a + long + and + nasty + fortran + statement +   that*r÷   úH      this = is + a + long + and + nasty + fortran + statement +    thatz&     @ *must + be + wrapped + properlyú@      this = is + a + long + and + nasty + fortran + statement +z*     @ that*must + be + wrapped + properlyzG      this = is + a + long + and + nasty + fortran + statement + that**r÷   zH      this = is + a + long + and + nasty + fortran + statement +  that**r÷   rø   ú'     @ **must + be + wrapped + properlyrù   rû   rú   z+     @ that**must + be + wrapped + properlyzE      this = is + a + long + and + nasty + fortran + statement(that)/r÷   zH      this = is + a + long + and + nasty + fortran +     statement(that)z&     @ /must + be + wrapped + properlyéH   )r=   Ú_wrap_fortranÚlenÚzip)rf   ÚlinesÚwrapped_linesÚexpected_linesÚlineÚwrÛ   s          r\   Útest_wrap_fortranr  ß  s¼   € å‰nŒn€Gðð ð €Eð" ×)Ò)¨%Ñ0Ô0€Mðð ð €Nð@ ð ð ˆÝ�4‰yŒy˜BŠˆˆˆˆÝ�M >Ñ2Ô2ð ð ‰ˆˆ1Ø�AŠvˆvˆvˆvˆvÝˆ}ÑÔ¥ ^Ñ!4Ô!4Ò4Ð4Ð4Ð4Ð4Ð4r^   c                  óh   — t          ¦   «         } g d¢}g d¢}|                      |¦  «        |k    sJ ‚d S )N)úH      this_variable_is_very_long_because_we_try_to_test_line_break=1.0d0zI      this_variable_is_very_long_because_we_try_to_test_line_break =1.0d0zK      this_variable_is_very_long_because_we_try_to_test_line_break  = 1.0d0zL      this_variable_is_very_long_because_we_try_to_test_line_break   = 1.0d0zM      this_variable_is_very_long_because_we_try_to_test_line_break    = 1.0d0zK      this_variable_is_very_long_because_we_try_to_test_line_break = 10.0d0)r  úD      this_variable_is_very_long_because_we_try_to_test_line_break =ú     @ 1.0d0zE      this_variable_is_very_long_because_we_try_to_test_line_break  =r	  zF      this_variable_is_very_long_because_we_try_to_test_line_break   =r	  zG      this_variable_is_very_long_because_we_try_to_test_line_break    =r	  r  z     @ 10.0d0©r=   rý   ©rf   r   rò   s      r\   Útest_wrap_fortran_keep_d0r    sT   € Ý‰nŒn€Gðð ð €Eðð ð €Hð × Ò  Ñ'Ô'¨8Ò3Ð3Ð3Ð3Ð3Ð3r^   c                  ó2   — t          t          d„ ¦  «         d S )Nc                  ó>   — t          t          d¦  «        d¬¦  «        S )Nr¿   Úgarbage)Úmethod)r<   r   rk   r^   r\   rw   ztest_settings.<locals>.<lambda>6  s   € �e¥A a¡D¤D°Ð;Ñ;Ô;€ r^   )rC   Ú	TypeErrorrk   r^   r\   Útest_settingsr  5  s   € Ý
�9Ð;Ð;Ñ<Ô<Ð<Ð<Ð<r^   c                  ó’   — t          d¦  «        \  } }t          t          | ¦  «        t          |¦  «        z   d¬¦  «        dk    sJ ‚d S )Nr{   rE   rF   zsin(y) + cos(x))r   r<   r   r   r“   s     r\   Útest_free_form_code_liner  9  sF   € Ý�5‰>Œ>�D€A€qÝ•�Q‘”�#˜a™&œ&‘°Ð7Ñ7Ô7Ð;LÒLÐLÐLÐLÐLÐLr^   c                  óÄ   — t          d¦  «        \  } }t          t          | ¦  «        t          |¦  «        z   dz                       ¦   «         d¬¦  «        }d}||k    sJ ‚d S )Nr{   r€   rE   rF   zµsin(y)**7 + 7*sin(y)**6*cos(x) + 21*sin(y)**5*cos(x)**2 + 35*sin(y)**4* &
      cos(x)**3 + 35*sin(y)**3*cos(x)**4 + 21*sin(y)**2*cos(x)**5 + 7* &
      sin(y)*cos(x)**6 + cos(x)**7)r   r<   r   r   rÙ   )rW   rX   Úresultrò   s       r\   Ú test_free_form_continuation_liner  >  sg   € Ý�5‰>Œ>�D€A€qÝ•S˜‘V”V�c !™fœf‘_¨Ñ*×2Ò2Ñ4Ô4ÀFÐKÑKÔK€Fð	-ð ð
 �XÒÐÐÐÐÐr^   c                  ól   — t          ddi¦  «        } dg}ddg}|                      |¦  «        |k    sJ ‚d S )NrG   rE   z^! This is a long comment on a single line that must be wrapped properly to produce nice outputzG! This is a long comment on a single line that must be wrapped properlyz! to produce nice outputr
  r  s      r\   Útest_free_form_comment_liner  I  sP   € Ý˜O¨VÐ4Ñ5Ô5€GØnÐo€EàQØ"ð$€Hð × Ò  Ñ'Ô'¨8Ò3Ð3Ð3Ð3Ð3Ð3r^   c                  ó†  — t          dd¬¦  «        \  } }t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d|¦  «        }t          d| ¦  «        }d	}t          |||f         ||         z  ||         d
¬¦  «        }||ddiz  k    s#||ddiz  k    s||ddiz  k    s||ddiz  k    sJ ‚d S d S d S d S )Nr¥   Tro   r¦   rW   rX   r§   Újz_do i = 1, m
   y(i) = 0
end do
do i = 1, m
   do j = 1, n
      y(i) = %(rhs)s
   end do
end dorE   r¨   Úrhszy(i) + A(i, j)*x(j)zy(i) + x(j)*A(i, j)zx(j)*A(i, j) + y(i)zA(i, j)*x(j) + y(i))r   r>   r?   r<   )	r|   r°   r¦   rW   rX   r§   r  rò   rñ   s	            r\   Ú
test_loopsr  R  s  € Ý�5 $Ð'Ñ'Ô'�D€A€qÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝˆC�‰Œ€AÝˆC�‰Œ€Að	ð õ ��1�a�4”˜˜1œ‘¨¨1¬¸VÐDÑDÔD€DØ�H Ð'<Ð=Ñ=Ò=Ð=Ø�H Ð'<Ð=Ñ=Ò=Ð=Ø�H Ð'<Ð=Ñ=Ò=Ð=Ø�H Ð'<Ð=Ñ=Ò=Ð=Ð=ð>Ð=Ð=Ø=Ð=Ø=Ð=Ø=Ð=r^   c                  ó  — t          ddt          ¬¦  «        \  } }t          d¦  «        }t          d¦  «        }t          | |¦  «        } d| j        j        |j        dœz  }t          ||          ||          d¬	¦  «        }||k    sJ ‚d S )
Nzi mT)r0   ÚclsrW   rX   zMdo i_%(icount)i = 1, m_%(mcount)i
   y(i_%(icount)i) = x(i_%(icount)i)
end do)ÚicountÚmcountrE   r¨   )r   r   r>   r?   ÚlabelÚdummy_indexr<   )r§   r°   rW   rX   rò   rñ   s         r\   Útest_dummy_loopsr$  l  s—   € Ý�5 $­EÐ2Ñ2Ô2�D€A€qÝ�CÑÔ€AÝ�CÑÔ€AÝˆAˆq‰	Œ	€Að	ð ”7Ô&°!´-Ð@Ð@ñ	A€Hõ
 ��1”  1¤°VÐ<Ñ<Ô<€DØ�8ÒÐÐÐÐÐr^   c                  ó‚  — d} t          d| f¬¦  «        }t          d| f¬¦  «        }t          d| dz
  f¬¦  «        }t          d| dz
  ¦  «        }t          ||         ||dz            ||         z
  ||dz            ||         z
  z  ¦  «        }t          |j        |j        d¬	¦  «        }|                     d
¦  «        sJ ‚d S )Nr¹   rX   ©ÚshaperW   ÚDyr~   r§   F)r¢   Úcontractú+Dy(i) = (y(i + 1) - y(i))/(x(i + 1) - x(i)))r>   r?   r   r<   r  ÚlhsÚendswith)Úlen_yrX   rW   r(  r§   rÛ   Úcode0s          r\   Ú2test_fcode_Indexed_without_looking_for_contractionr/  {  sÉ   € Ø€EÝ�C ˜xÐ(Ñ(Ô(€AÝ�C ˜xÐ(Ñ(Ô(€AÝ	�T %¨¡' Ð	,Ñ	,Ô	,€BÝˆC��q‘ÑÔ€AÝˆˆAŒ��1�Q‘3”˜˜!œ‘˜q  1¡œv a¨¤d™{Ñ+Ñ,Ô,€AÝ�!”% 1¤5°5Ð9Ñ9Ô9€EØ�>Š>ÐGÑHÔHÐHÐHÐHÐHÐHr^   c                  ó4  ‡— d} t          d| f¬¦  «        }t          d| f¬¦  «        }t          d| dz
  f¬¦  «        }t          d| dz
  ¦  «        }t          ||         ||dz            ||         z
  ||dz            ||         z
  z  ¦  «        }t          t	          |j        |j        ¦  «        ¦  «        }|                     d¦  «        sJ ‚ G d	„ d
t          t          ¦  «        Š| 
                    ˆfd„|                     t          ¦  «        D ¦   «         ¦  «        }t          ||         ||dz            ||         z
  ||dz            ||         z
  z  ¦  «        }t          t	          |j        |j        ¦  «        ¦  «        }|                     d¦  «        sJ ‚d S )Nr¹   rX   r&  rW   r(  r~   r§   r*  c                   ó   — e Zd ZdS )ú.test_element_like_objects.<locals>.ElementExprN)rh   ri   rj   rk   r^   r\   ÚElementExprr2  �  s   € € € € € Øˆr^   r3  c              3   óH   •K  — | ]}| ‰|j         |j        ¦  «        fV — Œd S ru   )ÚnameÚindices)rÖ   ró   r3  s     €r\   ú	<genexpr>z,test_element_like_objects.<locals>.<genexpr>“  s8   øè è € ÐTÐT°q��;�;˜qœv q¤yÑ1Ô1Ð2ÐTÐTÐTÐTÐTÐTr^   )r@   r?   r   r<   r$   r+  r  r,  r2   r   ÚsubsÚatomsrA   )r-  rX   rW   r(  r§   rÛ   r.  r3  s          @r\   Útest_element_like_objectsr:  †  s™  ø€ Ø€EÝ�C ˜xÐ(Ñ(Ô(€AÝ�C ˜xÐ(Ñ(Ô(€AÝ	�T %¨¡' Ð	,Ñ	,Ô	,€BÝˆC��q‘ÑÔ€AÝˆˆAŒ��1�Q‘3”˜˜!œ‘˜q  1¡œv a¨¤d™{Ñ+Ñ,Ô,€AÝ•*˜QœU A¤EÑ*Ô*Ñ+Ô+€EØ�>Š>ÐGÑHÔHÐHÐHÐHðð ð ð ð •g�tñ ô ð ð 	
�ŠÐTÐTÐTÐT¸A¿GºGÅLÑ<QÔ<QÐTÑTÔTÑTÔT€AÝˆˆAŒ��1�Q‘3”˜˜!œ‘˜q  1¡œv a¨¤d™{Ñ+Ñ,Ô,€AÝ•*˜QœU A¤EÑ*Ô*Ñ+Ô+€EØ�>Š>ÐGÑHÔHÐHÐHÐHÐHÐHr^   c                  ó°   —  G d„ dt           ¦  «        }  | ¦   «         }t          d¦  «        }|                     t          |¦  «        d¦  «        dk    sJ ‚d S )Nc                   ó@   — e Zd Zej                             ¦   «         ZdS )ú1test_derived_classes.<locals>.MyFancyFCodePrinterN)rh   ri   rj   r=   Ú_default_settingsÚcopyrk   r^   r\   ÚMyFancyFCodePrinterr=  š  s%   € € € € € Ø(Ô:×?Ò?ÑAÔAÐÐÐr^   r@  rW   Úborkz      bork = sin(x))r=   r   r©   r   )r@  rf   rW   s      r\   Útest_derived_classesrB  ™  s{   € ðBð Bð Bð Bð B�lñ Bô Bð Bð "Ð!Ñ#Ô#€GÝ�‰Œ€AØ�?Š?�3˜q™6œ6 6Ñ*Ô*Ð.CÒCÐCÐCÐCÐCÐCr^   c                  ój   — d} d}t          ddi¦  «        }|                     | ¦  «        }||k    sJ ‚d S )Nau  subroutine test(a)
integer :: a, i, j

do
do 
do j = 1, 5
if (a>b) then
if(b>0) then
a = 3
donot_indent_me = 2
do_not_indent_me_either = 2
ifIam_indented_something_went_wrong = 2
if_I_am_indented_something_went_wrong = 2
end should not be unindented here
end if
endif
end do
end do
enddo
end subroutine

subroutine test2(a)
integer :: a
do
a = a + 1
end do 
end subroutine
a  subroutine test(a)
integer :: a, i, j

do
   do 
      do j = 1, 5
         if (a>b) then
            if(b>0) then
               a = 3
               donot_indent_me = 2
               do_not_indent_me_either = 2
               ifIam_indented_something_went_wrong = 2
               if_I_am_indented_something_went_wrong = 2
               end should not be unindented here
            end if
         endif
      end do
   end do
enddo
end subroutine

subroutine test2(a)
integer :: a
do
   a = a + 1
end do 
end subroutine
rG   rE   )r=   Úindent_code)Ú	codelinesrò   rR   r  s       r\   Útest_indentrF  ¢  sR   € ð	ð ð<	ð õ: 	�o vÐ.Ñ/Ô/€AØ�]Š]˜9Ñ%Ô%€FØ�XÒÐÐÐÐÐr^   c            	      ó  — t          d¦  «        \  } }}t          | |z  t          d| z   |dk    f|df¦  «        t          |¦  «        g¦  «        }t	          ddd¦  «        }t          ||¦  «        dk    sJ ‚t          d|d	         z  | dk    f|d	         df¦  «        t          |d
         ¦  «        z   |d         z   }t          |d¬¦  «        dk    sJ ‚t	          ddd¦  «        }t	          ddd¦  «        }t          t          |d
         ¦  «        dt          |d	         ¦  «        g|d
         |d	         z   |d         dgd|d         z  |d
         z  t          |d         ¦  «        dz   dgg¦  «        }t          ||¦  «        dk    sJ ‚d S )Nzx,y,zrK   r   Tr¦   r}   r~   z†      A(1, 1) = x*y
      if (y > 0) then
         A(2, 1) = x + 2
      else
         A(2, 1) = y
      end if
      A(3, 1) = sin(z))rK   r   )r~   r   ©r   r   rq   r‘   z?      merge(2*A(3, 1), A(3, 1), x > 0) + sin(A(2, 1)) + A(1, 1)rS   r¹   ÚM)r}   r   )r¿   r   r¿   zí      M(1, 1) = sin(q(2, 1))
      M(2, 1) = q(2, 1) + q(3, 1)
      M(3, 1) = 2*q(5, 1)/q(2, 1)
      M(1, 2) = 0
      M(2, 2) = q(4, 1)
      M(3, 2) = sqrt(q(1, 1)) + 4
      M(1, 3) = cos(q(3, 1))
      M(2, 3) = 5
      M(3, 3) = 0)r   r:   r   r   r;   r<   r   r   )	rW   rX   rY   Úmatr¦   rV   rS   rI  r°   s	            r\   Útest_Matrix_printingrK  á  s¸  € Ý�gÑÔ�G€A€qˆ!å
�!�A‘#•y ! a¡%¨¨1ª °°4¨yÑ9Ô9½3¸q¹6¼6ÐBÑ
CÔ
C€CÝ�S˜!˜QÑÔ€AÝ��a‰=Œ=ð	!ò"ð "ð "ð "õ �a˜˜$œ‘i  Q¢Ð'¨!¨D¬'°4¨Ñ9Ô9½CÀÀ$Ä¹L¼LÑHÈ1ÈTÌ7ÑR€DÝ� Ð#Ñ#Ô#ØIòKð Kð Kð Kõ 	�S˜!˜QÑÔ€AÝ�S˜!˜QÑÔ€AÝ•�Q�s”V‘”˜a¥ Q s¤V¡¤Ð-Ø	
ˆ3Œ�!�C”&‰˜!˜Dœ' 1Ð%Ø	
ˆ1ˆTŒ7‰�1�S”6Ñ	�4  #¤™<œ<¨!Ñ+¨QÐ/ð1ñ 	2ô 	2€Aõ ��A‰;Œ;ð	ò	ð 	ð 	ð 	ð 	ð 	r^   c            	      ó¼   — t          d¦  «        \  } }t          | t          ddd¦  «        t          || |z  ¦  «        g¦  «        }t	          |¦  «        }|dk    sJ ‚d S )NrÞ   r   r   rK   z2      do x = 0, 9, 2
         y = x*y
      end do)r   r#   r"   r$   r<   )rW   rX   ÚfÚsols       r\   Útest_fcode_ForrO    sn   € Ý�5‰>Œ>�D€A€qåˆA�u�Q˜˜A‰Œ¥¨A¨q°1©uÑ!5Ô!5Ð 6Ñ7Ô7€AÝ
�‰(Œ(€CØð "ò #ð #ð #ð #ð #ð #r^   c                  óD  — d„ } t          dd¬¦  «        }t          j        |¦  «        }t          |¦  «        } | |d¦  «         t          d¦  «        \  }}t          |t          dt
          h¬¦  «        }t          |¦  «        } | |d	¦  «         t          |t          ¬
¦  «        }t          |¦  «        }	 | |	d¦  «          | t          d¦  «          | t          d¦  «          | t          dt          t          i¬¦  «          | t          dt          t          i¬¦  «         d S )Nc                 ó2   — t          | fdddœ|¤Ž|k    sJ ‚d S )Nrq   rE   rr   r–   )rV   ÚrefÚkwargss      r\   Úcheckz%test_fcode_Declaration.<locals>.check  s0   € Ý�TÐG B°fÐGÐGÀÐGÐGÈ3ÒNÐNÐNÐNÐNÐNr^   r§   Tro   zinteger*4 :: irÞ   é*   )ÚvalueÚattrszreal*4, parameter :: x = 42©Útypezlogical :: yzreal*4zreal*8)Útype_aliases)	r   r'   Údeducedr&   r(   r*   r,   r)   r+   )
rT  r§   Úvar1Údcl1rW   rX   Úvar2Údcl2bÚvar3Údcl3s
             r\   Útest_fcode_Declarationrb    s2  € ðOð Oð Oõ 	�˜TÐ"Ñ"Ô"€AÝÔ˜AÑÔ€DÝ�tÑÔ€DØ	€Eˆ$Ð Ñ!Ô!Ð!õ �5‰>Œ>�D€A€qÝ�A•w bµ°Ð>Ñ>Ô>€DÝ˜ÑÔ€EØ	€Eˆ%Ð.Ñ/Ô/Ð/å�A�EÐ"Ñ"Ô"€DÝ�tÑÔ€DØ	€Eˆ$�ÑÔÐà	€E�'�8ÑÔÐØ	€E�'�8ÑÔÐØ	€E�$�­­g Ð7Ñ7Ô7Ð7Ø	€E�$�­­g Ð7Ñ7Ô7Ð7Ð7Ð7r^   c                  óF  — t          ddd¦  «        } t          ddd¦  «        }t          ddd¦  «        }t          | d         ¦  «        dk    sJ ‚t          d| d         z  ¦  «        dk    sJ ‚|d                              || |z
  ¦  «        }t          |¦  «        d	k    sJ ‚d S )
Nr¦   r~   r}   ÚBÚCrH  z      A(1, 1)z      3*A(1, 1)z      (A - B)(1, 1))r;   r<   r8  )r¦   rd  re  ÚFs       r\   Útest_MatrixElement_printingrg  '  s«   € å�S˜!˜QÑÔ€AÝ�S˜!˜QÑÔ€AÝ�S˜!˜QÑÔ€Aå��4”‰>Œ>˜_Ò,Ð,Ð,Ð,Ý��Q�t”W‘ÑÔÐ!2Ò2Ð2Ð2Ð2à	ˆ$Œ�Š�Q˜˜A™ÑÔ€AÝ�‰8Œ8Ð,Ò,Ð,Ð,Ð,Ð,Ð,r^   c                  óp   — t          d¦  «        } t          t          | dd¦  «        d¬¦  «        dk    sJ ‚d S )NrW   ú+r~   rE   rF   z	x = x + 1)r   r<   r%   rv   s    r\   Útest_aug_assignrj  4  s=   € Ý�‰Œ€AÝ•˜A˜s AÑ&Ô&°fÐ=Ñ=Ô=ÀÒLÐLÐLÐLÐLÐLr^   c            
      ó°   — t          d¦  «        } t          t          t          | ¦  «        dk    t	          | dd¦  «        g¦  «        d¬¦  «        dk    sJ ‚d S )NrW   r~   ú-rE   rF   z)do while (abs(x) > 1)
   x = x - 1
end do)r   r<   r-   rP   r%   rv   s    r\   Ú
test_Whilerm  9  sc   € Ý�‰Œ€AÝ••s˜1‘v”v ’z¥J¨q°#°qÑ$9Ô$9Ð#:Ñ;Ô;È6ÐRÑRÔRð	òð ð ð ð ð r^   c                  ó   ‡— t          d¦  «        } t          dd¬¦  «        }t          | t          ¬¦  «        }t          |t          ¬¦  «        }t	          t          d||g¦  «        Št          t          ˆfd„¦  «         d S )NrW   r|   Tro   rX  Úpowerc                  ó"   •— t          ‰ ¦  «        S ru   r–   )Úfp1s   €r\   rw   z.test_FunctionPrototype_print.<locals>.<lambda>J  ó   ø€ ­¨c©
¬
€ r^   )r   r'   r+   r0   r.   rC   rx   )rW   r|   ÚvxÚvnrq  s       @r\   Útest_FunctionPrototype_printru  B  s|   ø€ Ý�‰Œ€AÝ�˜TÐ"Ñ"Ô"€AÝ	�!�$Ð	Ñ	Ô	€BÝ	�!�'Ð	"Ñ	"Ô	"€BÝ
�D '¨B°¨8Ñ
4Ô
4€Cõ ÕÐ 2Ð 2Ð 2Ð 2Ñ3Ô3Ð3Ð3Ð3r^   c                  óF  ‡— t          d¦  «        } t          dd¬¦  «        }t          | t          ¬¦  «        }t          |t          ¬¦  «        }t	          | | |z  ¦  «        t          | ¦  «        g}t          t          d||g|¦  «        Št          t          ˆfd„¦  «         d S )NrW   r|   Tro   rX  ro  c                  ó"   •— t          ‰ ¦  «        S ru   r–   )Úfd1s   €r\   rw   z/test_FunctionDefinition_print.<locals>.<lambda>V  rr  r^   )	r   r'   r+   r0   r$   r1   r/   rC   rx   )rW   r|   rs  rt  Úbodyrx  s        @r\   Útest_FunctionDefinition_printrz  M  sœ   ø€ Ý�‰Œ€AÝ�˜TÐ"Ñ"Ô"€AÝ	�!�$Ð	Ñ	Ô	€BÝ	�!�'Ð	"Ñ	"Ô	"€BÝ�q˜!˜Q™$ÑÔ¥¨¡¤Ð+€DÝ
�T 7¨R°¨H°dÑ
;Ô
;€Cõ ÕÐ 2Ð 2Ð 2Ð 2Ñ3Ô3Ð3Ð3Ð3r^   N)‡Úsympy.core.addr   Úsympy.core.exprr   Úsympy.core.functionr   r   r   Úsympy.core.modr   Ú
sympy.corer	   r
   r   Úsympy.core.numbersr   r   r   r   r   r   Úsympy.core.relationalr   Úsympy.core.singletonr   Úsympy.core.symbolr   r   Ú(sympy.functions.combinatorial.factorialsr   Ú$sympy.functions.elementary.complexesr   r   Ú&sympy.functions.elementary.exponentialr   r   Ú(sympy.functions.elementary.miscellaneousr   Ú$sympy.functions.elementary.piecewiser   Ú(sympy.functions.elementary.trigonometricr   r   r   Ú'sympy.functions.special.gamma_functionsr    Úsympy.integrals.integralsr!   Úsympy.sets.fancysetsr"   Úsympy.codegenr#   r$   r%   Úsympy.codegen.astr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   Úsympy.logic.boolalgr5   r6   r7   r8   r9   Úsympy.matricesr:   r;   Úsympy.printing.fortranr<   r=   Úsympy.tensorr>   r?   Úsympy.tensor.array.expressionsr@   rA   Úsympy.utilities.lambdifyrB   Úsympy.testing.pytestrC   r]   rm   ry   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:  rB  rF  rK  rO  rb  rg  rj  rm  ru  rz  rk   r^   r\   ú<module>r–     sá  ðØ Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø >Ð >Ð >Ð >Ð >Ð >Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø :Ð :Ð :Ð :Ð :Ð :Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø .Ð .Ð .Ð .Ð .Ð .Ø &Ð &Ð &Ð &Ð &Ð &à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ð!ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð ,Ð +Ð +Ð +Ð +Ð +Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ð	lð 	lð 	lð-ð -ð -ð8ð 8ð 8ð@ð @ð @ð$>ð >ð >ð,ð ,ð ,ð
@ð @ð @ð
	Gð 	Gð 	Gð7ð 7ð 7ð>
Dð 
Dð 
Dð:ð :ð :ð0)ð )ð )ð3ð 3ð 3ðð ð ð
Mð 
Mð 
Mðð ð ð&>ð >ð >ð
ð ð ð	 ð 	 ð 	 ð."ð ."ð ."ðb`$ð `$ð `$ðFIð Ið Ið(,ð (,ð (,ðV95ð 95ð 95ðx4ð 4ð 4ð4=ð =ð =ðMð Mð Mð
ð ð ð4ð 4ð 4ð?ð ?ð ?ð4ð ð ðIð Ið IðIð Ið Ið&Dð Dð Dð=ð =ð =ð~ ð  ð  ðF#ð #ð #ð8ð 8ð 8ð2
.ð 
.ð 
.ðMð Mð Mð
ð ð ð4ð 4ð 4ð	4ð 	4ð 	4ð 	4ð 	4r^   