
    g                        d dl Z d dlZd dlmZmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d d	l.m/Z/m0Z0m1Z1 d d
l2m3Z3 d dl4m5Z5m6Z6  e+d          Z7 e+d          Z8d Z9e3d             Z:e6e3d                         Z;e3d             Z<e3d             Z=e6e3d                         Z>d Z?d Z@d ZAd ZBd ZCe3d             ZDdS )    N)Symbolsymbols)

AssignmentPrintDeclarationFunctionDefinitionReturnrealFunctionCallVariableElementinteger)allocatableArrayConstructorisigndsigncmplxkind
literal_dpProgramModuleuse
Subroutine	dimensionassumed_extentImpliedDoLoop
intent_outsizeDoSubroutineCallsum_arraybind_C)render_as_module)	unchanged)import_module)fcode)has_fortrancompile_run_stringscompile_link_import_strings)	may_xfail)skipXFAILcythonnumpyc                  t    t          dd          } t          |           }t          |d          dk    sJ d S )NxTr
   freesource_formatzsize(x))r   r   r'   )r1   sxs     [/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/codegen/tests/test_fnodes.py	test_sizer8      sC    sA	aB6***i777777    c                     t                      st          d           t          dd          } t          t	          | dz            t          |           z  dz            g}t          | dgd	          }t          t          d
|g|          }t          |gd           t          dt          |gd          fdgd          \  \  }}}d|v sJ |dk    sJ |d         t          j        k    sJ d S )NNo fortran compiler found.aTr2            ?:indimintentrmsmod_rmsrms.f90)main.f90zprogram myprog
use mod_rms, only: rms
real*8, dimension(4), parameter :: x = [4, 2, 2, 2]
print *, dsqrt(7d0) - rms(x)
end program
cleanz0.00000 exit_status)r(   r,   r   r	   r!   r   r"   r   r
   r$   r)   osEX_OK)r<   bodyarrfdstdoutstderrinfos          r7   test_size_assumed_shaperT      s   == +)***sADAJJtAww&+,,-D
