
    gT              	          d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dl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%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z1m2Z3m4Z5m6Z7m8Z9m:Z;m<Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN  ed      \	  ZOZPZQZRZSZTZUZVZW edd      ZX eddd      ZY eg d      ZZ ed      Z[ edeX      Z\ eddd      Z] eddd      Z^d Z_d Z`d Zad Zbd Zcd Zdd  Zed! Zfd" Zgd# Zhd$ Zid% Zjd& Zkd' Zld( Zmd) Znd* Zod+ Zpd, Zqd- Zrd. Zsd/ Ztd0 Zud1 Zvd2 Zwd3 Zxd4 Zyd5 Zzd6 Z{d7 Z|d8 Z}y)9    N)Tuple)nanooFloatInteger)Lt)symbolsSymbol)sin)Matrix)MatrixSymbol)Range)IdxIndexedBase)raises)-
Assignment	Attribute
aug_assign	CodeBlockForTypeVariablePointerDeclarationAddAugmentedAssignmentSubAugmentedAssignmentMulAugmentedAssignmentDivAugmentedAssignmentModAugmentedAssignmentvalue_constpointer_constintegerrealcomplex_int8uint8float16float32float64float80float128	complex64
complex128WhileScopeStringPrintQuotedStringFunctionPrototypeFunctionDefinitionReturnFunctionCalluntypedIntBaseTypeintcNodenone	NoneTokenTokenCommentzx, y, z, t, x0, x1, x2, a, bnTr"   A      )rC      rB   BiA22rD   B22c                  J   t        t        t               t        t        d       t        t        t               t        t        d   d       t        t        d   t               t        t
        t           t               t        t
        t           d       t        t        t              }  | j                  | j                   | k(  sJ | j                  dk(  sJ t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d	        t        t        d
        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        y )Nr   rC   r   z:=c                  8    t        t        t           t              S N)r   rE   rF   rA        Q/var/www/openai/venv/lib/python3.12/site-packages/sympy/codegen/tests/test_ast.py<lambda>z!test_Assignment.<locals>.<lambda>0   s    z!A$2rN   c                  8    t        t        t           t              S rL   )r   rE   rF   matrM   rN   rO   rP   z!test_Assignment.<locals>.<lambda>1   s    z!A$4rN   c                  *    t        t        t              S rL   )r   xrR   rM   rN   rO   rP   z!test_Assignment.<locals>.<lambda>2   s    z!S1rN   c                  *    t        t        t              S rL   )r   rT   rA   rM   rN   rO   rP   z!test_Assignment.<locals>.<lambda>3       z!Q/rN   c                  0    t        t        d   t              S )NrJ   r   rA   rR   rM   rN   rO   rP   z!test_Assignment.<locals>.<lambda>4   s    z!C&#6rN   c                  *    t        t        t              S rL   )r   rA   rT   rM   rN   rO   rP   z!test_Assignment.<locals>.<lambda>6   rV   rN   c                  "    t        t        d      S Nr   )r   rA   rM   rN   rO   rP   z!test_Assignment.<locals>.<lambda>7   s    z!Q/rN   c                  *    t        t        t              S rL   )r   rR   rA   rM   rN   rO   rP   z!test_Assignment.<locals>.<lambda>9   s    ja0rN   c                  "    t        dt              S r[   r   rT   rM   rN   rO   rP   z!test_Assignment.<locals>.<lambda>:   s    jA.rN   c                  0    t        t        t        z  d      S NrC   r^   rM   rN   rO   rP   z!test_Assignment.<locals>.<lambda>;   s    j1a0rN   c                  8    t        t        t        z   t              S rL   rX   rM   rN   rO   rP   z!test_Assignment.<locals>.<lambda><   s    jQ4rN   c                  "    t        t        d      S r[   )r   rE   rM   rN   rO   rP   z!test_Assignment.<locals>.<lambda>=   s    jA.rN   )r   rT   yrA   rR   rE   rF   funcargsopr   
ValueError	TypeError)as    rO   test_Assignmentrj   "   s   q!q!q#qvqqvqqtQqtQ1aA166166?a444<< :23
:45
:12
:/0
:67
:/0
:/0
901
9./
901
945
9./rN   c                     t        t        dt               t        t        dd       t        t        dt               t        t        d   dd       t        t        d   dt               t        t
        t           dt               t        t
        t           dd       dt        fdt        fdt        fdt        fdt        ffD ]w  \  } }t        t        | t              } |t        t              } |j                  |j                   |cxk(  r|k(  sJ  J |j                  | k(  sJ |j                  | dz   k(  rwJ  t!        t"        d	        t!        t"        d
        t!        t"        d        t!        t"        d        t!        t"        d        t!        t"        d        t!        t"        d        t!        t$        d        t!        t$        d        t!        t$        d        t!        t$        d        t!        t$        d        y )N+r   rJ   -*/%=c                  :    t        t        t           dt              S Nrl   )r   rE   rF   rA   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>Z   s    z!A$Q7rN   c                  :    t        t        t           dt              S rs   )r   rE   rF   rR   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>[   s    z!A$S9rN   c                  ,    t        t        dt              S rs   )r   rT   rR   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>\   s    z!S#6rN   c                  ,    t        t        dt              S rs   )r   rT   rA   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>]       z!S!4rN   c                  2    t        t        d   dt              S )NrJ   rl   r   rA   rR   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>^   s    z!D'3<rN   c                  ,    t        t        dt              S rs   )r   rA   rT   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>`   rw   rN   c                  $    t        t        dd      S Nrl   r   )r   rA   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>a   s    z!S!4rN   c                  ,    t        t        dt              S rs   )r   rR   rA   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>c   s    jc15rN   c                  $    t        ddt              S )Nr   rl   r   rT   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>d   s    jC3rN   c                  2    t        t        t        z  dd      S )Nrl   rC   r   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>e   s    jQQ7rN   c                  :    t        t        t        z   dt              S rs   ry   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>f   s    jQS9rN   c                  $    t        t        dd      S r|   )r   rE   rM   rN   rO   rP   z test_AugAssign.<locals>.<lambda>g   s    jC3rN   )r   rT   rc   rA   rR   rE   rF   r   r   r   r   r   rd   re   binoprf   r   rg   rh   )r   clsri   bs       rO   test_AugAssignr   @   s   q#qq#qq#sqwQqwQqtS!qtS! ()()()()()

