
    sg                         d dl mZ d dlmZ d dlZ ed      r
d dlmc mZ ndZ	d dl
Z
d dlmZmZmZ d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z y)    )import_module)raisesNllvmliteT)abnc                 J    d}d}t        | |z
        ||t        |      z  z   k  S )Ngh㈵>g:0yE>)abs)r   r   rtolatols       T/var/www/html/venv/lib/python3.12/site-packages/sympy/printing/tests/test_llvmjit.pyiscloser      s,    DDqs8td3q6k)))    c                      t         dz   } t        j                  t         g|       }t        | j	                  t         di      j                               } |d      }t        ||      sJ y )Ng      ?      @)r   gllvm_callablefloatsubsevalfr   efresjit_ress       r   test_simple_exprr      sV    	CA	QA
3x &&(
)CfG7C   r   c                      dt         z  t        z   dz   } t        j                  t         t        g|       }t	        | j                  t         dt        di      j                               } |dd      }t        ||      sJ y )Nr   g      @r   r   r   r   r   r   r   r   r   s       r   test_two_argr      sg    A	CA	A"A
33'(..0
1CSkG7C   r   c                      dt        j                  t               z  } t        j                  t        g|       }t        | j                  t        di      j                               } |d      }t        ||      sJ y )Nr         ?)	sympyexpr   r   r   r   r   r   r   r   s       r   	test_funcr$   (   sa    EIIqbMA	QA
3x &&(
)CfG7C   r   c                  H   dt        j                  t               z  t        j                  t              z   } t	        j
                  t        t        g|       }t        | j                  t        dt        di      j                               } |dd      }t        ||      sJ y Nr   r!          @)
r"   r#   r   r   r   r   r   r   r   r   r   s       r   test_two_funcr(   1   sw    EIIqbMEIIaL(A	A"A
33'(..0
1CSkG7C   r   c                  F   dt        j                  t              z  t        j                  t              z   } t	        j
                  t        t        g|       }t        | j                  t        dt        di      j                               } |dd      }t        ||      sJ y r&   )
r"   sqrtr   r   r   r   r   r   r   r   r   s       r   test_two_sqrtr+   :   su    EJJqMEJJqM)A	A"A
33'(..0
1CSkG7C   r   c                      t         dz  t        dz  z   } t        j                  t         t        g|       }t	        | j                  t         dt        di      j                               } |dd      }t        ||      sJ y )Nr!      r'   r   r   s       r   test_two_powr.   C   sg    	3AA	A"A
33'(..0
1CSkG7C   r   c                  L   t         dz   } t        j                  t         g| d      }t        j                  d      }t        j
                  dz  }t         di} ||t                  } |||      }t        | j                  |      j                               }t        ||      sJ y )N333333?scipy.integrate.testcallback_type   皙@
r   r   r   ctypesc_intc_doubler   r   r   r   r   r   m
array_typeinparrayr   r   s           r   test_callbackr?   L   s    	CA	Q.DEAQA1$Jc(Cs1vE5kG
s!!#
$C7C   r   c                  v   t         dz   } t        j                  t         g| d      }t        j                  d      }t        j
                  dz  }t         di} ||t                  } |d      } |||d ||      }|dk(  sJ t        | j                  |      j                               }t        |d   |      sJ y )Nr0   cubaturer2   r4   r5   g        r   r6   )	r   r   r;   r<   r=   r>   	out_arrayjit_retr   s	            r   test_callback_cubaturerD   Z   s    	CA	Qj9AQA1$Jc(Cs1vE3I5$9-Ga<<
s!!#
$C9Q<%%%r   c                     dt         z  t        z  } t        j                  t         t        g| d      }t	        j
                  d      }t        j                  dz  }t         dt        di} ||t            |t                 } |||      }t        | j                  |      j                               }t        ||      sJ y )N   r1   r2      皙?333333?)r   r   r   r   r7   r8   r9   r   r   r   r   r:   s           r   test_callback_tworJ   k   s    	!AA	A1GHAQA1$Jc1c
Cs1vs1v&E5kG
s!!#
$C7C   r   c                     t        j                  d      } d| d   z  | d   z  }t        j                  t        | g|d      }t        j                  d      }t
        j                  dz  }| d   d| d   d	i} ||| d      || d            } |||      }t        |j                  |      j                               }t        ||      sJ y )
NdrF   r   r4   r1   r2   rG   rH   rI   )r"   IndexedBaser   r   r   r7   r8   r9   r   r   r   r   )	rL   r   r   r;   r<   r=   r>   r   r   s	            r   test_callback_alt_tworN   y   s    #A	!A$qtA	A1GHAQA1$JQ4adC
 Cs1Q4y#ad),E5kG
