o
    GZh$                     @   s   d dl mZ d dlmZ d dlmZ edZedddgidZer`er`d d	lm	Z	m
Z
mZmZmZmZ d d
lmZmZ d dlmZ e ZdZdd Zdd Zdd Zdd Zdd Zdd ZdS esjesldd ZdS dS dS )    SymPyExpression)raises)import_modulelfortranzclang.cindexfromlistZcindex)Zimport_kwargs)VariableIntBaseTypeFloatBaseTypeStringDeclaration	FloatType)IntegerFloat)Symbolz5    integer :: a, b, c, d
    real :: p, q, r, s
    c               
   C   s   d} t | d t  }|d tttdttddks J |d tttdttdtd	d
ks7J |d tttdt	tdtdtdtdddksUJ |d tttdt	tdtdtdtddt
dddd
ksxJ d S )Nz8        int a, b = 4;
        float c, d = 2.4;
        cr   aZintc)type   b   r   value   Zfloat32          )nbitsZnmantZnexp   dz2.39999999999999995   	precision)expr1convert_to_exprreturn_exprr   r   r   r	   r   r   r   r   )src1ls r(   P/var/www/auris/lib/python3.10/site-packages/sympy/parsing/tests/test_sym_expr.pytest_c_parse   sN   





r*   c               	   C   s  t td} |  }|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s7J |d tttd	ttdtddksNJ |d
 tttdttdtddkseJ |d tttdt	tdt
ddddks~J |d tttdt	tdt
ddddksJ |d tttdt	tdt
ddddksJ |d tttdt	tdt
ddddksJ d S )Nfr   r   integerr   r   r   r   r   r   r   r   prealz0.0r    r!      q   r   s)r   srcr%   r   r   r   r	   r   r   r
   r   )exprr'   r(   r(   r)   test_fortran_parseB   st   



















r7   c                  C   0   t d } t| d t }|g dksJ d S )N<            a = b + c
            s = p * q / r
            r+   )
za = 0zb = 0zc = 0zd = 0zp = 0.0zq = 0.0zr = 0.0zs = 0.0z	a = b + cz	s = p*q/r)r5   r#   r$   Zconvert_to_python)r&   Zexp_pyr(   r(   r)   test_convert_py      r:   c                  C   r8   )Nr9   r+   )
z      integer*4 az      integer*4 bz      integer*4 cz      integer*4 dz      real*8 pz      real*8 qz      real*8 rz      real*8 sz      a = b + cz      s = p*q/r)r5   r#   r$   Zconvert_to_fortran)r&   Zexp_fortr(   r(   r)   test_convert_fort   r;   r<   c                  C   r8   )Nr9   r+   )
z	int a = 0z	int b = 0z	int c = 0z	int d = 0zdouble p = 0.0zdouble q = 0.0zdouble r = 0.0zdouble s = 0.0z
a = b + c;z
s = p*q/r;)r5   r#   r$   Zconvert_to_c)r&   Zexp_cr(   r(   r)   test_convert_c   r;   r=   c                      s:   d t t fdd t tdd  t t fdd d S )Nint a;c                      s   t  S )Nr   r(   r5   r(   r)   <lambda>   s    z!test_exceptions.<locals>.<lambda>c                   S   s
   t ddS )Nr   moder   r(   r(   r(   r)   r@         
 c                      s   t  ddS )Nr   rA   r   r(   r?   r(   r)   r@      s    )r   
ValueErrorNotImplementedErrorr(   r(   r?   r)   test_exceptions   s   rF   c                   C   s    t tdd  t tdd  d S )Nc                   S   
   t ddS )Nr>   r   r   r(   r(   r(   r)   r@      rC   ztest_raise.<locals>.<lambda>c                   S   rG   )Nzinteger :: ar+   r   r(   r(   r(   r)   r@      rC   )r   ImportErrorr(   r(   r(   r)   
test_raise   s   rI   N)Zsympy.parsing.sym_exprr   Zsympy.testing.pytestr   Zsympy.externalr   r   ZcinZsympy.codegen.astr   r	   r
   r   r   r   Z
sympy.corer   r   Zsympy.core.symbolr   r#   r5   r*   r7   r:   r<   r=   rF   rI   r(   r(   r(   r)   <module>   s(     .>