s q%#1Iqvvqvv!(q(((((ww%ttus{"""
 :78
:9:
:67
:45
:<=
:45
:45
956
934
978
99:
934rN   c            
      ^   t         t        t        t        t        t
        g} t        dt        z  dz   ft        t           t        ft        t        ft        d   t        fg}| D ]J  }|D ]C  \  }} |||      }t        |      |j                  dt        |      dt        |      dk(  rCJ  L y )NrD   )r   r   (z, ))r   r   r   r   r   r   rT   rc   rE   rF   rG   rH   rA   repr__name__)assignment_classespairsr   lhsrhsri   s         rO   test_Assignment_printingr   j   s     
AEAI	
1q		c
	
4!	E "HCCA7cllDItCyQQQQ  "rN   c                  (   t        t        t        d      t        t        t        dz               }  | j                  | j
                   | k(  sJ | j                  t        t        t              k(  sJ | j                  t        dt        dz         k(  sJ y r`   )	r   r   rT   rc   rd   re   left_hand_sidesr   right_hand_sidescs    rO   test_CodeBlockr      st    *Q"Jq!a%$89A166166?aa+++q!a%000rN   c                     t        t        t        t        z         t        t        d      t        t        t              t        t        d      g} t        t        d      t        t        d      t        t        t        t        z         t        t        t              g}t        j                  |       }|t        | k(  sJ t        t        t        t        z         t        t        d      t        t        t              t        t        d      gt        t        fd       t        t        t        t        z         t        t        t        t        z        t        t        t              t        t        t        dz         g}t        t        t        t        z        t        t        t        dz         t        t        t        t        z         t        t        t              g}t        j                  |      }|t        | k(  sJ y )NrC   rD   c                  .    t        j                         S rL   )r   topological_sort)invalid_assignmentss   rO   rP   z1test_CodeBlock_topological_sort.<locals>.<lambda>   s    y99:MNrN   rB   )r   rT   rc   ztr   r   r   rg   ri   r   )assignmentsordered_assignmentsc1free_assignmentsfree_assignments_orderedc2r   s         @rO   test_CodeBlock_topological_sortr      sx   1a!e1a1a1a	
K 	1a1a1a!e1a
 
	#	#K	0B/0000 	1a!e1a1a1a	
 :NO 	1a!e1a!e1a1a!e	
 	1a!e1a!e1a!e1a	 
 
	#	#$4	5B45555rN   c            
         t        t        t        t        t        z         t        t        d      t        t
        t              t        t        d            } | j                  t               k(  sJ t        t        t        t        t        z         t        t        t        t        z        t        t
        t              t        t        t        dz               }|j                  t        t        hk(  sJ y )NrC   rD   rB   )
r   r   rT   rc   r   r   free_symbolssetri   r   r   r   s     rO   test_CodeBlock_free_symbolsr      s    	1a!e1a1a1a	

B ??ce###	1a!e1a!e1a1a!e	
B ??q!f$$$rN   c                     t        t        t        d      t        t        t	        t                    t        t
        t	        t                    t        t        t        t
        z              } | j                         t        t        t        d      t        t        t	        t                    t        t        t              t        t
        t              t        t        t        t
        z              k(  sJ t        t        d        t        t        t        t	        t              dz         t        t        dt	        t              z        t        t
        t        t        z              }|j                         t        t        t        t	        t                    t        t        t        dz         t        t        dt        z        t        t
        t        t        z              k(  sJ y )NrC   c                      t        t        t        d      t        t        d      t        t        d            j	                         S )NrC   rD   )r   r   rT   rc   cserM   rN   rO   rP   z$test_CodeBlock_cse.<locals>.<lambda>   s4    	1a1a*Q*) 
ce)rN   rD   )r   r   rc   rT   r   r   r   r   x0r   NotImplementedErrorx1x2r   s     rO   test_CodeBlock_cser      sD   	1a1c!f1c!f1ac	

B 668y1a2s1v1b1b1ac     !  
2s1vz"2q3q6z"1a!e

B
 668y2s1v2rAv2q2v1a!e	
 
 
 
rN   c                  *   t        t        t        t        t        t        t              gddgg            t        t        t        t        t              dt        t              z  gt        t              dz  dgg                  } | j                         t        t        t        t        t                    t        t        t        t        t        gddgg            t        t        t        t        dt        z  gt        dz  dgg                  k(  sJ y )NrB      rD      )
r   r   rG   r   rT   r   rc   rH   r   r   r   s    rO   test_CodeBlock_cse__issue_14118r      s    3CFQF3453Q3q6 2SVQYNCDE	A 557i2s1v3BA/013QrT
RUAJ789   rN   c            
      n   t        t        t        dd      t        t        t        df   t
        t        z         t        t
        dt              f      } t        t        dt        t        t        df   t
        t        z         f      }  | j                  | j                   | k(  sJ t        t        d        y )Nr   rB   rl   )rC   rD   rB   r      c                  D    t        t        t        t        t        z   f      S rL   )r   r?   rT   rc   rM   rN   rO   rP   ztest_For.<locals>.<lambda>   s    c!QQ1rN   )r   r?   r   r   rA   rT   r   rc   rd   re   r   rh   )fs    rO   test_Forr      s    AuQ{Z!Q$Q7AsA9NOPAAAadGQU!; =>A166166?a
912rN   c                     t         j                  sJ t         t         k(  sJ  G d dt              }  |        }|t         k7  sJ t         d k(  sJ t         t               k(  sJ t        j                  t         j
                   t         k(  sJ y )Nc                       e Zd Zy)test_none.<locals>.FooNr   
__module____qualname__rM   rN   rO   Foor          rN   r   )r;   is_Atomr=   r<   rd   re   )r   foos     rO   	test_noner      sp    <<<4<<e 
%C$;;4<<9;99dii D(((rN   c                     t        d      } | j                  sJ | t        d      k(  sJ | j                  dk(  sJ  | j                  di | j	                         | k(  sJ  | j                  | j
                   | k(  sJ  G d dt               } |d      }|| k7  sJ |j                  | j                  k(  sJ t        d      }t        |      dk(  sJ t        |      dk(  sJ y )Nfoobarc                       e Zd Zy)test_String.<locals>.SignifierNr   rM   rN   rO   	Signifierr     r   rN   r   r   zString('foo')rM   )r0   r   textrd   kwargsre   strr   )str   siss       rO   test_Stringr     s    		B:::!!!!77h277!RYY[!R'''277BGG"""F  
8	B8O877bgguAq6U??7o%%%rN   c                  \    t        d      } | j                  dk(  sJ t        |       dk(  sJ y )Nr   )r>   r   r   r   s    rO   test_Commentr     s0    A66Xq6XrN   c                  r    t               } | t               k(  sJ  | j                  | j                   | k(  sJ y rL   )r:   rd   re   )r?   s    rO   	test_Noder      s3    A;;166166?arN   c                     t        d      } t        | j                        dk(  sJ | j                  t	        d      k(  sJ t        |       dk(  sJ t        |       dk(  sJ t        |       | k(  sJ  | j                  | j                   | k(  sJ t        d      }t        d      }||k7  sJ ||k(  r||k(  sJ t        d      }||k(  sJ ||k7  sJ y )NMyTyperC   zType(String('MyType'))t1t2)r   lenre   namer0   r   r   rd   )r   r   r   t1bs       rO   	test_Typer   &  s    XAqvv;!66VH%%%%q6X7....7a<<166166?a	dB	dB8O88b  
t*C9999rN   c                     t        j                  t              t        k(  sJ t	        dd      } t        j                  |       t
        k(  sJ t        j                  t              t        k(  sJ t        j                  d      t        k(  sJ t        j                  d      t
        k(  sJ t        j                  d      t        k(  sJ t        t        d        y )NuTr#   rB         @      @      ?c                  4    t        j                  t              S rL   )r   	from_exprsumrM   rN   rO   rP   z&test_Type__from_expr.<locals>.<lambda>?  s    t~~c2rN   )
r   r   rF   r"   r	   r#   r?   r$   r   rg   )r   s    rO   test_Type__from_exprr   7  s    >>!'''$A>>!$$$>>!'''>>!'''>>#$&&&>>$8+++
:23rN   c                  >   t        t        d        t        j                  d      dk(  sJ t        j                  t	        d            dk(  sJ t        j                  t	        d            dk(  sJ t        j                  d      dk(  sJ t        t        d        t        j                  d	      d	k(  sJ t        t        d
        t        j                  d      dk(  sJ t        j                  d      dk(  sJ t        t        d        t        t        d        y )Nc                  ,    t        j                  d      S )N      @)r"   
cast_checkrM   rN   rO   rP   z1test_Type__cast_check__integers.<locals>.<lambda>D  s    w11#6rN   3rB   z3.0000000000000000000z3.0000000000000000001g     _@   c                  ,    t        j                  d      S )N   r%   r   rM   rN   rO   rP   z1test_Type__cast_check__integers.<locals>.<lambda>K  s    ts3rN   ic                  ,    t        j                  d      S )Nir   rM   rN   rO   rP   z1test_Type__cast_check__integers.<locals>.<lambda>M  s    tt4rN   r   r   c                  ,    t        j                  d      S )Ng      p@r&   r   rM   rN   rO   rP   z1test_Type__cast_check__integers.<locals>.<lambda>Q  s    u//6rN   c                  ,    t        j                  d      S )Nr   rM   rN   rO   rP   z1test_Type__cast_check__integers.<locals>.<lambda>R  s    u//3rN   )r   rg   r"   r   r   r%   r&   rM   rN   rO   test_Type__cast_check__integersr   B  s    
:67c"a'''e$;<=BBBe$;<=BBB ??5!S(((
:34??4 D(((
:45A!###C C'''
:67
:34rN   c                      t        d      } | t        d      k(  sJ t        ddg      }t        ddg      }||k7  sJ  |j                  |j                   |k(  sJ y )Nnoexceptalignas       )r   rd   re   )r   	alignas16	alignas32s      rO   test_Attributer   T  sf    $Hy,,,,)bT*I)bT*I	!!!9>>9>>*i777rN   c                     t        t        t              } | t        |       k(  sJ | t        dt              k(  sJ | j                  t        k(  sJ | j                  t        k(  sJ t
        | j                  vsJ  | j                  | j                   | k(  sJ t        |       dk(  sJ t        t        t        t
        h      }|j                  t        k(  sJ |j                  t        k(  sJ t
        |j                  v sJ  |j                  |j                   |k(  sJ t        t        t        j                  t                    }|j                  t        k(  sJ  |j                  |j                   |k(  sJ t        t         t        j                  t                    }|j                  t        k(  sJ ||k7  sJ t        j"                  t               }|j                  t        k(  sJ t        j"                  t%        dd            j                  t        k(  sJ  |j                  |j                   |k(  sJ t        j"                  t        dd	      } |j                  |j                   |k(  sJ t'        |j(                  dz
        d
k  sJ t+        t,        d        t        j"                  t              }|j                  t        k(  sJ t        |      dk(  sJ t        j"                  t.        d      j                  t        k(  sJ t        j"                  t.        d      j                  t        k(  sJ t        j"                  t.        d      j                  t0        k(  sJ y )NtyperT   zVariable(x, type=real))attrsTr   r   Fvaluer   gV瞯<c                  :    t        j                  t        dd      S )Nr   Tr  )r   deducedr?   rM   rN   rO   rP   ztest_Variable.<locals>.<lambda>|  s    x//NrN   zVariable(n, type=integer)rB   )r  r   r   )r   rT   r#   symbolr   r    r   rd   re   r   rc   f32r?   r   r   r"   rF   r  r
   absr  r   rg   r   r$   )vwv_nv_ia_iv_n2v_n3s          rO   test_Variabler  ]  s   A4((((88q==66T>>agg%%%166166?aq6----C}-A88q==66S==!''!!!166166?a
14>>!,
-C88w388SXX#%%%
14>>!,
-C88w#::


1
C88wF3T2388D@@@388SXX#%%%ASU;D499dii D(((tzzC 5(((
:NOAD99t93333AQ',,777AS)..$666AV,11X===rN   c                     t        t              } | j                  t        k(  sJ | j                  t        k(  sJ t
        | j                  vsJ t        | j                  vsJ  | j                  | j                   | k(  sJ t        dd      }t        |t        j                  |      t
        t        h      }|j                  |u sJ |j                  t        k(  sJ t
        |j                  v sJ t        |j                  v sJ  |j                  |j                   |k(  sJ t        dd      }||   }|j                  |fk(  sJ y )Nr   Tr   )r   r   rF   r@   )r   rT   r  r   r7   r    r   r!   rd   re   r	   r   r   r#   indices)pr   purF   derefs        rO   test_Pointerr    s   
A88q==66Wagg%%%'''166166?a$A	*;2N	OB99>>77d??"(("""BHH$$$277BGG"""T"AqEE==QD   rN   c                     t        dd      } t        | t        j                  |             }t	        |      j
                  j                  t        k(  sJ t        t        t        j                  t                    }t	        |      j
                  j                  t        k(  sJ t        | t        j                  |       dt        h      }t        |j                  v sJ t        |j                  vsJ t	        |      }|j
                  |k(  sJ t        |j
                  j                  t              sJ |j
                  j                  dk(  sJ  |j                   |j"                   |k(  sJ |j%                         |k(  sJ |j%                  d d       t	        |      k(  sJ t        t&        t        d      }t	        |      }|j
                  |k(  sJ |j
                  j                  t)        d      k(  sJ t        t*        t        j                  t*              d      t	              }|j
                  j                  t        k(  sJ |j
                  j                  dk(  sJ t-        t.        fd	       y )
Nr   Tr   r   r   )r  r   rB   )r   r  c                      t         d      S )N*   )r   )vis   rO   rP   z"test_Declaration.<locals>.<lambda>  s    {2r2rN   )r	   r   r   r   r   variabler   r#   r?   r"   r    r   r!   
isinstancer  r   rd   re   as_Declarationrc   r   rF   r   rg   )	r   vuvnvucdeclvydecl2decl3r  s	           @rO   test_Declarationr$    s   $A	!$..+	,Br?##((D000	!$..+	,Br?##((G333 1dnnQ's;-
HC#))###		)))sD==Cdmm))5111==#%%%499dii D(((4'''D5RHHH	!'	+BOE>>R>>71:---	!$..+3	7BOE>>')))>>3&&&
:23rN   c                      t         j                  t        d      k(  sJ t         j                  t         j                  fk(  sJ t	        t        d      j                        dk(  sJ y )Nr9   ri   )r9   r   r0   re   r   r8   rM   rN   rO   test_IntBaseTyper&    sN    99v&&&99$$${3$$%,,,rN   c                  Z   t         j                  dk(  sJ t        j                  dk(  sJ t        j                  dk(  sJ t        j                  dk(  sJ t
        j                  dk(  sJ t         j                  dk(  sJ t        j                  dk(  sJ t        j                  dk(  sJ t        j                  d	k(  sJ t
        j                  d
k(  sJ t         j                  dk(  sJ t        j                  dk(  sJ t        j                  dk(  sJ t        j                  dk(  sJ t
        j                  dk(  sJ t         j                  dk(  sJ t        j                  dk(  sJ t        j                  dk(  sJ t        j                  dk(  sJ t
        j                  dk(  sJ t        t         j                  t        dd      z  dz
        ddt         j                   z  z  k  sJ t        t        j                  t        dd      z  dz
        ddt        j                   z  z  k  sJ t        t        j                  t        dd      z  dz
        ddt        j                   z  z  k  sJ t        t        j                  t        dd      z  dz
        ddt        j                   z  z  k  sJ t        t
        j                  t        dd      z  dz
        ddt
        j                   z  z  k  sJ t        t         j                  t        dd      z  dz
        ddt         j                   z  z  k  sJ t        t        j                  t        d d      z  dz
        ddt        j                   z  z  k  sJ t        t        j                  t        d!d      z  dz
        ddt        j                   z  z  k  sJ t        t        j                  t        d"d      z  dz
        ddt        j                   z  z  k  sJ t        t
        j                  t        d#d      z  dz
        ddt
        j                   z  z  k  sJ t        t         j                  t        d$d      z  dz
        ddt         j                   z  z  k  sJ t        t        j                  t        d%d      z  dz
        ddt        j                   z  z  k  sJ t        t        j                  t        d&d      z  dz
        ddt        j                   z  z  k  sJ t        t        j                  t        d'd      z  dz
        ddt        j                   z  z  k  sJ t        t
        j                  t        d(d      z  dz
        ddt
        j                   z  z  k  sJ t        j                  d)      t        d)d      k(  sJ t        t        j                  d*      d*z
        d+k  sJ t        t        j                  d      t        t         f      sJ t        j"                  t$              t!        d,      k(  sJ t        j"                  t$               t!        d-      k(  sJ t        j"                  t!        t$                    t!        d,      k(  sJ t        j"                  t!        t$                     t!        d-      k(  sJ t'        j(                  t        j"                  t*                    sJ t        t        k7  sJ t        t        j,                  t        j.                   k(  sJ y ).NrB            !   r   	         $   r   r   i   i @  iiiiz
0.00097656	precisionrC   g?
   z1.1920929e-07r   z2.2204460492503131e-16@   z1.08420217248550443401e-19P   z* 1.92592994438723585305597794258492732e-3465504z3.40282347e+38z1.79769313486231571e+308z1.18973149535723176502e+4932z+1.18973149535723176508575932662800702e+4932z
6.1035e-05z1.17549435e-38z2.22507385850720138e-308z3.36210314311209350626e-4932z*3.3621031431120935062626778173217526e-4932g      ?g@gq7K<infz-inf)f16digr  f64f80f128decimal_digmax_exponentmin_exponentr  epsr   maxtinyr   r  floatcast_nocheckr   mathisnanr   rd   re   rM   rN   rO   test_FloatTyperF    s"   77a<<77a<<77b==77b==88r>>??a??a??b   ??b   r!!!r!!!s"""t###u$$$%%%s"""t###u$$$v%%%&&&sww|r::Q>?#b377(lBRRRRsww"==ABScggXEUUUUsww72FFJKcRTWZW^W^V^R^N^^^^sww;rJJQNORUVX[^[b[bZbVbRbbbbtxx% LX[\\_``adghjmqmumuluhuduuuuswww"559:RSWWH_LLLsww/2>>BCc"swwh,FVVVVsww9RHH1LMPSTVY\Y`Y`X`T`P````sww=LLqPQTWXZ]`]d]d\dXdTddddtxx% MY\]]`aabehiknrnvnvmvivevvvv sxx%;;a?@3rCGG8|CSSSSsxx% 0B??!CDs2PSPWPWx<GWWWWsxx% :bIIAMNQTUWZ]ZaZaYaUaQaaaasxx% >"MMPQQRUXY[^a^e^e]eYeUeeeetyy5!MY\]]`aabehiknrnvnvmvivevvvv>>#%R.000s~~c"S()E111cnnQ'%888B5<///RC E&M111E"I&%,666E2#J'5=888::c&&s+,,,#::#((CHH%%%%rN   c                     t        t        d        t        t        d        t        t        d        t        t        d        t        dt        j                  d      z
  dz
        dk  sJ t        dt        j                  d      z
  d	z
        d
