
    \h                        S SK r S SKrS SKJrJr  S SKJrJrJrJ	r	J
r
JrJrJrJrJr  S SKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%  S SK&J'r'  S SK(J)r)  S SK*J+r+  S SK,J-r-  S S	K.J/r/J0r0J1r1  S S
K2J3r3  S SK4J5r5J6r6  \+" S5      r7\+" S5      r8S r9\3S 5       r:\6\3S 5       5       r;\3S 5       r<\3S 5       r=\6\3S 5       5       r>S r?S r@S rAS rBS rC\3S 5       rDg)    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                  N    [        SSS9n [        U 5      n[        USS9S:X  d   eg )NxTr
   freesource_formatzsize(x))r   r   r'   )r1   sxs     W/var/www/auris/envauris/lib/python3.13/site-packages/sympy/codegen/tests/test_fnodes.py	test_sizer8      s,    sA	aB6*i777    c                     [        5       (       d  [        S5        [        SSS9n [        [	        U S-  5      [        U 5      -  S-  5      /n[        U S/SS	9n[        [        S
U/U5      n[        U/S5        [        S[        U/S5      4S/SS9u  u  pEnSU;   d   eUS:X  d   eUS   [        R                  :X  d   eg )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 "(f7.5)", 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JtAw&+,-D
uT
*C	D%#	5BbT9%0	$bT956		2 	Vd R<<"((***r9   c                     [        5       (       d  [        S5        [        SSS9u  p[        US-  USSS5      n[	        SUS	/5      n[        U S
/[        /S9n [        SU R                  5       [        X5      [        U /5      /5      n[        USSS9n[        SU4/SS9u  u  pgnSR                  5        H
  n	X;   a  M
   e   US:X  d   eUS   [        R                  :X  d   eg )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   s     ==)*5$'DA
1aQ
*C	3R.	)BacU;-0A9	1qc
 D
 F;D0:t2D1ETRVd&,,. /R<<"((***r9   c                  ^   [        SSS9n [        R                  " U S5      n[        U5      n[	        X S-   /5      n[        SX#/5      n[        5       (       d  [        S5        [        S[        US	S
94/SS9u  u  pVnSU;   d   eSU;   d   eUS:X  d   eUS   [        R                  :X  d   eg )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!qS?D54,'D==)*0:uTTV?W2X1YaefVd6>>6>>R<<"((***r9   c            	         [        SSS9n [        R                  " U 5      n[        [        SU/[        U S-  5      /5      n[        S/ U/5      n[        SS/5      n[        S[        SS/S	9[        S
U/5      /5      n[        5       (       d  [        S5        [        S[        USS94S[        USS94/SS9u  u  pgnSU;   d   e[        S5      U;   d   eUS:X  d   eg )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   `   s    sA


1
C	D%#1	?BHb2$'F53%(GXHE7#"G,-  F ==)*0	uVb12	U6B/02 Vd 6>>u:R<<r9   c                     [        SSS9n [        SSS9n[        R                  " U [        [        5      [
        4S9n[        R                  " U5      n[        S[        5      n[        [        [        X/5      [        S5      US	-  -  5      /USU5      n[        S
U/[        U5      [        U5      [        U[        U 5      5      U/5      n[        SSS9n[        R                  " U[        S5      /S9n[        SU/S9n	[        S[!        X/S9[        U5      [#        Xh/5      [%        ['        U5      U/5      /5      n
[)        5       (       d  [+        S5        [-        S[/        U	SS94S[/        U
SS94/SS9u  u  pn[1        SS5       Vs/ s H  nSUS	-  -  PM     nn[3        [5        U5      5      S S U;   d   eU H  n[3        U5      S S U;   a  M   e   US:X  d   eg s  snf )NrTr2   r`   rV   rZ   nri   r=   fr1   rW   mymod)definitionsrj   rx   r;   za.f90rk   rl   zb.f90rH      g      ?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
LC


1
C
3
 C71c?JqM!Q$$67!SG S3%CC3Q 	" C 	sAAil^4D
se
,C5CeDsF#tDz4 !	 D ==)*0	%b)*	%r*+2 Vd #1a[
)[3q!t8[C
)s3x="'''1vcr{f$$$ R<<	 *s   G#c                  ~    [        SSS9n [        [        SU 5      (       d   e[        [        SU 5      SSS9S:X  d   eg )	Nr1   TrV   ri   _   r3   r\   zisign(1, x))r   r%   r   r'   r1   s    r7   
test_isignr      s@    sD!AUAq!!!!q!r@MQQQr9   c                      [        S5      n [        [        SU 5      (       d   e[        [        [	        S5      U 5      SSS9S:X  d   eg )Nr1   ri   r   r3   r\   zdsign(1d0, x))r   r%   r   r'   r   r   s    r7   
test_dsignr      sC    sAUAq!!!!z!}a(2VLP____r9   c                  J    [        S5      n [        [        SU 5      (       d   eg )Nr1   ri   )r   r%   r   r   s    r7   
test_cmplxr      s     sAUAq!!!!r9   c                  H    [        S5      n [        [        U 5      (       d   eg )Nr1   )r   r%   r   r   s    r7   	test_kindr      s    sAT1r9   c                  6    [        [        S5      SS9S:X  d   eg )Nr   r3   r4   0d0)r'   r    r9   r7   test_literal_dpr      s    Af5>>>r9   c            	      t   [        5       (       d  [        S5        [        (       d  [        S5        [        (       d  [        S5        [	        SSS9n [	        SSS9n[        [        U S	-  5      U-  S
-  5      /n[        X/SS9n[        [        SX1/U[        S5      /S9n[        U/S5      n[        R                  " 5        n[        SU4SSR                  S5      S-   4/US9u  px[!        UR#                  [        R                  / SQ5      5      S-
  5      S:  d   e S S S 5        g ! , (       d  f       g = f)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   ==)*6 !2 sAsD!ADAJqL2%&'D
s4
(C	D%#4u	OBbT9-E		$	$	&&/.55c:..01
 	 3::bhh'789FBCeKKK 
'	&	&s   AD))
D7)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      s   	  /       
 2 % ( , f f 7 ,	x	 78 + +0 
+  +* + +   * 
&  &RR`"

? L Lr9   