Ë
    7^(h€Š  ã                   óò  — 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†yI)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
   j                  «       dk(  sJ ‚t	        |	ddi¬«      j                  «       dk(  sJ ‚y )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/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/printing/tests/test_fortran.pyÚtest_UnevaluatedExprr]   #   sÀ   € Ü�g DÔ)�G€A€qˆ!Ü
˜!˜a™%Ó
 €CÜŒs�1�S‘5‹z‹?€DÜ� VÔ,Ð0BÒBÐBÐBÜ�gÓ�G€A€qˆ!Ü
˜!˜a™%Ó
 €CÜ”�A�c‘E“
‹O€EÜ�˜eÔ$ QÑ'×.Ñ.Ó0Ð4LÒLÐLÐLÜ�¨¨jÐ'9Ô:×AÑAÓCÐGkÒkÐkÑkó    c                  ód   — t        d«      }  G d„ dt        «      }t         || «      «      dk(  sJ ‚y )NrW   c                   ó   — e Zd Zd„ Zy)útest_printmethod.<locals>.nintc                 óD   — d|j                  | j                  d   «      z  S )Nznint(%s)r   )Ú_printÚargs)ÚselfÚprinters     r\   Ú_fcodez%test_printmethod.<locals>.nint._fcode3   s   € Ø §¡¨t¯y©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                  ó  ‡— 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„«       y )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«€ r^   )r   r<   r   rC   ÚNotImplementedError)rX   rY   rW   s     @r\   Útest_fcode_signry   8   s„   ø€ Üˆcƒl€AÜˆc˜4Ô €AÜˆc˜4Ô €AÜ”�a“ 2°VÔ<Ð@eÒeÐeÐeÜ”�a“ 2°VÔ<Ð@_Ò_Ð_Ð_Ü”�a“ 2°VÔ<Ð@qÒqÐqÐqÜ
ÔÓ 6Õ7r^   c                  óh  — 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 ‚y )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   sO  € Ü�5‹>�D€A€qÜ�˜TÔ"€Aä��A‘‹;˜,Ò&Ð&Ð&Ü��Q˜‘T‘ÓÐ0Ò0Ð0Ð0Ü�”C˜“F˜3‘J ! a¨¡d¡(Ñ+Ñ+¨Q°©T°A©XÑ6Ó7Ø6ò7ð 7ð 7ä”�a“‹>˜_Ò,Ð,Ð,Ü”�a“‹>Ð2Ò2Ð2Ð2Ü��C‘‹=˜OÒ+Ð+Ð+Ü”�a“‹>˜_Ò,Ð,Ð,Ü”�b“‹?Ð2Ò2Ð2Ð2Ü��D‘‹>˜]Ò*Ð*Ð*Ü��D‘˜#¨VÔ4Ð8IÒIÐIÐIÜ�”H˜Q “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 ‚y )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Ü”˜"˜a“Ó! YÒ.Ð.Ð.Ü”˜!˜R“Ó!Ð%9Ò9Ð9Ð9Ü”˜"˜bÓ!Ó"Ð&9Ò9Ð9Ð9Ü�”X˜a “^Ñ#Ó$Ð(?Ò?Ð?Ð?Ü”˜!˜Q“ Ñ!Ó"Ð&=Ò=Ð=Ñ=r^   c                  óh   — t        t        d«      «      dk(  sJ ‚t        t        d«      «      dk(  sJ ‚y )NéC   z      67éÿÿÿÿz      -1)r<   r   rk   r^   r\   Útest_fcode_IntegerrŠ   ^   s0   € Ü”˜“Ó Ò+Ð+Ð+Ü”˜“Ó Ò+Ð+Ñ+r^   c                  óh   — t        t        d«      «      dk(  sJ ‚t        t        d«      «      dk(  sJ ‚y )Ng      E@z      42.0000000000000d0g@Œµx¯Äz      -1.00000000000000d+20)r<   r   rk   r^   r\   Útest_fcode_FloatrŒ   c   s2   € Ü”�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 ]3  } t        t        ‰‰«      | ¬«      d	k(  sJ ‚t        ‰‰z  | ¬«      d	k(  rŒ3J ‚ y )
Nr{   z      sin(x)**cos(y)c                  ó2   •— t        t        ‰ ‰«      d¬«      S ©NéB   ©rs   ©r<   r   ©rW   rX   s   €€r\   rw   z&test_fcode_functions.<locals>.<lambda>k   ó   ø€ ¬¬c°!°Q«iÀ"Ô(E€ r^   c                  ó$   •— t        ‰ ‰z  d¬«      S r�   ©r<   r“   s   €€r\   rw   z&test_fcode_functions.<locals>.<lambda>l   ó   ø€ ¬¨a°!©e¸bÔ(A€ r^   c                  ó2   •— 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Ñ!Ó"Ð&<Ò<Ð<Ð<Ü
ÔÔ EÔFÜ
ÔÔ AÔBÜ
ÔÔ EÔFÜ
ÔÔ AÔBØ(ò GˆÜ”S˜˜A“Y¨Ô2Ð6JÒJÐJÐJÜ�Q˜‘U XÔ.Ð2FÓFÐFÐFñGr^   c            	      óX  — 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 ‚| j                  |t	        |«      z  |z   d
¬«      dk(  sJ ‚| j                  |t	        |«      z  d¬«      dk(  sJ ‚| 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 ‚y )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   sÔ  € Ü	‹€BÜÐ 3Ó4Ñ€A€bˆˆQˆq��AÜ”�R“œ3˜q ™s›8Ñ#¤c¨!¨A©#£hÑ.Ó/Ø@òAð Að Aä”�S“˜A˜a™C ™E "¤h¨q°!£nÑ"4Ñ4Ñ4Ó5ØBòCð Cð Cä”�R“œ3˜q ™s›8Ñ#¤c¨!¨A©#£hÑ.¸eÔDØ=ò>ð >ð >ä�”S˜“V‘¨5Ô1Ð5GÒGÐGÐGØ�:‰:�aœ˜A›‘h ‘m¨tˆ:Ó4Ð8TÒTÐTÐTØ�:‰:�aœ˜A›‘h¨$ˆ:Ó/Ð3IÒ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ð-5ò7ð 7ñ 7r^   c            
      ó‚  — t        d«      } t        d«      j                  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«      j                  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 ‚y )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·   “   s  € Üˆsƒ|€AÜ�2‹w�}‰}˜RÓ €HØ(€KÜ�”S˜“W‘Ó °(Ñ!:Ò:Ð:Ð:Ü�”S˜“W‘Ó °(Ñ!:Ò:Ð:Ð:Ü�”Sœ˜2›“Z‘Ó  N°XÑ$=Ò=Ð=Ð=Ü””Q�r“U“Ó ¨xÑ 7Ò7Ð7Ð7Ü”�R“‹>˜\¬C°«G¯M©M¸"Ó,=Ñ=Ò=Ð=Ð=Ü�”Sœ˜R›“\Ñ!Ó" l°[Ñ&@Ò@Ð@Ð@Ü�”SœœQ˜r›U›“_Ñ$Ó%¨¸Ñ)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        |j                  t        j                  | «      «      fht        «       dfk(  sJ ‚t        t        d	¬
«      t        |j                  t	        j                  | «      «      fht        «       dfk(  sJ ‚t        t
        d	¬
«      t
        |j                  t        j                  | «      «      fht        «       dfk(  sJ ‚t        t        d	¬
«      t        |j                  t        j                  | «      «      fht        «       dfk(  sJ ‚t        t        d	¬
«      t        |j                  t        j                  | «      «      fht        «       dfk(  sJ ‚t        t        dd	¬«      t        |j                  t        j                  d«      «      fht        «       dfk(  sJ ‚y )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½       s’  € Ø€DÜ‹€AÜ”‹>ÐNÔQX×Q^ÑQ^Ð_cÓQdÑdÒdÐdÐdÜ”ÓÐ WÔZd×ZjÑZjÐkoÓZpÑ pÒpÐpÐpÜ”‹8Ð<¼q¿w¹wÀt»}ÑLÒLÐLÐLÜ”ÓÐ!ZÔ]h×]nÑ]nÐosÓ]tÑ!tÒtÐtÐtÜ”‹9Ð?Ä"Ç(Á(È4Ã.ÑPÒPÐPÐPÜÜ
�aôØCÄbÇhÁhÈqÃkÑQòRð Rð Rä” Ô&Ü	�!—(‘(œ7Ÿ=™=¨Ó.Ó/Ð0ð,2Ü36³5¸/ð+Kò Kð Kð Kä” 5Ô)´
¸A¿H¹HÜ×Ñ˜Óó= ð 0!ð /"Ü#&£5Ð*<ð.>ò >ð >ð >ä”˜%Ô Ü
ˆQ�X‰X”a—g‘g˜d“mÓ$Ð	%Ð&¬«¨yð%:ò :ð :ð :ä” EÔ*´¸a¿h¹hÜ×Ñ˜$Óó?!ð 1"ð 0#Ü$'£EÐ+>ð/@ò @ð @ð @ä”˜5Ô!Ü
ˆa�h‰h”r—x‘x “~Ó&Ð	'Ð(¬#«%°ð&=ò =ð =ð =ä”˜q¨Ô.Ü
ˆa�h‰h”r—x‘x “{Ó#Ð	$Ð%¤s£u¨jð3:ò :ð :ñ :r^   c                  óÚ  — 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 ‚y )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Á   ¸   sö   € Ü”‹8Ð)Ò)Ð)Ð)Ü�‹€AÜ�”1‘‹:Ð+Ò+Ð+Ð+Ü��Q”q‘S‘‹>Ð/Ò/Ð/Ð/Ü��Q”q‘S‘˜1‘ÓÐ!7Ò7Ð7Ð7Ü”�1‘‹:Ð-Ò-Ð-Ð-Ü��Q”q‘S‘˜1‘ÓÐ!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 ‚y )Nr{   z      sin(x)z      atan2(x, y)z      conjg(x))r   r<   r   r   r   r“   s     r\   Útest_implicitrÃ   Æ   sW   € Ü�5‹>�D€A€qÜ”�Q“‹=˜NÒ*Ð*Ð*Ü”�q˜!“ÓÐ!4Ò4Ð4Ð4Ü”˜1“ÓÐ"2Ò2Ð2Ñ2r^   c                  óR  — t        d«      } t        d«      }t        t        «      5  t	        t        | «      «       d d d «       t	        t        t        | «      «      d¬«      dk(  sJ ‚t        t        «      5  t	         || «      «       d d d «       y # 1 sw Y   ŒWxY w# 1 sw Y   y xY w)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Ç   Í   s–   € Ü�‹€AÜ�‹€AÜ	Ô#Ó	$ñ ÜŒe�A‹hŒ÷ä”œ#˜a›&Ó!¨%Ô0ð  5Aò  Að  Að  AÜ	Ô#Ó	$ñ Ü‰a�‹dŒ÷ð ÷ð ú÷ð ús   ¦BÁ6BÂBÂB&c                  óB  — 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 ‚y )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¸OÒKÐKÐKÜ�‹€AÜÜˆa‹ '¨9Ð!5ô7Ø:LòMð Mð Mä�‹€AÜ‘�1“ s¨G nÔ5Ð9IÒIÐIÐIÜ�˜TÔ"€AÜÜ�!‹ k°5Ð%9ô;Ø>LòMð Mñ Mr^   c            	      óÔ  — 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 ‚y )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€AÜ‘�1“‹;˜+Ò%Ð%Ð%Ü˜S¤&¨¨A¬b©D°©FÓ"3Ó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                  óP   — t        d«      } t        t        | «      d¬«      dk(  sJ ‚y )NrW   Úsr¡   z      s = sin(x))r   r<   r   rv   s    r\   Útest_assign_torÒ   ÷   s%   € Ü�‹€AÜ”�Q“ 3Ô'Ð+=Ò=Ð=Ñ=r^   c                  óØ   — t        d«      \  } }t        | |z   dz  j                  «       d¬«      dk(  sJ ‚t        d«      D �cg c]  }| |z  ‘Œ	 }}t        t	        |Ž «      dk(  sJ ‚y c c}w )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**10é   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   )rW   rX   r§   Úes       r\   Útest_line_wrappingrÙ   ü   s   € Ü�5‹>�D€A€qÜ�1�q‘5˜2‘+×%Ñ%Ó'°5Ô9ð	)òð ð ô
 ˜R“yÖ!�!ˆˆA‹Ð!€AÐ!Ü”�a�‹>ð	òð ñ ùò 	"s   ÁA'c                  óL  — 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 ‚y )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ØôØ!9ò:ð :ð :ä”˜A ™E 1 q¨1¡u¡9Ó-¸VÔ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 ‚y )!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°[Ò@Ð@Ð@Ü”�Qœ˜A›“¨vÔ6Ð:KÒKÐKÐKÜ””S˜“V˜Q“¨vÔ6Ð:KÒKÐKÐKÜ””S˜“VœS ›VÓ$°FÔ;Øò ð  ð  ä””S˜˜A“Y¨Ô/¸vÔFØòð ð ô ”�A�q“¨Ô0°JÒ>Ð>Ð>Ü”�A”s˜1“v“¨fÔ5Ð9IÒIÐIÐIÜ””C˜“F˜A“¨fÔ5Ð9IÒIÐIÐIÜ””C˜“FœC ›FÓ#°6Ô:Øòð ð ä””R˜˜1“X¨Ô.¸fÔEØòð ð ô ””R˜˜1“X˜qÓ!°Ô8Ð<PÒPÐPÐPÜ””R˜˜1“X˜qÓ!°Ô8Ð<PÒPÐPÐPÜ””R˜˜1“X˜qÓ!°Ô8Ð<PÒPÐPÐPÜ””C˜˜1“I˜qÓ!°Ô8Ð<NÒNÐNÐNÜ””C˜˜1“I˜qÓ!°Ô8Ð<NÒNÐNÐNÜ””C˜˜1“I˜qÓ!°Ô8Ð<NÒNÐNÐNä”�Q˜˜1“¨VÔ4Ð8KÒKÐKÐKÜ”�Q˜œ3˜q›6Ó"°&Ô9Ø!ò"ð "ð "ä”�Qœ˜A› Ó"°&Ô9Ø!ò"ð "ð "ä””S˜“V˜Q Ó"°&Ô9Ø!ò"ð "ð "ä””S˜˜A˜q“\¨EÔ2À&ÔIØ#ò$ð $ð $ô ”�A�q˜!“¨FÔ3Ð7HÒHÐHÐHÜ”�A�qœ#˜a›&Ó!°Ô8Øò ð  ð  ä”�A”s˜1“v˜qÓ!°Ô8Øò ð  ð  ä””C˜“F˜A˜qÓ!°Ô8Øò ð  ð  ä””R˜˜1˜a“[¨5Ô1ÀÔ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 ‚y )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  sv  € Ü�gÓ�G€A€qˆ!ä”�Q˜ EÔ*¸&ÔAØòð ð ä”�Qœ˜A›¨Ô/¸vÔFØòð ð ä””S˜“V˜Q¨Ô/¸vÔFØòð ð ä””S˜“VœS ›V¨eÔ4ØôØ!9ò:ð :ð :ä””S˜˜A¨Ô.¸Ô?ØôØ!5ò6ð 6ð 6ô ”˜A˜qÓ!°Ô8¸KÒGÐGÐGÜ”˜Aœs 1›vÓ&°fÔ=Øòð ð ä”œC ›F AÓ&°fÔ=Øòð ð ä”œC ›F¤C¨£FÓ+¸6ÔBØò ð  ð  ä””Z  1Ó%°Ô6ØôØ!4ò5ð 5ð 5ô ”œC  1›I qÓ)¸Ô@Øòð ð ä”œC  1›I qÓ)¸Ô@Øòð ð ä”œC  1›I qÓ)¸Ô@Øòð ð ä””Z  1Ó% qÓ)¸Ô@Øòð ð ä””Z  1Ó% qÓ)¸Ô@Øòð ð ä””Z  1Ó% qÓ)¸Ô@Øòð ð ô ”œB˜q !›H aÓ(¸Ô?Øòð ð ä”œB˜q !›H aÓ(¸Ô?Øòð ð ä”œB˜q !›H aÓ(¸Ô?Øòð ð ä””J˜q !Ó$ aÓ(¸Ô?Øòð ð ä””J˜q !Ó$ aÓ(¸Ô?Øòð ð ä””J˜q !Ó$ aÓ(¸Ô?Øòð ð ô ”œC  1¨uÔ5°qÓ9ØôØ!7ò8ð 8ð 8ä”œC  1¨uÔ5°qÓ9ØôØ!7ò8ð 8ð 8ä”œC  1¨uÔ5°qÓ9ØôØ!7ò8ð 8ð 8ä””Z  1Ó% q°5Ô9ØôØ!7ò8ð 8ð 8ä””Z  1Ó% q°5Ô9ØôØ!7ò8ð 8ð 8ä””Z  1Ó% q°5Ô9ØôØ!7ò8ð 8ð 8ô ””S˜˜A“Y ¨EÔ2À&ÔIØòð ð ä””S˜˜A“Y ¨EÔ2À&ÔIØòð ð ä””S˜˜A“Y ¨EÔ2À&ÔIØòð ð ä””S˜˜A¨Ô.°Ó2À&ÔIØòð ð ä””S˜˜A¨Ô.°Ó2À&ÔIØòð ð ä””S˜˜A¨Ô.°Ó2À&ÔIØòð ð ô ””R˜˜1“X˜q¨5Ô1ÀÔHØòð ð ä””R˜˜1“X˜q¨5Ô1ÀÔHØòð ð ä””R˜˜1“X˜q¨5Ô1ÀÔHØòð ð ä””C˜˜1 uÔ-¨qÓ1ÀÔHØòð ð ä””C˜˜1 uÔ-¨qÓ1ÀÔHØòð ð ä””C˜˜1 uÔ-¨qÓ1ÀÔHØòð ð ô ”�Q˜˜1 uÔ-¸VÔDØòð ð ä”�Q˜œ3˜q›6¨EÔ2À&ÔIØ#ò$ð $ð $ä”�Qœ˜A› ¨EÔ2À&ÔIØ#ò$ð $ð $ä””S˜“V˜Q ¨EÔ2À&Ô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 ‚y )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Ü”˜A˜q $Ó'°vÔ>À(ÒJÐJÐJÜ”˜A˜q $Ó'°vÔ>À(ÒJÐJÐJÜ”˜A˜q $Ó'°vÔ>À(ÒJÐJÐJÜ”˜A˜q #Ó&°fÔ=ÀÒHÐHÐHÜ”˜A˜q #Ó&°fÔ=ÀÒHÐHÑHr^   c            	      ó¤  ‡— 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kD  ft        | «      df«      d¬«      }d}||k(  sJ ‚t        | | dk  f| dz  | dkD  ft        | «      | dkD  f«      Št        t        ˆfd„«       y )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Ô4Ü� Ô#€DØ,€HØ�8ÒÐÐÜ”˜A˜q 1™u˜:¨¨1©¨d |Ó4ÀÔFð	òð ð ô 	ˆA‹ˆq‰€AÜˆA‹ˆq‰€AÜ�2‹Yò ˆÜ��A‹JˆÜ��A‹J‰ðð
	ð ô ”˜A˜q 1™u˜:¨¨4 yÓ1¸\ÔJ€DØ�8ÒÐÐÜ”˜A˜q 1™u˜:¨¨1©¨a°!©e }´s¸1³v¸t°nÓEÐPRÔS€DØB€HØ�8ÒÐÐä�a˜˜Q™�Z ! Q¡$¨¨A© ´°Q³¸¸Q¹°Ó@€DÜ
Œ:Ó*Õ+r^   c                  óà   — t        «       } g d¢}| j                  |«      }g d¢}|D ]  }t        |«      dk  rŒJ ‚ t        ||«      D ]  \  }}||k(  rŒJ ‚ t        |«      t        |«      k(  sJ ‚y )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€Gò€Eð" ×)Ñ)¨%Ó0€Mò€Nð@ ò ˆÜ�4‹y˜B‹Ðˆðä�M >Ó2ò ‰ˆˆ1Ø�A‹vˆˆvðäˆ}Ó¤ ^Ó!4Ò4Ð4Ñ4r^   c                  óT   — t        «       } g d¢}g d¢}| j                  |«      |k(  sJ ‚y )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	    s2   € Ü‹n€Gò€Eò€Hð × Ñ  Ó'¨8Ò3Ð3Ñ3r^   c                  ó&   — t        t        d„ «       y )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°Ô;€ r^   )rC   Ú	TypeErrorrk   r^   r\   Útest_settingsr  5  s   € Ü
Œ9Ñ;Õ<r^   c                  ón   — t        d«      \  } }t        t        | «      t        |«      z   d¬«      dk(  sJ ‚y )Nr{   rE   rF   zsin(y) + cos(x))r   r<   r   r   r“   s     r\   Útest_free_form_code_liner  9  s1   € Ü�5‹>�D€A€qÜ”�Q“œ#˜a›&‘°Ô7Ð;LÒLÐLÑLr^   c                  ó˜   — t        d«      \  } }t        t        | «      t        |«      z   dz  j	                  «       d¬«      }d}||k(  sJ ‚y )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  >  sO   € Ü�5‹>�D€A€qÜ”S˜“Vœc !›f‘_¨Ñ*×2Ñ2Ó4ÀFÔK€Fð	-ð ð
 �XÒÐÑr^   c                  óX   — t        ddi«      } dg}ddg}| j                  |«      |k(  sJ ‚y )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  sA   € Ü˜O¨VÐ4Ó5€GØnÐo€EàQØ"ð$€Hð × Ñ  Ó'¨8Ò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 ‚y y y y )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Ø�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 ‚y )
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�D€A€qÜ�CÓ€AÜ�CÓ€AÜˆAˆq‹	€Að	ð —7‘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¬	«      }|j                  d
«      sJ ‚y )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°5Ô9€EØ�>‰>ÐGÔHÐHÑHr^   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        t	        |j
                  |j                  «      «      }|j                  d«      sJ ‚ G d	„ d