k  sJ t        d      } t        | t        j                  |       z
  dz
        dk  sJ t        j                  t        dd             t        t        d        dt        t        fd       t        t        t              d      t        j                        z
        dz  k  sJ t        t        j                  d      dz
        dk  sJ y )Nc                  ,    t        j                  d      S )Ng8-	<^@r  r   rM   rN   rO   rP   z7test_Type__cast_check__floating_point.<locals>.<lambda>      s~~l;rN   c                  ,    t        j                  d      S )Ngƽ(@rI  rM   rN   rO   rP   z7test_Type__cast_check__floating_point.<locals>.<lambda>   rJ  rN   c                  ,    t        j                  d      S )NgҗC?rI  rM   rN   rO   rP   z7test_Type__cast_check__floating_point.<locals>.<lambda>  rJ  rN   c                  ,    t        j                  d      S )Ng&T9ݚ?rI  rM   rN   rO   rP   z7test_Type__cast_check__floating_point.<locals>.<lambda>  rJ  rN   g"<^@x{;Nj>:0yE>g_^e7ݚ?gdy=gdy=0.123456789012345670499^<h"<ҶOɃ;z0.12345678901234567890103X   r0  c                  B    t        j                  t        dd            S )Nz0.12345678901234567890149rS  r0  )r:  r   r   rM   rN   rO   rP   z7test_Type__cast_check__floating_point.<locals>.<lambda>
  s    s~~e4O[].^_rN   g@c                  .    t        j                         S rL   rI  )v10s   rO   rP   z7test_Type__cast_check__floating_point.<locals>.<lambda>  s    s~~c2rN   H   gؗҜ<il       rC   )	r   rg   r  r  r   r   r9  r:  r   )dcm21rV  s    @rO   %test_Type__cast_check__floating_pointrY    s,   
