
    g                         d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZ  ed          \  ZZd Zd Zd Zd	 Zd
 Zd Zd Zd Z d Z!d Z"dS )    )symbols)ccode)DeclarationVariablefloat64int64String	CodeBlock)alignofCommaOperatorgotoLabelPreDecrementPostDecrementPreIncrementPostIncrementsizeofunionstructzx yc                      t          t                    } t          |           dk    sJ  | j        | j         | k    sJ d S )Nz
alignof(x))r   xr   funcargs)axs    [/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/codegen/tests/test_cnodes.pytest_alignofr      sF    	B99$$$$27BG""""""    c                      t          t          t                    dt          z            } t          |           dk    sJ  | j        | j         | k    sJ d S )N   z(++(x), 2*x))r   r   r   r   r   r   )exprs    r   test_CommaOperatorr!      sT    a!A#..D;;.((((49di D((((((r   c                     d} t          |           } |j        |j         |k    sJ |t          d          k    sJ t          |          dk    sJ t	          |           }t          |          dk    sJ |t	          d          k    sJ |t	          d          k    sJ t          t                    g}t	          | |          }|j        t          d          k    sJ |j	        t          t          t                              k    sJ t          |          dk    sJ t          t                    t          t                    g}t	          | |          }|j        t          d          k    sJ |j	        t          t          t                    t          t                              k    sJ t          |          dk    sJ d S )N
early_exitfoobarzgoto early_exitzearly_exit:zearly_exit:
++(x);z#early_exit:
{
   ++(x);
   --(y);
})r   r   r   r   r   r   r   namer	   bodyr
   r   y)sgl1r&   l2s        r   test_goto_Labelr,      s   AQA1616?aX88(((((	qB99%%%%|$$$$$$x    OOD	q$B7f\******7iQ00000099      OO\!__-D	q$B7f\******7iQaAAAAAA99 % & & & & & &r   c                      t          t                    }  | j        | j         | k    sJ t	          |           dk    sJ d S )Nz--(x))r   r   r   r   r   ps    r   test_PreDecrementr0   3   E    QA1616?a88wr   c                      t          t                    }  | j        | j         | k    sJ t	          |           dk    sJ d S )Nz(x)--)r   r   r   r   r   r.   s    r   test_PostDecrementr3   9   G    aA1616?a88wr   c                      t          t                    }  | j        | j         | k    sJ t	          |           dk    sJ d S )Nz++(x))r   r   r   r   r   r.   s    r   test_PreIncrementr6   ?   r1   r   c                      t          t                    }  | j        | j         | k    sJ t	          |           dk    sJ d S )Nz(x)++)r   r   r   r   r   r.   s    r   test_PostIncrementr8   E   r4   r   c                      d} t          |           }t          |          d| z  k    sJ  |j        |j         |k    sJ |j        rJ |                                t          d          t          d          hk    sJ d S )Nzunsigned intz
sizeof(%s)r   )r   r   r   r   is_Atomatomsr	   )typenameszs     r   test_sizeofr>   K   s    H			B99x/////27BG""""z88::&00&2B2BCCCCCCCr   c                     t          t          t                    t          t          t                    }} t	          d| |g          } |j        |j         |k    sJ |t	          d| |f          k    sJ |t	          d|| f          k    sJ t          |j                  dk    sJ t          |j
                  dk    sJ t          d |j
        D                       sJ t          |          dk    sJ d S )Ntypevec2r   c              3   @   K   | ]}t          |t                    V  d S N
isinstancer   .0args     r   	<genexpr>ztest_struct.<locals>.<genexpr>\   ,      FFz#{++FFFFFFr   z)struct vec2 {
   double x;
   double y;
})r   r   r   r'   r   r   r   strr%   lendeclarationsallr   )vxvyr(   s      r   test_structrR   T   s   ag&&&(A(A(ABvBx  A1616?avBx((((((vBx((((((qv;;&    q~!####FFq~FFFFFFFF88	     r   c                     t          t          t                    t          t          t                    }} t          d| |g          } |j        |j         |k    sJ |t          d| |f          k    sJ t          |j	                  dk    sJ t          |j                  dk    sJ t          d |j        D                       sJ t          |          dk    sJ d S )Nr@   dualuser   c              3   @   K   | ]}t          |t                    V  d S rD   rE   rG   s     r   rJ   ztest_union.<locals>.<genexpr>k   rK   r   z,union dualuse {
   double x;
   int64_t y;
})r   r   r   r'   r   r   r   r   rL   r%   rM   rN   rO   r   )rP   rQ   us      r   
test_unionrW   d   s    ag&&&(?(?(?Bi"b""A1616?ai"b******qv;;)####q~!####FFq~FFFFFFFF88	     r   N)#sympy.core.symbolr   sympy.printing.codeprinterr   sympy.codegen.astr   r   r   r   r	   r
   sympy.codegen.cnodesr   r   r   r   r   r   r   r   r   r   r   r   r'   r   r!   r,   r0   r3   r6   r8   r>   rR   rW    r   r   <module>r]      s   % % % % % % , , , , , , V V V V V V V V V V V V V V V V                         
 wu~~1# # #) ) )& & &6        D D D       r   