s!!#
$C7C   r   c                  
   t         dt        z  fgt         dz   gg} t        j                  t        g|       }| d   d   d   j	                  t        di      }t        | d   d   j	                  t         |i      j                               } |d      }t        ||      sJ t        j                  t        g| d      }t        j                  d      }t        j                  dz  } |d      } |||      }	t        |	|      sJ y )Nr      r   r4   r!   r1   r2   )r   r   r   r   r   r   r   r   r7   r8   r9   )
r   r   b_valr   r   
f_callbackr;   r<   r>   jit_callback_ress
             r   test_multiple_statementsrT      s    c!e*AwA	QAaDGAJOOQH%E
!QaZ(..0
1CfG7C   !a7MNJQA1$JsOE!!U+#S)))r   c                     t         t         z  t        t        z  z   t        j                  t          t         z  t        t        z  z
        z   } t        j                  |       }t        j                  t         t        g|      }t        | j                  t         dt        di      j                               } |dd      }t        ||      sJ y )Ngffffff@皙?)r   r   r"   r#   cser   r   r   r   r   r   )r   e2r   r   r   s        r   test_cserY      s    	!ac	EIIqbdQqSj))A	1B	A#A
33'(..0
1CSkG7C   r   c                     i }| d   D ],  \  }}|j                  |      }|j                  |      }|||<   . | d   D  cg c]"  } | j                  |      j                  |      $ c} S c c} w )Nr   r4   )r   )r   sub_dicttmp_dicttmp_nametmp_exprrX   e3s          r   eval_cser`      ss    Hd  (]]8$WWX  67qT:AFF8!!(+:::s   'A(c                     t         t         z  } t         t         z  t        t        z  z   }t        j                  | |g      t	        t
        fd       t        j                  t         t        g      } |dd      }t        |      dk(  sJ t        t         dt        di      }t        |d   |d         sJ t        |d   |d         sJ y )Nc                  H    t        j                  t        t        g d      S )Nzscipy.integrater2   )r   r   r   r   )r_   s   r   <lambda>z#test_cse_multiple.<locals>.<lambda>   s    1??Aq62=NO r   rV   r!   rG   r   r4   )r   r   r"   rW   r   NotImplementedErrorr   r   lenr`   r   )e1rX   r   r   r   r_   s        @r   test_cse_multiplerg      s    	
1B	
1qsB	B8	B
OQ 	
A#ASkGw<1
233'
(C3q671:&&&3q671:&&&r   c                     t         t         z  } t         t         z  t        t        z  z   }t        j                  | |d|z  g      }t	        j
                  t         t        g|d      }d}d}t        j                  |      }t        j                  |      }t        j                  |z  }t        j                  |z  }	t         dt        di}
 ||
t            |
t                 } |	       } |||d ||      }|dk(  sJ t        ||
      }t        |d   |d         sJ t        |d	   |d	         sJ t        |d   |d         sJ y )
N   rA   r2   rG   rF   rH   r!   r   r4   )r   r   r"   rW   r   r   r7   r8   r9   r`   r   )rf   rX   r_   r   ndimoutdimr;   fdimr<   out_array_typer=   r>   rB   rC   r   s                  r   test_callback_cubature_multiplern      s*   	
1B	
1qsB	BAbD>	"B	A*=A DFTA<<D4'J__v-Nc1c
Cs1vs1v&E I5$i0Ga<<
2s
C9Q<Q(((9Q<Q(((9Q<Q(((r   c                  T     t         t         z  t        z    t        t         fd       y )Nc                  :    t        j                  t        g       S )Nr   r   r   r   s   r   rc   z'test_symbol_not_found.<locals>.<lambda>   s    Q 7 r   )r   r   r   LookupErrorrr   s   @r   test_symbol_not_foundrt      s    	!aA
;78r   c                  8     t          t        t         fd       y )Nc                  >    t        j                  t        g d      S )Nbad_callbackr2   rq   rr   s   r   rc   z#test_bad_callback.<locals>.<lambda>   s    qsA^T r   )r   r   
ValueErrorrr   s   @r   test_bad_callbackry      s    	A
:TUr   )!sympy.externalr   sympy.testing.pytestr   r7   sympy.printing.llvmjitcodeprintingllvmjitcoder   disabledr"   	sympy.abcr   r   r   r   r   r   r$   r(   r+   r.   r?   rD   rJ   rN   rT   rY   r`   rg   rn   rt   ry    r   r   <module>r      s    ( '  **H   *!!!!!!!&"!!*"!;' ):9
Vr   