o
    GZh4.  ć                   @   sä   d dl mZ d dlmZ d dlmZ edZerld 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	d
 Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z!dd Z"dS dd Z#dS )é    )Ś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                  C   s  t d } tt d}t| d}| ” }| ” }tddD ]}t|| ts&J t|| ts/J qt|d ts9J |d tttdt	t
dtddksPJ |d	 tttd
t	t
dtddksgJ |d tttdt	t
dtddks~J |d tttdt	t
dtddksJ |d tttdtt
dtddks¬J |d tttdtt
dtddksĆJ |d tttdtt
dtddksŚJ |d tttdtt
dtddksńJ |d tttdtdtd
 td ksJ d S )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   )Śsrc1Zexpr3Zexpr4Śls1Zls2Śi© r2   śV/var/www/auris/lib/python3.10/site-packages/sympy/parsing/tests/test_fortran_parser.pyŚtest_sym_expr   s   ’’


ż
’
ż
’
ż
’
ż
’
ż
’
ż
’
ż
’
ż
’
žr4   c                  C   sö   t d } t | d” t ” }tddD ]}|dk r#t|| ts"J qt|| ts,J q|d ttt	dtt	dks@J |d ttt	d	tt	d
ksSJ |d ttt	dtt	dksfJ |d ttt	dtt	dksyJ d S )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-   r.   r   r   r   r   ©r/   r0   Śiterr2   r2   r3   Śtest_assignmentc   s4   ’’	


ž


ž


ž

žr=   c                  C   sČ   t d } t | d” t ” }tddD ]}t|| tsJ q|d tttdtdtd ks4J |d tttd	tdtd ksIJ |d
 tttdtdtd td ksbJ d S )NzR            c = a + b
            d = a + c
            s = p + q + r
            r   r   r8   r   r   r   r6   r!   r7   r*   r#   r'   r)   ©	r+   r9   r:   r,   r-   r.   r   r   r   r;   r2   r2   r3   Śtest_binop_add   ó(   ’’

ž

ž
žr?   c                  C   sČ   t d } t | d” t ” }tddD ]}t|| tsJ q|d tttdtdtd ks4J |d tttd	tdtd ksIJ |d
 tttdtdtd td ksbJ d S )NzR            c = a - b
            d = a - c
            s = p - q - r
            r   r   r8   r   r   r   r6   r!   r7   r*   r#   r'   r)   r>   r;   r2   r2   r3   Śtest_binop_sub”   r@   rA   c                  C   sČ   t d } t | d” t ” }tddD ]}t|| tsJ q|d tttdtdtd ks4J |d tttd	tdtd ksIJ |d
 tttdtdtd td ksbJ d S )NzR            c = a * b
            d = a * c
            s = p * q * r
            r   r   r8   r   r   r   r6   r!   r7   r*   r#   r'   r)   r>   r;   r2   r2   r3   Śtest_binop_mul¼   r@   rB   c                  C   sź   t d } t | d” t ” }tddD ]}t|| tsJ q|d tttdtdtd ks4J |d tttd	tdtd ksIJ |d
 tttdtdtd ks^J |d tttdtdtd kssJ d S )Nzd            c = a / b
            d = a / c
            s = p / q
            r = q / p
            r   r   r5   r   r   r   r6   r!   r7   r*   r#   r'   r8   r)   r>   r;   r2   r2   r3   Śtest_binop_div×   s0   ’’	

ž

ž

ž
žrC   c                  C   s  t d } t | d” t ” }tddD ]}t|| tsJ q|d tttdtdtd td ks8J |d	 tttdtdtd td ksQJ |d
 tttdtdtd td ksjJ |d tttdtdtd tdtd  ksJ d S )Nzx            d = a + b - c
            c = a * b + d
            s = p * q / r
            r = p * s + q / p
            r   r   r5   r!   r   r   r   r6   r7   r*   r#   r'   r)   r8   r>   r;   r2   r2   r3   Śtest_mul_binopö   s0   ’’	

ž

ž

ž
žrD   c                  C   s6  d} t  | d” t  ” 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dt
ttdttdtddt
ttdttdtddt
ttdttdtddt
ttd	ttdtddtttdttdtd	tttdd
ksJ qd S )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)r9   r:   r,   r.   r   r   r
   r   r   r   r   r   r   r   r   )r/   r<   r2   r2   r3   Śtest_function  sl   


ž
ż’
ż’
ż’
ż’
ż’
žŲłžrJ   c                  C   s¤  t  td” t  ” } t  ” D ]	}t|tsJ q| d tttdtt	dt
ddks/J | d tttdtt	dt
ddksFJ | d tttd	tt	dt
ddks]J | d
 tttdtt	dt
ddkstJ | d tttdtt	dtddksJ | d tttdtt	dtddks¢J | d tttdtt	dtddks¹J | d tttdtt	dtddksŠJ d S )Nr   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r   r*   )r9   r:   r+   r,   r.   r   r   r   r   r
   r   r	   r   )Zlsr<   r2   r2   r3   Śtest_varT  sx   
ż
’
ż
’
ż
’
ż
’
ż
’
ż
’
ż
’
ż’rK   c                      s0   ddl m  tt fdd ttdd  d S )Nr   ©ŚASR2PyVisitorc                      s     S )Nr2   r2   rL   r2   r3   Ś<lambda>  s    ztest_raise.<locals>.<lambda>c                   S   s   t dddS )Nś r   )Śmoder   r2   r2   r2   r3   rN     s    )Z$sympy.parsing.fortran.fortran_parserrM   r   ŚImportErrorr2   r2   rL   r3   Ś
test_raise  s   rR   N)$Zsympy.testing.pytestr   Zsympy.parsing.sym_exprr   Zsympy.externalr   r   Zsympy.codegen.astr   r   r	   r
   r   r   r   r   r   Z
sympy.corer   r   r   Zsympy.core.symbolr   r9   Zexpr2r+   r4   r=   r?   rA   rB   rC   rD   rJ   rK   rR   r2   r2   r2   r3   Ś<module>   s*    ,L# >?