o
    jg$                     @   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fromlistcindex)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   aintc)type   b   r   value   float32          )nbitsnmantnexp   dz2.39999999999999995   	precision)expr1convert_to_exprreturn_exprr   r
   r   r   r   r   r   r   )src1ls r.   Y/var/www/html/zoom/venv/lib/python3.10/site-packages/sympy/parsing/tests/test_sym_expr.pytest_c_parse   sN   





r0   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   



















r=   c                  C   0   t d } t| d t }|g dksJ d S )N<            a = b + c
            s = p * q / r
            r1   )
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)r;   r)   r*   convert_to_python)r,   exp_pyr.   r.   r/   test_convert_py      rB   c                  C   r>   )Nr?   r1   )
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)r;   r)   r*   convert_to_fortran)r,   exp_fortr.   r.   r/   test_convert_fort   rC   rF   c                  C   r>   )Nr?   r1   )
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;)r;   r)   r*   convert_to_c)r,   exp_cr.   r.   r/   test_convert_c   rC   rI   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.   r;   r.   r/   <lambda>   s    z!test_exceptions.<locals>.<lambda>c                   S   s
   t ddS )Nr   moder   r.   r.   r.   r/   rL         
 c                      s   t  ddS )Nr%   rM   r   r.   rK   r.   r/   rL      s    )r   
ValueErrorNotImplementedErrorr.   r.   rK   r/   test_exceptions   s   rR   c                   C   s    t tdd  t tdd  d S )Nc                   S   
   t ddS )NrJ   r   r   r.   r.   r.   r/   rL      rO   ztest_raise.<locals>.<lambda>c                   S   rS   )Nzinteger :: ar1   r   r.   r.   r.   r/   rL      rO   )r   ImportErrorr.   r.   r.   r/   
test_raise   s   rU   N)sympy.parsing.sym_exprr   sympy.testing.pytestr   sympy.externalr   r   cinsympy.codegen.astr
   r   r   r   r   r   
sympy.corer   r   sympy.core.symbolr   r)   r;   r0   r=   rB   rF   rI   rR   rU   r.   r.   r.   r/   <module>   s(     .>