U
    ZÊ¹j$  ã                   @   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nesÎesÎdd„ Z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@t‚|d tttdƒttdƒƒt	d	ƒd
�ƒksnt‚|d tttdƒt
tdƒt	dƒt	dƒt	dƒd�d�ƒksªt‚|d tttdƒt
tdƒt	dƒt	dƒt	dƒd�tddd�d
�ƒksðt‚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.3999999999999999é5   ©Ú	precision)Úexpr1Úconvert_to_exprÚreturn_exprr   r   r   r	   r   ÚAssertionErrorr   r   r   )Úsrc1Úls© r)   ú`/var/www/html/bwave/python/venv/lib/python3.8/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@t	‚|d tttdƒttdƒƒtdƒd�ƒksnt	‚|d tttd	ƒttdƒƒtdƒd�ƒksœt	‚|d
 tttdƒttdƒƒtdƒd�ƒksÊt	‚|d tttdƒt
tdƒƒtddd�d�ƒksüt	‚|d tttdƒt
tdƒƒtddd�d�ƒk�s0t	‚|d tttdƒt
tdƒƒtddd�d�ƒk�sdt	‚|d tttdƒt
tdƒƒtddd�d�ƒk�s˜t	‚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
   r   )Úexprr(   r)   r)   r*   Útest_fortran_parseB   st    

ýÿ

ýÿ

ýÿ

ýÿ


ýÿ


ýÿ

ýÿ

ýÿr8   c                  C   s@   t d } t | d¡ t ¡ }|ddddddd	d
ddg
ks<t‚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)r6   r#   r$   Zconvert_to_pythonr&   )r'   Zexp_pyr)   r)   r*   Útest_convert_py€   s$    ÿÿör:   c                  C   s@   t d } t | d¡ t ¡ }|ddddddd	d
ddg
ks<t‚d S )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)r6   r#   r$   Zconvert_to_fortranr&   )r'   Zexp_fortr)   r)   r*   Útest_convert_fort˜   s$    ÿÿör;   c                  C   s@   t d } t | d¡ t ¡ }|ddddddd	d
ddg
ks<t‚d S )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;)r6   r#   r$   Zconvert_to_cr&   )r'   Zexp_cr)   r)   r*   Útest_convert_c°   s$    ÿÿö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)   ©r6   r)   r*   Ú<lambda>Ê   ó    z!test_exceptions.<locals>.<lambda>c                   S   s
   t dd�S )Nr   ©Úmoder   r)   r)   r)   r*   r?   Ë   r@   c                      s   t ˆ dd�S )Nr   rA   r   r)   r>   r)   r*   r?   Ì   r@   )r   Ú
ValueErrorÚNotImplementedErrorr)   r)   r>   r*   Útest_exceptionsÈ   s    rE   c                   C   s    t tdd„ ƒ t tdd„ ƒ d S )Nc                   S   s
   t ddƒS )Nr=   r   r   r)   r)   r)   r*   r?   Ð   r@   ztest_raise.<locals>.<lambda>c                   S   s
   t ddƒS )Nzinteger :: ar,   r   r)   r)   r)   r*   r?   Ñ   r@   )r   ÚImportErrorr)   r)   r)   r*   Ú
test_raiseÏ   s    rG   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#   r6   r+   r8   r:   r;   r<   rE   rG   r)   r)   r)   r*   Ú<module>   s$    .>