:;<
:;<
:;<
:;<}s~~m<<vEFMMM}s~~m<<uDEMMM+,Eus~~e,,x785@@@NN54CD
:_`
C
:23uSX.1DDEE	QQQs~~j)J67!;;;rN   c                  F   d} t        t        d        t        | t        j                  |       z
  dz
        dk  sJ t        d      dz   }t        |t        j                  |      z
  dz
        dk  sJ t        d	      d
t        d	      z  z   t        t        fd       y )Ny"<^@Co7ݚ?c                  ,    t        j                  d      S )Ny&T9ݚ?&T9ݚ?)c64r   rM   rN   rO   rP   z?test_Type__cast_check__complex_floating_point.<locals>.<lambda>  s    s~~.JKrN   rN  rO  rP  y        #B;rQ  rR  z0.1234567890123456749y              ?c                  .    t        j                         S rL   )c128r   )v19s   rO   rP   z?test_Type__cast_check__complex_floating_point.<locals>.<lambda>  s    ts3rN   )r   rg   r  r\  r   r   r^  )val9_11rX  r_  s     @rO   -test_Type__cast_check__complex_floating_pointra    s    -G
:KLw0069:TAAA+,v5Eutu--89EAAA
'
(2e4K.L+L
LC
:34rN   c                     t        t        d      } t        t        dk  | g      }|j                  j                  d   t        k(  sJ |j                  j                  d   dk(  sJ |j                  t        t        dd      k(  sJ |j                  j                  | fk(  sJ  |j                  |j                   |k(  sJ t        t        t        d            }t        t        dk  |      }||k(  sJ |t        t        dk  | g      k7  sJ y )NrC   rD   r   F)evaluaterB   )	r   rT   r.   	conditionre   r   bodyrd   r   )xppwhl1cblkwhl2s       rO   
test_Whilerj    s    
 A
&CQD>>q!Q&&&>>q!Q&&&>>R1u555599>>cV###499dii D(((+Aq12DQD4<<5Q&&&&rN   c                      t        t        t              } t        t        d      }t	        | |g      }t        | |      }|j                  |k(  sJ |t	        |      k(  sJ |t	        || g      k7  sJ  |j                  |j                   |k(  sJ y r`   )	r   rT   rc   r   r/   r   re  rd   re   )assignincrscprh  s       rO   
test_Scopero  -  s    1F!!Q'D

