
    sg4.                         d dl mZ d dlmZ d dlmZ  ed      ZerRd dl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 d dlmZ  e       Z e       ZdZd	 Zd
 Zd Zd Zd Zd Zd Z d Z!d Z"yd Z#y)    )raisesSymPyExpression)import_modulelfortran)	VariableIntBaseTypeFloatBaseTypeStringReturnFunctionDefinition
AssignmentDeclaration	CodeBlock)IntegerFloatAdd)Symbolz5    integer :: a, b, c, d
    real :: p, q, r, s
    c                     t         dz   } t        t         d      }t        | d      }|j                         }|j                         }t        dd      D ],  }t	        ||   t
              sJ t	        ||   t
              r,J  t	        |d   t              sJ |d   t        t        t        d      t        t        d            t        d                  k(  sJ |d	   t        t        t        d
      t        t        d            t        d                  k(  sJ |d   t        t        t        d      t        t        d            t        d                  k(  sJ |d   t        t        t        d      t        t        d            t        d                  k(  sJ |d   t        t        t        d      t        t        d            t        d                  k(  sJ |d   t        t        t        d      t        t        d            t        d                  k(  sJ |d   t        t        t        d      t        t        d            t        d                  k(  sJ |d   t        t        t        d      t        t        d            t        d                  k(  sJ |d   t        t        t        d            t        d      t        d
      z   t        d      z
        k(  sJ y )Nz%            d = a + b -c
            fr         aintegertypevalue   b   c   d   preal           q   rs)srcr   return_exprrange
isinstancer   r   r   r   r	   r   r   r
   r   )src1expr3expr4ls1ls2is         Z/var/www/html/venv/lib/python3.12/site-packages/sympy/parsing/tests/test_fortran_parser.pytest_sym_exprr8      s    	  C(S)!!q! 	3Ac!fk222c!fk222	3 #a&*---1vs"6)#45

 
 	
 
 1vs"6)#45

 
 	
 
 1vs"6)#45

 
 	
 
 1vs"6)#45

 
 	
 
 1vs$VF^4c

 
 	
 
 1vs$VF^4c

 
 	
 
 1vs$VF^4c

 
 	
 
 1vs$VF^4c

 
 	
 
 1vVC[!3K&+%s3
 
 	
 
    c            	         t         dz   } t        j                  | d       t        j                         }t	        dd      D ]2  }|dk  rt        ||   t              rJ t        ||   t              r2J  |d   t        t        t        d            t        t        d                  k(  sJ |d   t        t        t        d	            t        t        d
                  k(  sJ |d   t        t        t        d            t        t        d                  k(  sJ |d   t        t        t        d            t        t        d                  k(  sJ y )NzT            a = b
            c = d
            p = q
            r = s
            r   r      r   r   r   	   r!   r#   
   r%   r)      r+   r,   )
r-   expr1convert_to_exprr.   r/   r0   r   r   r   r   r1   r4   iters      r7   test_assignmentrC   c   sT    	 	dC(!!RL 	9Dax!#d)[999!#d)Z888		9
 1vVC[!VC[!
 
 	
 
 1vVC[!VC[!
 
 	
 
 2w*VC[!VC[!
 
 	
 
 2w*VC[!VC[!
 
 	
 
r9   c                  0   t         dz   } t        j                  | d       t        j                         }t	        dd      D ]  }t        ||   t              rJ  |d   t        t        t        d            t        d      t        d      z         k(  sJ |d   t        t        t        d	            t        d      t        d      z         k(  sJ |d
   t        t        t        d            t        d      t        d      z   t        d      z         k(  sJ y )NzR            c = a + b
            d = a + c
            s = p + q + r
            r   r   r>   r!   r   r   r<   r#   r=   r,   r%   r)   r+   	r-   r?   r@   r.   r/   r0   r   r   r   rA   s      r7   test_binop_addrF          	 	dC(!!RL 	5Dc$i444	51vVC[!3K&+%
 
 	
 
 1vVC[!3K&+%
 
 	
 
 2w*VC[!3K&+%s3
 
 	
 
r9   c                  0   t         dz   } t        j                  | d       t        j                         }t	        dd      D ]  }t        ||   t              rJ  |d   t        t        t        d            t        d      t        d      z
        k(  sJ |d   t        t        t        d	            t        d      t        d      z
        k(  sJ |d
   t        t        t        d            t        d      t        d      z
  t        d      z
        k(  sJ y )NzR            c = a - b
            d = a - c
            s = p - q - r
            r   r   r>   r!   r   r   r<   r#   r=   r,   r%   r)   r+   rE   rA   s      r7   test_binop_subrI      rG   r9   c                  0   t         dz   } t        j                  | d       t        j                         }t	        dd      D ]  }t        ||   t              rJ  |d   t        t        t        d            t        d      t        d      z        k(  sJ |d   t        t        t        d	            t        d      t        d      z        k(  sJ |d
   t        t        t        d            t        d      t        d      z  t        d      z        k(  sJ y )NzR            c = a * b
            d = a * c
            s = p * q * r
            r   r   r>   r!   r   r   r<   r#   r=   r,   r%   r)   r+   rE   rA   s      r7   test_binop_mulrK      rG   r9   c                     t         dz   } t        j                  | d       t        j                         }t	        dd      D ]  }t        ||   t              rJ  |d   t        t        t        d            t        d      t        d      z        k(  sJ |d   t        t        t        d	            t        d      t        d      z        k(  sJ |d
   t        t        t        d            t        d      t        d      z        k(  sJ |d   t        t        t        d            t        d      t        d      z        k(  sJ y )Nzd            c = a / b
            d = a / c
            s = p / q
            r = q / p
            r   r   r;   r!   r   r   r<   r#   r=   r,   r%   r)   r>   r+   rE   rA   s      r7   test_binop_divrM      sG    	 	dC(!!RL 	5Dc$i444	51vVC[!3K&+%
 
 	
 
 1vVC[!3K&+%
 
 	
 
 2w*VC[!3K&+%
 
 	
 
 2w*VC[!3K&+%
 
 	
 
r9   c            	         t         dz   } t        j                  | d       t        j                         }t	        dd      D ]  }t        ||   t              rJ  |d   t        t        t        d            t        d      t        d      z   t        d      z
        k(  sJ |d	   t        t        t        d            t        d      t        d      z  t        d      z         k(  sJ |d
   t        t        t        d            t        d      t        d      z  t        d      z        k(  sJ |d   t        t        t        d            t        d      t        d      z  t        d      t        d      z  z         k(  sJ y )Nzx            d = a + b - c
            c = a * b + d
            s = p * q / r
            r = p * s + q / p
            r   r   r;   r#   r   r   r!   r<   r=   r,   r%   r)   r+   r>   rE   rA   s      r7   test_mul_binoprO      st    	 	dC(!!RL 	5Dc$i444	51vVC[!3K&+%s3
 
 	
 
 1vVC[!3K&+%s3
 
 	
 
 2w*VC[!3K&+%s3
 
 	
 
 2w*VC[!3K&+%sfSk(AA
 
 	
 
r9   c                  6   d} t         j                  | d       t         j                         D ]  }t        |t              sJ |t	        t        t        d            t        d      t        t        d            t        t        d            ft        t        t        t        d      t        t        d            t        d                  t        t        t        d      t        t        d            t        d                  t        t        t        d      t        t        d            t        d                  t        t        t        d      t        t        d            t        d                  t        t        t        d	      t        t        d            t        d                  t        t        t        d            t        t        d      t        d	                  t        t        t        d                        
      k(  rJ  y )Nzg        integer function f(a,b)
        integer :: x, y
        f = x + y
        end function
        r   r   r   r   r   r   xy)name
parametersbody)r?   r@   r.   r0   r   r	   r   r   r   r   r   r   r   r   r   )r1   rB   s     r7   test_functionrV     s    	dC(%%' 3	Dd$6777-F9-.C[VC[)VC[)  "3K!,VI->!?")!*   "3K!,VI->!?")!*   "3K!,VI->!?")!*   "3K!,VI->!?")!*   "3K!,VI->!?")!*  -F3K5 8F3K01Q)1 1 1 13	r9   c                     t         j                  t        d       t         j                         } t         j                         D ]  }t	        |t
              rJ  | d   t        t        t        d      t        t        d            t        d                  k(  sJ | d   t        t        t        d      t        t        d            t        d                  k(  sJ | d   t        t        t        d	      t        t        d            t        d                  k(  sJ | d
   t        t        t        d      t        t        d            t        d                  k(  sJ | d   t        t        t        d      t        t        d            t        d                  k(  sJ | d   t        t        t        d      t        t        d            t        d                  k(  sJ | d   t        t        t        d      t        t        d            t        d                  k(  sJ | d   t        t        t        d      t        t        d            t        d                  k(  sJ y )Nr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r   r,   )r?   r@   r-   r.   r0   r   r   r   r	   r   r   r
   r   )lsrB   s     r7   test_varrY   T  sR   c3' %%' 	1DdK000	1!us"6)#45

 
 	
 
 !us"6)#45

 
 	
 
 !us"6)#45

 
 	
 
 !us"6)#45

 
 	
 
 !us$VF^4c

 
 	
 
 !us$VF^4c

 
 	
 
 !us$VF^4c

 
 	
 
 !us$VF^4c

 
 	
 
r9   c                  Z     ddl m  t        t         fd       t        t        d        y )Nr   ASR2PyVisitorc                               S )N r[   s   r7   <lambda>ztest_raise.<locals>.<lambda>  s	    MO r9   c                      t        dd      S )N r   )moder   r^   r9   r7   r_   ztest_raise.<locals>.<lambda>  s    OC$D r9   )$sympy.parsing.fortran.fortran_parserr\   r   ImportErrorr[   s   @r7   
test_raisere     s    F{34{DEr9   N)$sympy.testing.pytestr   sympy.parsing.sym_exprr   sympy.externalr   r   sympy.codegen.astr   r	   r
   r   r   r   r   r   r   
sympy.corer   r   r   sympy.core.symbolr   r?   expr2r-   r8   rC   rF   rI   rK   rM   rO   rV   rY   re   r^   r9   r7   <module>rm      s    ' 2 ($; ; ; /.( EECJ
X 
F
6
6
6
>
@;|<
~Fr9   