t        t        «      Š|j                  ˆfd„|j                  t        «      D «       «      }t        ||   ||dz      ||   z
  ||dz      ||   z
  z  «      }t        t	        |j
                  |j                  «      «      }|j                  d«      sJ ‚y )Nr¹   rX   r#  rW   r%  r~   r§   r'  c                   ó   — e Zd Zy)ú.test_element_like_objects.<locals>.ElementExprN)rh   ri   rj   rk   r^   r\   ÚElementExprr/  �  s   „ Ør^   r0  c              3   ó\   •K  — | ]#  }| ‰|j                   |j                  «      f–— Œ% y ­wru   )ÚnameÚindices)Ú.0rð   r0  s     €r\   ú	<genexpr>z,test_element_like_objects.<locals>.<genexpr>“  s%   øè ø€ ÒT°q�‘;˜qŸv™v q§y¡yÓ1Ô2ÑTùs   ƒ),)r@   r?   r   r<   r$   r(  r  r)  r2   r   ÚsubsÚatomsrA   )r*  rX   rW   r%  r§   rØ   r+  r0  s          @r\   Útest_element_like_objectsr8  †  s5  ø€ Ø€EÜ�C ˜xÔ(€AÜ�C ˜xÔ(€AÜ	�T %¨¡' Ô	,€BÜˆC��q‘Ó€AÜˆˆA‰��1�Q‘3‘˜˜!™‘˜q  1¡™v a¨¡d™{Ñ+Ó,€AÜ”*˜QŸU™U A§E¡EÓ*Ó+€EØ�>‰>ÐGÔHÐHÐHô”gœtô ð 	
