
    wg&                     "   d dl Z d dlZd dl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mZmZ d dlmZ  e
d	d
      Z e
dd      Z e
dddgi      ZdZer	  e ed      dd       dZ ed      \  ZZZ edd      \  ZZZ ede      \  Z Z!Z" ede      Z# ede      Z$ ede      Z%d Z&d Z'd  Z(d! Z)d" Z*d# Z+d$ Z,d% Z-d& Z.d' Z/d( Z0d) Z1d* Z2d+ Z3d, Z4d- Z5d. Z6d/ Z7d0 Z8d1 Z9d2 Z:d3 Z;d4 Z<d5 Z=y# eeef$ r dZY w xY w)6    N)Mod)Eq)symbols)import_module)IndexedBaseIdx)autowrapufuncifyCodeWrapError)skipnumpyz1.6.1)min_module_versionCythonz0.15.1z
numpy.f2pyfromlistf2py)import_kwargsFxf95Ta b czn m dintegerzA B Cclsijkc                 |    t         t        t        d}||    r| dk(  rt        st	        d       yt	        d| z         y)z]
    Return True if module exists, otherwise run skip().

    module should be a string.
    )r   r   r   r   zCouldn't run f2py.TzCouldn't import %s.N)r   r   r   	f2pyworksr   )modulemodnamess     g/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/sympy/external/tests/test_autowrap.py
