
    g                         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 dS )    )import_module)raisesNllvmliteT)abnc                 \    d}d}t          | |z
            ||t          |          z  z   k    S )Ngh㈵>g:0yE>)abs)r   r   rtolatols       ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/printing/tests/test_llvmjit.pyiscloser      s0    DDqs88td3q66k)))    c                      t           dz   } t          j        t           g|           }t          |                     t           di                                                    } |d          }t          ||          sJ d S )Ng      ?      @)r   gllvm_callablefloatsubsevalfr   efresjit_ress       r   test_simple_exprr      sp    	CA	QA
3x  &&((
)
)CaffG7C       r   c                  2   dt           z  t          z   dz   } t          j        t           t          g|           }t	          |                     t           dt          di                                                    } |dd          }t          ||          sJ d S )Nr   g      @r   r   r   r   r   r   r   r   r   s       r   test_two_argr      s    A	CA	A""A
33'((..00
1
1CaSkkG7C       r   c                  &   dt          j        t                     z  } t          j        t          g|           }t          |                     t          di                                                    } |d          }t          ||          sJ d S )Nr         ?)	sympyexpr   r   r   r   r   r   r   r   s       r   	test_funcr$   (   s{    EIqbMMA	QA
3x  &&((
)
)CaffG7C       r   c                  v   dt          j        t                     z  t          j        t                    z   } t	          j        t          t          g|           }t          |                     t          dt          di                                                    } |dd          }t          ||          sJ d S Nr   r!          @)
r"   r#   r   r   r   r   r   r   r   r   r   s       r   test_two_funcr(   1   s    EIqbMMEIaLL(A	A""A
33'((..00
1
1CaSkkG7C       r   c                  t   dt          j        t                    z  t          j        t                    z   } t	          j        t          t          g|           }t          |                     t          dt          di                                                    } |dd          }t          ||          sJ d S r&   )
r"   sqrtr   r   r   r   r   r   r   r   r   s       r   test_two_sqrtr+   :   s    EJqMMEJqMM)A	A""A
33'((..00
1
1CaSkkG7C       r   c                  2   t           dz  t          dz  z   } t          j        t           t          g|           }t	          |                     t           dt          di                                                    } |dd          }t          ||          sJ d S )Nr!      r'   r   r   s       r   test_two_powr.   C   s    	3AA	A""A
33'((..00
1
1CaSkkG7C       r   c                  |   t           dz   } t          j        t           g| d          }t          j        d          }t          j        dz  }t           di} ||t                              } |||          }t          |                     |                                                    }t          ||          sJ d S )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EEEAQA1$Jc(CJs1vEa5kkG
s!!##
$
$C7C       r   c                     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          |                     |                                                    }t          |d         |          sJ d S )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999AQA1$Jc(CJs1vE
3Ia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          |                     |          	                                          }t          ||          sJ d S )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HHHAQA1$Jc1c
CJs1vs1v&&Ea5kkG
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          |	                    |          
                                          }t          ||          sJ d S )
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HHHAQA1$JQ4adC
 CJs1Q4y#ad),,Ea5kkG
s!!##
$
$C7C       r   c                  l   t           dt          z  fgt           dz   gg} t          j        t          g|           }| d         d         d                             t          di          }t          | d         d                             t           |i                                                    } |d          }t          ||          sJ t          j        t          g| d          }t          j	        d          }t          j
        dz  } |d          } |||          }	t          |	|          sJ d S )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0
1
1CaffG7C     !a7MNNNJQA1$JJsOOE!z!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          |                     t           dt          di          	                                          } |dd          }t          ||          sJ d S )Ngffffff@皙?)r   r   r"   r#   cser   r   r   r   r   r   )r   e2r   r   r   s        r   test_cserY      s    	!ac	EIqbdQqSj)))A	1B	A##A
33'((..00
1
1CaSkkG7C       r   c                     i | d         D ]4\  }}|                               }|                               }||<   5fd| d         D             S )Nr   c                 `    g | ]*}|                                                              +S  r   ).0r   sub_dicttmp_dicts     r   
<listcomp>zeval_cse.<locals>.<listcomp>   s3    :::AFF8!!(++:::r   r4   r]   )r   r_   tmp_nametmp_exprrX   e3r`   s    `    @r   eval_csere      sq    Hd    (]]8$$WWX:::::QqT::::r   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 d S )Nc                  J    t          j        t          t          g d          S )Nzscipy.integrater2   )r   r   r   r   )rd   s   r   <lambda>z#test_cse_multiple.<locals>.<lambda>   s    1?Aq62=NOOO r   rV   r!   rG   r   r4   )r   r   r"   rW   r   NotImplementedErrorr   r   lenre   r   )e1rX   r   r   r   rd   s        @r   test_cse_multiplerl      s    	
1B	
1qsB	B8		B
OOOOQ Q Q 	
A##AaSkkG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 d S )
N   rA   r2   rG   rF   rH   r!   r   r4   )r   r   r"   rW   r   r   r7   r8   r9   re   r   )rk   rX   rd   r   ndimoutdimr;   fdimr<   out_array_typer=   r>   rB   rC   r   s                  r   test_callback_cubature_multiplers      sX   	
1B	
1qsB	BAbD>	"	"B	A*===A DFTA<D4'J_v-Nc1c
CJs1vs1v&&E  Ia5$i00Ga<<<<
2s

C9Q<Q(((((9Q<Q(((((9Q<Q(((((((r   c                  f     t           t           z  t          z    t          t           fd           d S )Nc                  :    t          j        t          g           S )Nr   r   r   r   s   r   rh   z'test_symbol_not_found.<locals>.<lambda>   s    Q 7 7 r   )r   r   r   LookupErrorrw   s   @r   test_symbol_not_foundry      s0    	!aA
;777788888r   c                  F     t            t          t           fd           d S )Nc                  >    t          j        t          g d          S )Nbad_callbackr2   rv   rw   s   r   rh   z#test_bad_callback.<locals>.<lambda>   s    qsA^TTT r   )r   r   
ValueErrorrw   s   @r   test_bad_callbackr~      s(    	A
:TTTTUUUU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   re   rl   rs   ry   r~   r\   r   r   <module>r      s   ( ( ( ( ( ( ' ' ' ' ' '  = **********H           * * *! ! !! ! !! ! !! ! !! ! !! ! !! ! !& & &"! ! !! ! !* * *"! ! !; ; ;' ' ' ) ) ):9 9 9
V V V V Vr   