�‰ÓT¸A¿G¹GÄLÓ<QÔTÓT€AÜˆˆA‰��1�Q‘3‘˜˜!™‘˜q  1¡™v a¨¡d™{Ñ+Ó,€AÜ”*˜QŸU™U A§E¡EÓ*Ó+€EØ�>‰>ÐGÔHÐHÑHr^   c                  ó†   —  G d„ dt         «      }  | «       }t        d«      }|j                  t        |«      d«      dk(  sJ ‚y )Nc                   ó@   — e Zd Zej                  j                  «       Zy)ú1test_derived_classes.<locals>.MyFancyFCodePrinterN)rh   ri   rj   r=   Ú_default_settingsÚcopyrk   r^   r\   ÚMyFancyFCodePrinterr;  š  s   „ Ø(×:Ñ:×?Ñ?ÓAÑr^   r>  rW   Úborkz      bork = sin(x))r=   r   r©   r   )r>  rf   rW   s      r\   Útest_derived_classesr@  ™  sA   € ôBœlô Bñ "Ó#€GÜ�‹€AØ�?‰?œ3˜q›6 6Ó*Ð.CÒCÐCÑCr^   c                  óV   — d} d}t        ddi«      }|j                  | «      }||k(  sJ ‚y )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_indentrD  ¢  sC   € ð	ð ð<	ð ô: 	�o vÐ.Ó/€AØ�]‰]˜9Ó%€FØ�XÒÐÑr^   c            	      óB  — t        d«      \  } }}t        | |z  t        d| z   |dkD  f|df«      t        |«      g«      }t	        ddd«      }t        ||«      dk(  sJ ‚t        d|d	   z  | dkD  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 ‚y )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   rG  r°   s	            r\   Útest_Matrix_printingrI  á  sp  € Ü�gÓ�G€A€qˆ!ä
�!�A‘#”y ! a¡%¨¨1© °°4¨yÓ9¼3¸q»6ÐBÓ
C€CÜ�S˜!˜QÓ€AÜ��a‹=ð	!ò"ð "ð "ô �a˜˜$™‘i  Q¡Ð'¨!¨D©'°4¨Ó9¼CÀÀ$Á»LÑHÈ1ÈTÉ7ÑR€DÜ� Ô#ØIò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€Aô ��A‹;ð	ò	ð 	ñ 	r^   c            	      ó�   — t        d«      \  } }t        | t        ddd«      t        || |z  «      g«      }t	        |«      }|dk(  sJ ‚y )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_ForrM    sS   € Ü�5‹>�D€A€qäˆAŒu�Q˜˜A‹¤¨A¨q°1©uÓ!5Ð 6Ó7€AÜ
�‹(€CØð "ò #ð #ñ #r^   c                  óÌ  — 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¬«       y )Nc                 ó,   — t        | fdddœ|¤Ž|k(  sJ ‚y )Nrq   rE   rr   r–   )rV   ÚrefÚkwargss      r\   Úcheckz%test_fcode_Declaration.<locals>.check  s!   € Ü�TÐG B°fÑGÀÑGÈ3Ò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+   )
rR  r§   Úvar1Údcl1rW   rX   Úvar2Údcl2bÚvar3Údcl3s
             r\   Útest_fcode_Declarationr`    sÅ   € òOô 	�˜TÔ"€AÜ×Ñ˜AÓ€DÜ�tÓ€DÙ	ˆ$Ð Ô!ô �5‹>�D€A€qÜ�A”w b´°Ô>€DÜ˜Ó€EÙ	ˆ%Ð.Ô/ä�AœEÔ"€DÜ�tÓ€DÙ	ˆ$�Ôá	Œ'�8ÔÙ	Œ'�8ÔÙ	Œ$�¬¬g Õ7Ù	Œ$�¬¬g Ö7r^   c                  óô   — 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   j                  || |z
  «      }t        |«      d	k(  sJ ‚y )
Nr¦   r~   r}   ÚBÚCrF  z      A(1, 1)z      3*A(1, 1)z      (A - B)(1, 1))r;   r<   r6  )r¦   rb  rc  ÚFs       r\   Útest_MatrixElement_printingre  '  s‰   € ä�S˜!˜QÓ€AÜ�S˜!˜QÓ€AÜ�S˜!˜QÓ€Aä��4‘‹>˜_Ò,Ð-Ð,Ü��Q�t‘W‘ÓÐ!2Ò2Ð3Ð2à	ˆ$‰�‰�Q˜˜A™Ó€AÜ�‹8Ð,Ò,Ð-Ñ,r^   c                  óT   — t        d«      } t        t        | dd«      d¬«      dk(  sJ ‚y )NrW   ú+r~   rE   rF   z	x = x + 1)r   r<   r%   rv   s    r\   Útest_aug_assignrh  4  s)   € Ü�‹€AÜ”˜A˜s AÓ&°fÔ=ÀÒLÐLÑLr^   c            
      ó‚   — t        d«      } t        t        t        | «      dkD  t	        | dd«      g«      d¬«      dk(  sJ ‚y )NrW   r~   ú-rE   rF   z)do while (abs(x) > 1)
   x = x - 1
end do)r   r<   r-   rP   r%   rv   s    r\   Ú
test_Whilerk  9  sD   € Ü�‹€AÜ””s˜1“v ‘z¤J¨q°#°qÓ$9Ð#:Ó;È6ÔRð	òð ñ r^   c                  óÆ   ‡— t        d«      } t        dd¬«      }t        | t        ¬«      }t        |t        ¬«      }t	        t        d||g«      Št        t        ˆfd„«       y )NrW   r|   Tro   rV  Ú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Úvnro  s       @r\   Útest_FunctionPrototype_printrs  B  sP   ø€ Ü�‹€AÜ�˜TÔ"€AÜ	�!œ$Ô	€BÜ	�!œ'Ô	"€BÜ
œD '¨B°¨8Ó
4€Cô ÔÓ 2Õ3r^   c                  óü   ‡— t        d«      } t        dd¬«      }t        | t        ¬«      }t        |t        ¬«      }t	        | | |z  «      t        | «      g}t        t        d||g|«      Št        t        ˆfd„«       y )NrW   r|   Tro   rV  rm  c                  ó   •— t        ‰ «      S ru   r–   )Úfd1s   €r\   rw   z/test_FunctionDefinition_print.<locals>.<lambda>V  rp  r^   )	r   r'   r+   r0   r$   r1   r/   rC   rx   )rW   r|   rq  rr  Úbodyrv  s        @r\   Útest_FunctionDefinition_printrx  M  sk   ø€ Ü�‹€AÜ�˜TÔ"€AÜ	�!œ$Ô	€BÜ	�!œ'Ô	"€BÜ�q˜!˜Q™$Ó¤¨£Ð+€DÜ
œT 7¨R°¨H°dÓ
;€Cô ÔÓ 2Õ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,  r8  r@  rD  rI  rM  r`  re  rh  rk  rs  rx  rk   r^   r\   ú<module>r”     sk  ðÝ Ý  ß 8Ñ 8Ý ß 9Ñ 9ß C× CÝ $Ý "ß .Ý >ß Bß =Ý 9Ý :ß FÑ FÝ 9Ý .Ý &ç 5Ñ 5÷!÷ !÷ !õ !õ ,Ý ,ß =Õ =ß /ß 6ß )ß DÝ 9Ý 'ò	lò-ò8ò@ò$>ò,ò
@ò
	Gò7ò>
Dò:ò0)ò3òò
Mòò&>ò
ò	 ò."òb`$òFIò(,òV95òx4ò4=òMò
ò4ò?ò4òIòIò&Dò=ò~ òF#ò8ò2
.òMò
ò4ó	4r^   