CVT"D88t%+%v''''388SXX#%%%rN   c                  J   d} t        t        t        g|       }t        |j                        | k(  sJ |j
                  t        t        t              k(  sJ |j                  t        t        t              t        |       t        fk(  sJ |t        t        t        f|       k(  sJ |t        t        t        g|       k7  sJ  |j                  |j                   |k(  sJ t        t        t        g      }|t        t        t        g      k(  sJ ||k7  sJ |j                  d k(  sJ y )Nz%d %.3f)r1   r?   rT   r   format_string
print_argsr   re   r2   r;   rd   )fmtpsps2s      rO   
test_Printrv  8  s    
C	1vs	Br C'''==E!QK'''77uQ{L$5t<<<<1vs####1vs####277BGG"""
A-C%A-"99$$$rN   c            
      
   t        t        t              } t        t        t              }t        t        d| |g      }|j                  t        k(  sJ |j                  t        d      k(  sJ |j                  t        | |      k(  sJ |t        t        d| |g      k(  sJ |t        t        d|| g      k7  sJ  |j                  |j                   |k(  sJ t        t        t        t        z        t        t              g}t        t        d| |g|      }|j                  t        k(  sJ t!        |j                        dk(  sJ |j                  t        | |      k(  sJ |j"                  t%        | k(  sJ |t        t        d| |g|      k(  sJ |t        t        d| |g|d d d         k7  sJ  |j                  |j                   |k(  sJ t        j&                  |      }||k(  sJ t        j(                  ||      }||k(  sJ y )Nr   powerr   )r   rT   r#   r?   r"   r3   return_typer   r0   
parametersr   rd   re   r   r5   r4   r   re  r   from_FunctionDefinitionfrom_FunctionPrototype)vxr  fp1re  fd1fp2fd2s          rO   -test_FunctionPrototype_and_FunctionDefinitionr  H  s   	!$	B	!'	"B
D'B8
4C??d"""88vg&&&>>U2r]***#D'B8<<<<#D'B8<<<<388SXX#%%% q!Q$+D
T7RHd
;C??d"""sxx=G###>>U2r]***88y$''''$T7RHdCCCC$T7RHd4R4jIIII388SXX#%%%

3
3C
8C#::

3
3C
>C#::rN   c                      t        t              } | j                  t        fk(  sJ | t        t              k(  sJ | t        t              k7  sJ  | j                  | j                   | k(  sJ y rL   )r5   rT   re   rc   rd   )rss    rO   test_Returnr  e  sZ    	B77qd??????277BGG"""rN   c                     t        dt        df      } | j                  d   t        k(  sJ | j                  d   dk(  sJ t        | j                        dk(  sJ t	        | j                  d   t
              sJ | t        dt        df      k(  sJ | t        ddt        f      k7  sJ | t        dt        df      k7  sJ  | j                  | j                   | k(  sJ t        dg d      }t        |j                        dk(  sJ |j                  d   dk(  sJ |j                  d   dk(  sJ |j                  d   d	k(  sJ t        |      d
v sJ y )Nrx  rB   r   rC   rD   Powerfma)rD   rB   r   r   )z*FunctionCall(fma, function_args=(2, 3, 4))z,FunctionCall("fma", function_args=(2, 3, 4)))	r6   rT   function_argsr   r  r   rd   re   r   )fcfc2s     rO   test_FunctionCallr  m  sk   	g1v	&BA!###A!###r A%%%b&&q)7333g1v....g1v....g1v....277BGG"""
ui
(Cs  !Q&&&Q1$$$Q1$$$Q1$$$s8    rN   c            	      Z   t        dt              } t        dt              }t        dt              }t        t        d| |gt	        | j
                  |j
                        g      }|j                  }t        d|dg      }t        ||      }t        |j                  d   j                        dk(  sJ t        |j                  d   j                        dk(  sJ t        |||g      D ]  \  }}||k(  rJ  |j                  |t        d            }	t        |j                  d   j                        dk(  sJ t        |j                  d   j                        dk(  sJ t        |	j                  d   j                        dk(  sJ t        |	j                  d   j                        dk(  sJ y )	NrT   rc   r?   pwerrB   r   rC   rx  )r   r#   r"   r4   powr  r   r6   r   r   re   zipreplacer0   )
rT   rc   r?   r  pnamepcalltree1ri   r   tree2s
             rO   test_ast_replacer    sq   dAdAgAdFQFS1885L4MNDIIE!Q(EdE"Euzz!}!!"f,,,uzz!}!!"f,,,ED%=)1Avv * MM%1Euzz!}!!"f,,,uzz!}!!"f,,,uzz!}!!"g---uzz!}!!"g---rN   )~rD  sympy.core.containersr   sympy.core.numbersr   r   r   r   sympy.core.relationalr   sympy.core.symbolr	   r
   (sympy.functions.elementary.trigonometricr   sympy.matrices.denser   "sympy.matrices.expressions.matexprr   sympy.sets.fancysetsr   sympy.tensor.indexedr   r   sympy.testing.pytestr   sympy.codegen.astr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r7  r(   r  r)   r9  r*   r:  r+   r;  r,   r\  r-   r^  r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   rT   rc   r   r   r   r   r   ri   r   r?   rA   rR   rE   rF   rG   rH   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r$  r&  rF  rY  ra  rj  ro  rv  r  r  r  r  rM   rN   rO   <module>r     s|    ' 6 6 $ - 8 ' ; & 1 '             ''EF 1aBB1CaYQK51510<'5TR,1,6\%" 
F
3	)&&
 "45$8&>R!* 4F-7&t<*5'&% :#*.rN   