has_moduler"   !   s<     &$?HVI%&		'(    c                     t        t        t        z   t        z  dz  j	                         | |      }t        t        t        z   t        z  dz  j	                         | |      } |ddd      dk(  sJ  |ddd      dk(  sJ y )N         g      g      ?)r	   abcexpand)languagebackendfgs       r!   runtest_autowrap_twicer1   6   sv    AE19q.((*Hg>AAE19q.((*Hg>A QA;$QA;#r#   c                     t        d       t        t        t        t        f   | |      } |t        j                  d            dk(  sJ y )Nr   d   )r"   r	   Ar   r   eye)r-   r.   traces      r!   runtest_autowrap_tracer7   ?   s;    wQq!tWh0E3 C'''r#   c           	         t        d       t        dt              \  }}t        |t           t
        t        t        f   |t           z        }t        || |      }t        j                  j                  dd      }t        j                  j                  d      }t        j                  ||      }t        j                  t        j                  | |||      z
              dk  sJ y )Nr   zx yr   
      vIh%<=)r"   r   r   r   r   r4   r   r	   r   randomranddotsumabs)r-   r.   r   yexprmvMs          r!   runtest_autowrap_matrix_vectorrE   E   s    w5k*DAqadAadGAaDL!D	$'	*B 	"b!A"A		!QA99UYYq2a8|,-555r#   c           	         t        d       t        t        t        t        f   t
        t        t        f   t        t        t        f   z        }t        || |      }t        j                  j                  dd      }t        j                  j                  dd      }t        j                  ||      }t        j                  t        j                  | |||      z
              dk  sJ y )Nr   r9   r:      r;   )r"   r   Cr   r   r4   r   Br	   r   r<   r=   r>   r?   r@   )r-   r.   rB   matmatM1M2M3s          r!   runtest_autowrap_matrix_matrixrN   R   s    wa1gqAwqAw'DdHg.F 
		2r	"B			2r	"B	2r	B99UYYrF2rN234u<<<r#   c                    t        d       t        d      \  }}}t        |||g||z  |z   |      }t        |||g||z  |z   |      }t        j	                  ddd      }t        j	                  ddd      }t        j	                  d	d
d      }||z  |z   }t        j
                  j                   ||||      |       t        j
                  j                   ||||      |       y )Nr   r   )r.   r(      2   r&   r'   )r"   r   r
   r   linspacetestingassert_allclose)	r-   r.   r)   r*   r+   fabcfacbgridexpecteds	            r!   runtest_ufuncifyr[   ^   s    wgGAq!Q1IqsQw8DQ1IqsQw8D>>"a$Dr1b!Ar1b!AAvzH	MM!!$tQ"2H=	MM!!$tQ"2H=r#   c                 j   t         t        z
  t        z   dz  }t        j                         }t        || ||dt         t        z
  t        z   t         t        t        ff      } |ddd      dk(  sJ t        j                  |      D ]  }|j                  d      r|j                  d      s&t        |dz   |z         5 }|j                         }|d   d	k(  sJ d
t        j                  z   |d   v sJ |dd  dddddd|d d z   dz   dz   dddddddddddddddddgk(  sJ 	 d d d         y # 1 sw Y   xY w)N   helper)tempdirhelpersr'   wrapped_code_.c/r   zP/******************************************************************************
zCode generated with SymPy rP   zP *                                                                            *
zP *              See http://www.sympy.org/ for more information.               *
zP *                      This file is part of 'autowrap'                       *
zQ ******************************************************************************/
z
#include "rS   zh"
z#include <math.h>
z.double helper(double a, double b, double c) {
z   double helper_result;
z   helper_result = a - b + c;
z   return helper_result;
z}
z0double autofunc(double a, double b, double c) {
z   double autofunc_result;
z/   autofunc_result = pow(helper(a, b, c), 13);
z   return autofunc_result;
)r)   r*   r+   tempfilemkdtempr	   oslistdir
startswithendswithopen	readlinessympy__version__)r-   r.   rB   tmpr/   filefilliness           r!   runtest_issue_10274rs   k   sp   EAID



Cx#"AEAI1ay9	;AQ1:??

3  0T]]45H#)d"# 	sMMOE8rrrr/%2C2CCuQxOOO9ccccd!D"I-t3d:%A,1,C.B./!   		 		 	 	s   ;A"D))D2	c                    t        d       t        d      \  }}}}}||z
  |z   |z
  |z   dz  }d}t        || ||||||fd||z
  |z   |||ff      }	t        j                  j                   |	ddd	d
d      |       t        || ||||||fd||z
  ||ffd||z
  ||fff      }	t        j                  j                   |	ddd	d
d      |       y )Nr   za, b, c, d, er]   g    S8Af1)argsr`   r'   rP      r&   r%   f2)r"   r   r	   r   rU   rV   )
r-   r.   r)   r*   r+   derB   exp_resr/   s
             r!   runtest_issue_15337r|      s    w O,MAq!QEAIMA"D*Gx1aAA	Aq!95	7A	MM!!!Aq!Q"2G<x1aAQA/$A1v1FG	IA	MM!!!Aq!Q"2G<r#   c                     t        d       t        d      \  } }t        | d      t        |d      z
  }t        || |gd      }t	        |j                  | d|di      j                               }t         |dd      |z
        d	k  sJ t        dd
      \  } }t        | d      t        |d      z
  }t        || |gd      } |dd      |j                  | d|di      k(  sJ y )Nr   zx, yg      @g       F95)rv   r-   g      @g@g+=Tr   rw   r(   rP   )r"   r   r   r	   floatxreplaceevalfr@   )r   rA   rB   r/   r{   s        r!   test_issue_15230r      s    v6?DAqq#;Q%DQFU3ADMM1c1c"2399;<Gqc{W$%---64(DAqq!9s1bz!DQFU3AQ7dmmQ1aL1111r#   c                  2    t        d       t        dd       y Nr   r   r"   r1    r#   r!   test_wrap_twice_f95_f2pyr          v5&)r#   c                  2    t        d       t        dd       y r   r"   r7   r   r#   r!   test_autowrap_trace_f95_f2pyr      r   r#   c                  2    t        d       t        dd       y r   r"   rE   r   r#   r!   $test_autowrap_matrix_vector_f95_f2pyr          v"5&1r#   c                  2    t        d       t        dd       y r   r"   rN   r   r#   r!   $test_autowrap_matrix_matrix_f95_f2pyr      r   r#   c                  2    t        d       t        dd       y r   r"   r[   r   r#   r!   test_ufuncify_f95_f2pyr      s    vUF#r#   c                  2    t        d       t        dd       y r   r"   r|   r   r#   r!   test_issue_15337_f95_f2pyr      s    vv&r#   c                  2    t        d       t        dd       y )Nr   rH   cythonr   r   r#   r!   test_wrap_twice_c_cythonr      s    x3)r#   c                  2    t        d       t        dd       y Nr   C99r   r   r   r#   r!   test_autowrap_trace_C_Cythonr      s    x5(+r#   c                  2    t        d       t        dd       y r   r   r   r#   r!   $test_autowrap_matrix_vector_C_cythonr          x"5(3r#   c                  2    t        d       t        dd       y r   r   r   r#   r!   $test_autowrap_matrix_matrix_C_cythonr      r   r#   c                  2    t        d       t        dd       y r   r   r   r#   r!   test_ufuncify_C_Cythonr      s    xUH%r#   c                  2    t        d       t        dd       y Nr   C89r   )r"   rs   r   r#   r!   test_issue_10274_C_cythonr          xx(r#   c                  2    t        d       t        dd       y r   r   r   r#   r!   test_issue_15337_C_cythonr      r   r#   c                  6   t        d       ddlm}  ddlm} ddlm}  G d d|      } |       } ||      }|j                  j                  d	       | t        z  }d
}t        j                         }t        t        j                  j                  |d      d      5 }	|	j!                  d       d d d        t#        |d||      }
 |
d      dk(  sJ t        j$                  |      D ]  }|j'                  d      s|j)                  d      s't        t        j                  j                  ||            5 }	|	j+                         }||j-                  dd      z  }dj                  |dd        |k(  sJ 	 d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   )pi)
C99CodeGen)C99CodePrinterc                       e Zd Zd Zy)/test_autowrap_custom_printer.<locals>.PiPrinterc                      y)NS_PIr   )selfrB   s     r!   	_print_Piz9test_autowrap_custom_printer.<locals>.PiPrinter._print_Pi
  s    r#   N)__name__
__module____qualname__r   r   r#   r!   	PiPrinterr   	  s    	r#   r   )printerz#include "shortpi.h"z#include "%s"
#include <math.h>
#include "shortpi.h"

double autofunc(double a) {

   double autofunc_result;
   autofunc_result = S_PI*a;
   return autofunc_result;

}
z	shortpi.hwz#define S_PI 3.14r   )r.   r_   code_geng@gK7A`*@wrapped_coderb   z.h    )r"   sympy.core.numbersr   sympy.utilities.codegenr   sympy.printing.cr   preprocessor_statementsappendr)   re   rf   rk   rg   pathjoinwriter	   rh   ri   rj   rl   replace)r   r   r   r   r   genrB   rZ   tmpdirr/   funcfilenamerr   s                r!   test_autowrap_custom_printerr     sr   x%2/N  kG
W
%C&&'=>6D
	  F	bggll6;/	5 %	#$% D(FSID9
""" JJv& 6~.83D3DT3Jbggll6845 6#h&6&6tT&BBwwuQRy)X5556 66% %6 6s   F8?FFF	c                  2    t        d       t        dd       y )Nr   r   r   r   r   r#   r!   test_ufuncify_numpyr   5  s     xUG$r#   )>rm   re   rg   sympy.core.modr   sympy.core.relationalr   sympy.core.symbolr   sympy.externalr   sympy.tensorr   r   sympy.utilities.autowrapr	   r
   r   sympy.testing.pytestr   r   r   r   r   ImportErrorOSErrorr)   r*   r+   nmry   r4   rI   rH   r   r   r   r"   r1   r7   rE   rN   r[   rs   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r!   <module>r      sb     	  $ % ( ) F F %g':	xH	=\*vh1GH	uf- 	
'
1a
'4
(1a
'{
+1aQKQKQK)*(
6	=
>'T=*2**
*
2
2
$
'*
,
4
4
&
)
)
.6f%C	 ;0 	s   #D 
DD