o
    oh                     @   s   d dl mZ d dlmZ d dlZedrd dlm  mZ ndZ	d dl
Z
d dlmZmZmZ dd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Z dS )+    )import_module)raisesNllvmliteT)abnc                 C   s$   d}d}t | | ||t |  kS )Ngh㈵>g:0yE>)abs)r   r   rtolatol r   u/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/printing/tests/test_llvmjit.pyisclose   s   r   c                  C   sF   t d } tt g| }t| t di }|d}t||s!J d S )Ng      ?      @)r   gllvm_callablefloatsubsevalfr   efresjit_resr   r   r   test_simple_expr   s
   r   c                  C   sV   dt  t d } t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   r   r   r   test_two_arg   
   
r   c                  C   sN   dt t  } ttg| }t| tdi }|d}t||s%J d S )Nr         ?)	sympyexpr   r   r   r   r   r   r   r   r   r   r   	test_func(   s
   r    c                  C   s`   dt t  t t } t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   r   r   r   test_two_func1   s
   
r#   c                  C   s^   dt t t t } t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   r   r   r   test_two_sqrt:   s
   
r%   c                  C   sV   t d td  } tt tg| }t| t dtdi }|dd}t||s)J d S )Nr      r"   r   r   r   r   r   test_two_powC   r   r'   c                  C   sp   t d } tjt g| dd}td}tjd }t di}||t  }|||}t| | }t	||s6J 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   r   r   r   test_callbackL   s   


r7   c            	      C   s   t d } tjt g| dd}td}tjd }t di}||t  }|d}|||d ||}|dks3J t| | }t	|d |sEJ d S )Nr(   cubaturer*   r,   r-   g        r   r.   )	r   r   r3   r4   r5   r6   	out_arrayjit_retr   r   r   r   test_callback_cubatureZ   s   

r;   c                  C   s   dt  t } tjt tg| dd}td}tjd }t dtdi}||t  |t }|||}t| |	 }t
||s>J d S )N   r)   r*      皙?333333?)r   r   r   r   r/   r0   r1   r   r   r   r   r2   r   r   r   test_callback_twok   s   


r@   c            	      C   s   t d} d| d  | d  }tjt| g|dd}td}tjd }| d d| d d	i}||| d  || d  }|||}t|	|
 }t||sOJ d S )
Ndr<   r   r,   r)   r*   r=   r>   r?   )r   IndexedBaser   r   r   r/   r0   r1   r   r   r   r   )	rA   r   r   r3   r4   r5   r6   r   r   r   r   r   test_callback_alt_twoy   s   



rC   c            
      C   s   t dt fgt d gg} ttg| }| d d d tdi}t| d d t |i }|d}t||s:J tjtg| dd}t	d}tj
d }|d}|||}	t|	|s]J d S )Nr      r   r,   r   r)   r*   )r   r   r   r   r   r   r   r   r/   r0   r1   )
r   r   b_valr   r   
f_callbackr3   r4   r6   jit_callback_resr   r   r   test_multiple_statements   s   


rH   c                  C   sx   t t  tt  tt  t  tt   } t| }t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   r   r   r   test_cse   s   (

rL   c                    sJ   i | d D ]\}}|  }| }||< q fdd| d D S )Nr   c                    s   g | ]
}|   qS r   r   ).0r   sub_dicttmp_dictr   r   
<listcomp>   s    zeval_cse.<locals>.<listcomp>r,   rM   )r   rP   tmp_nametmp_exprrK   e3r   rO   r   eval_cse   s   


rV   c                     s   t t  } t t  tt  }t| |g tt fdd tt tg }|dd}t|dks1J t	 t dtdi}t
|d |d sEJ t
|d |d sPJ d S )Nc                      s   t jttg ddS )Nzscipy.integrater*   )r   r   r   r   r   rU   r   r   <lambda>   s    z#test_cse_multiple.<locals>.<lambda>rI   r   r=   r   r,   )r   r   r   rJ   r   NotImplementedErrorr   r   lenrV   r   )e1rK   r   r   r   r   rW   r   test_cse_multiple   s   

r\   c                  C   s   t t  } t t  tt  }t| |d| g}tjt tg|dd}d}d}t|}t|}tj| }tj| }	t dtdi}
||
t  |
t }|	 }|||d ||}|dksXJ t	||
}t
|d |d shJ t
|d	 |d	 ssJ t
|d |d s~J d S )
N   r8   r*   r=   r<   r>   r   r   r,   )r   r   r   rJ   r   r   r/   r0   r1   rV   r   )r[   rK   rU   r   ndimoutdimr3   fdimr4   out_array_typer5   r6   r9   r:   r   r   r   r   test_callback_cubature_multiple   s&   




rb   c                      s"   t t  t  tt fdd d S )Nc                      s   t tg S )Nr   r   r   r   r   r   r   rX      s    z'test_symbol_not_found.<locals>.<lambda>)r   r   r   LookupErrorr   r   rd   r   test_symbol_not_found   s   rf   c                      s   t  tt fdd d S )Nc                      s   t jtg ddS )Nbad_callbackr*   rc   r   rd   r   r   rX      s    z#test_bad_callback.<locals>.<lambda>)r   r   
ValueErrorr   r   rd   r   test_bad_callback   s   ri   )!sympy.externalr   sympy.testing.pytestr   r/   sympy.printing.llvmjitcodeprintingllvmjitcoder   disabledr   	sympy.abcr   r   r   r   r   r   r    r#   r%   r'   r7   r;   r@   rC   rH   rL   rV   r\   rb   rf   ri   r   r   r   r   <module>   s4    						
	