uT
*
*
*C	D%#	5	5BbT9%%%0	$bT9556		2 	 	 	VVd R<<<<"(******r9   c                  >   t                      st          d           t          dd          \  } }t          |dz  |ddd          }t	          d|d	g          }t          | d
gt          g          } t          d|                                 t          | |          t          | g          g          }t          |dd          }t          d|fgd          \  \  }}}d                                D ]}	|	|v sJ 	|dk    sJ |d         t          j        k    sJ d S )Nr;   za iTr      r=   i   r?   )rB   attrsidlprogi  r3   standardr5   rG   rH   z-28 -27 -1 1 27 28rJ   rK   )r(   r,   r   r   r   r"   r   r   as_Declarationr   r   r'   r)   splitrL   rM   )
r<   iidlacprogfsrcrQ   rR   rS   numstrs
             r7   test_ImpliedDoLooprf   8   sJ    == +)***5$'''DAq
1aQ
*
*C	3R.	)	)BacU;-000A9	1bqc

  D
 F;;;D0:t2D1ETRRRVVd&,,..    R<<<<"(******r9   c                     t          dd          } t          j        | d          }t          |          }t	          | | dz   g          }t          d||g          }t                      st          d           t          dt          |d	
          fgd          \  \  }}}d|v sJ d|v sJ |dk    sJ |d         t          j        k    sJ d S )Nr1   Tr2   *      foor;   rG   Z   r]   rH   4243rJ   rK   )r   r   deducedr   r   r   r(   r,   r)   r'   rL   rM   )r1   vxdeclprntrc   rQ   rR   rS   s           r7   test_Programrs   O   s    sA		!R	 	 Br??D!QqS??D54,''D== +)***0:uTTV?W?W?W2X1YaefffVVd6>>>>6>>>>R<<<<"(******r9   c            	      <   t          dd          } t          j        |           }t          t          d|gt          | dz            g          }t          dg |g          }t          ddg          }t          dt          ddg	          t          d
|g          g          }t                      st          d           t          dt          |d          fdt          |d          fgd          \  \  }}}d|v sJ t          d          |v sJ |dk    sJ d S )Nr1   Tr2   sqrr=   mod_sqg      E@foobaronlyz"Square of 42 = "r;   z
mod_sq.f90rk   rl   rG   rH   rm   i  rJ   )r   r   ro   r   r
   r	   r   r   r   r   r   r(   r,   r)   r'   str)	r1   v_xsqrv   sq_callprg_sqrQ   rR   rS   s	            r7   test_Moduler   `   sH   sA

1

C	D%#1	?	?BHb2$''F53%((GXHE7###"G,--   F == +)***0	uVb1112	U6B///02   VVd 6>>>>u::R<<<<<<r9   c                     t          dd          } t          dd          }t          j        | t          t                    t
          f          }t          j        |          }t          dt                    }t          t          t          | |g          t          d          |d	z  z            g|d|          }t          d
|gt          |          t          |          t          |t          |                     |g          }t          dd          }t          j        |t          d          g          }t          d|g          }	t          dt!          |	|g          t          |          t#          ||g          t%          t'          |          |g          g          }
t)                      st+          d           t-          dt/          |	d          fdt/          |
d          fgd          \  \  }}}d t1          dd          D             }t3          t5          |                    d d         |v sJ |D ]}t3          |          d d         |v sJ |dk    sJ d S )NrTr2   r`   rV   rZ   nri   r=   fr1   rW   mymod)definitionsrj   rx   r;   za.f90rk   rl   zb.f90rH   c                     g | ]
}d |dz  z  S )g      ?r=    ).0r`   s     r7   
<listcomp>z#test_Subroutine.<locals>.<listcomp>   s     
)
)
)3q!t8
)
)
)r9      rX   rJ   )r   r   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r!   r(   r,   r)   r'   rangerz   sum)r   r`   v_rv_iv_ndo_loopsubr1   v_x3modrc   rQ   rR   rS   ref_s                   r7   test_Subroutiner   v   s   
 	sAsD!!!A

1Y~%>%>
$K
L
L
LC

1

C
3
 
 C71qc??JqMM!Q$$677!S G S3%CC3Q  	"  C 	sAAill^444D
se
,
,
,C5CseDsTF##tDzz4 !!	  D == +)***0	%b)))*	%r***+2   VVd *
)U1a[[
)
)
)Cs3xx=="'''' % %1vvcrc{f$$$$$R<<<<<<r9   c                      t          dd          } t          t          d|           sJ t          t          d|           dd          dk    sJ d S )	Nr1   TrV   ri   _   r3   r\   zisign(1, x))r   r%   r   r'   r1   s    r7   
test_isignr      sZ    sD!!!AUAq!!!!!q!r@@@MQQQQQQr9   c                      t          d          } t          t          d|           sJ t          t          t	          d          |           dd          dk    sJ d S )Nr1   ri   r   r3   r\   zdsign(1d0, x))r   r%   r   r'   r   r   s    r7   
test_dsignr      s\    sAUAq!!!!!z!}}a((2VLLLP_______r9   c                  T    t          d          } t          t          d|           sJ d S )Nr1   ri   )r   r%   r   r   s    r7   
test_cmplxr      s+    sAUAq!!!!!!!r9   c                  R    t          d          } t          t          |           sJ d S )Nr1   )r   r%   r   r   s    r7   	test_kindr      s)    sAT1r9   c                  N    t          t          d          d          dk    sJ d S )Nr   r3   r4   0d0)r'   r   r   r9   r7   test_literal_dpr      s,    Af555>>>>>>r9   c            	         t                      st          d           t          st          d           t          st          d           t	          dd          } t	          dd          }t          t          | d	z            |z  d
z            g}t          | |gd          }t          t          d||g|t          d          g          }t          |gd          }t          j                    5 }t          d|fdd                    d          dz   fg|          \  }}t!          |                    t                              g d                    dz
            dk     sJ 	 d d d            d S # 1 swxY w Y   d S )Nr;   zCython not found.zNumPy not found.r<   Tr2   srV   r=   r>   r@   rA   rD   r   rE   rF   z_rms.pyxz#cython: language_level={}
3zscdef extern double rms(double*, int*)
def py_rms(double[::1] x):
    cdef int s = x.size
    return rms(&x[0], &s)
)	build_dir)       @g      @r   r   gҩ*@g+=)r(   r,   r.   npr   r	   r!   r"   r   r
   r#   r$   tempfileTemporaryDirectoryr*   formatabspy_rms)	r<   r   rN   rO   rP   f_modfolderr   rS   s	            r7   test_bind_Cr      s   == +)*** " !!! !   sAsD!!!ADAJJqL2%&&'D
s4
(
(
(C	D%#q4u	O	O	OBbT9--E		$	&	& 
L&/.55c::..01
   	T 3::bhh'7'7'78899FBCCeKKKKK
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
Ls   2A6E66E:=E:)ErL   r   sympy.core.symbolr   r   sympy.codegen.astr   r   r   r   r	   r
   r   r   r   r   sympy.codegen.fnodesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   sympy.codegen.futilsr$   sympy.core.exprr%   sympy.externalr&   sympy.printing.codeprinterr'   sympy.utilities._compilationr(   r)   r*   !sympy.utilities._compilation.utilr+   sympy.testing.pytestr,   r-   r.   r   r8   rT   rf   rs   r   r   r   r   r   r   r   r   r   r9   r7   <module>r      sc   				  / / / / / / / /                                                                    
 2 1 1 1 1 1 % % % % % % ( ( ( ( ( ( , , , , , , f f f f f f f f f f 7 7 7 7 7 7 , , , , , , , ,	x	 	 ]78 8 8 + + +0 
+ +  +* + + +    * 
& &  &RR R R` ` `" " "
  
? ? ? L L L L Lr9   