§
    PŠtj:  ã                   óâ   — 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m	Z	 d dl
mZmZmZmZmZ d dlmZmZmZmZ d dlmZ d dlmZ d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 )é    N)ÚStringIO)ÚPath)ÚsymbolsÚEq)ÚautowrapÚbinary_functionÚCythonCodeWrapperÚUfuncifyCodeWrapperÚCodeWrapper)ÚCCodeGenÚ
C99CodeGenÚCodeGenArgumentListErrorÚmake_routine)Úraises)ÚTmpFileManagerÚfilec                 óˆ   — t          ¦   «         } | |||fi |¤Ž |                     ¦   «         }|                     ¦   «          |S )a5  Wrapper for dump_fn. dump_fn writes its results to a stream object and
       this wrapper returns the contents of that stream as a string. This
       auxiliary function is used by many tests below.

       The header and the empty lines are not generator to facilitate the
       testing of the output.
    )r   ÚgetvalueÚclose)Údump_fnÚroutinesÚprefixÚkwargsÚoutputÚsources         úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/utilities/tests/test_autowrap.pyÚ
get_stringr      sJ   € õ ‰ZŒZ€FØ€GˆH�f˜fÐ/Ð/¨Ð/Ð/Ð/Ø�_Š_ÑÔ€FØ
‡L‚L�N„N€NØ€Mó    c                  óÒ   — t          d¦  «        \  } }}| |z   |z  }t          d|¦  «        }t          t          ¦   «         ¦  «        }t	          |j        |g¦  «        }d}||k    sJ ‚d S )Núx,y,zÚtestz�cdef extern from 'file.h':
    double test(double x, double y, double z)

def test_c(double x, double y, double z):

    return test(x, y, z))r   r   r	   r   r   Údump_pyx)ÚxÚyÚzÚexprÚroutineÚcode_genr   Úexpecteds           r   Ú#test_cython_wrapper_scalar_functionr*   #   sy   € Ý�gÑÔ�G€A€qˆ!Ø�‰E�1‰9€DÝ˜6 4Ñ(Ô(€GÝ ¥¡¤Ñ,Ô,€HÝ˜Ô)¨G¨9Ñ5Ô5€Fð	#ð ð �XÒÐÐÐÐÐr   c                  óè   — ddl m}  t          d¦  «        \  }}}t          t	          ¦   «         ¦  «        }t          d | |||z   ¦  «        ¦  «        }t          |j        |g¦  «        }d}||k    sJ ‚d S )Nr   ©ÚEqualityr    r!   zŸcdef extern from 'file.h':
    void test(double x, double y, double *z)

def test_c(double x, double y):

    cdef double z = 0
    test(x, y, &z)
    return z©Úsympy.core.relationalr-   r   r	   r   r   r   r"   ©r-   r#   r$   r%   r(   r'   r   r)   s           r   Útest_cython_wrapper_outargr1   4   sŽ   € Ø.Ð.Ð.Ð.Ð.Ð.Ý�gÑÔ�G€A€qˆ!Ý ¥¡¤Ñ.Ô.€Hå˜6 8 8¨A¨q°1©uÑ#5Ô#5Ñ6Ô6€GÝ˜Ô)¨G¨9Ñ5Ô5€Fð	ð ð �XÒÐÐÐÐÐr   c                  óî   — ddl m}  t          d¦  «        \  }}}t          t	          ¦   «         ¦  «        }t          d | |||z   |z   ¦  «        ¦  «        }t          |j        |g¦  «        }d}||k    sJ ‚d S )Nr   r,   r    r!   z“cdef extern from 'file.h':
    void test(double x, double y, double *z)

def test_c(double x, double y, double z):

    test(x, y, &z)
    return zr.   r0   s           r   Útest_cython_wrapper_inoutargr3   G   s’   € Ø.Ð.Ð.Ð.Ð.Ð.Ý�gÑÔ�G€A€qˆ!Ý ¥¡¤Ñ.Ô.€HÝ˜6 8 8¨A¨q°1©u°q©yÑ#9Ô#9Ñ:Ô:€GÝ˜Ô)¨G¨9Ñ5Ô5€Fð	ð ð �XÒÐÐÐÐÐr   c                  ó¬  — ddl m}  t          d¦  «        \  }}}t          d | |||z   ¦  «        ¦  «        }t	          t          ¦   «         ¦  «        }ddt          j        iz  }t          j	        ¦   «         }t          j        |¦  «         t          j                             |d¦  «        }|                     ||¬¦  «         t!          |¦  «                             ¦   «         }	|	|k    sJ ‚t	          t          ¦   «         d	d
gdgddgdgddgdddii¬¦  «        }ddt          j        iz  }|                     ||¬¦  «         t!          |¦  «                             ¦   «         }	|	|k    sJ ‚ddt          j        iz  }d|_        |                     ||¬¦  «         t!          |¦  «                             ¦   «         }	|	|k    sJ ‚t          j        ¦   «          d S )Nr   r,   r    r!   a¹  from setuptools import setup
from setuptools import Extension
from Cython.Build import cythonize
cy_opts = {'compiler_directives': {'language_level': '3'}}

ext_mods = [Extension(
    'wrapper_module_%(num)s', ['wrapper_module_%(num)s.pyx', 'wrapped_code_%(num)s.c'],
    include_dirs=[],
    library_dirs=[],
    libraries=[],
    extra_compile_args=['-std=c99'],
    extra_link_args=[]
)]
setup(ext_modules=cythonize(ext_mods, **cy_opts))
Únumzsetup.py)Ú	build_dirz/usr/local/includez/opt/booger/includez/user/local/libÚthelibÚnilibz
-slow-mathz-lswampz	-ltridentÚcompiler_directivesÚboundscheckF)Úinclude_dirsÚlibrary_dirsÚ	librariesÚextra_compile_argsÚextra_link_argsÚcythonize_optionsa)  from setuptools import setup
from setuptools import Extension
from Cython.Build import cythonize
cy_opts = {'compiler_directives': {'boundscheck': False}}

ext_mods = [Extension(
    'wrapper_module_%(num)s', ['wrapper_module_%(num)s.pyx', 'wrapped_code_%(num)s.c'],
    include_dirs=['/usr/local/include', '/opt/booger/include'],
    library_dirs=['/user/local/lib'],
    libraries=['thelib', 'nilib'],
    extra_compile_args=['-slow-math', '-std=c99'],
    extra_link_args=['-lswamp', '-ltrident']
)]
setup(ext_modules=cythonize(ext_mods, **cy_opts))
aN  from setuptools import setup
from setuptools import Extension
from Cython.Build import cythonize
cy_opts = {'compiler_directives': {'boundscheck': False}}
import numpy as np

ext_mods = [Extension(
    'wrapper_module_%(num)s', ['wrapper_module_%(num)s.pyx', 'wrapped_code_%(num)s.c'],
    include_dirs=['/usr/local/include', '/opt/booger/include', np.get_include()],
    library_dirs=['/user/local/lib'],
    libraries=['thelib', 'nilib'],
    extra_compile_args=['-slow-math', '-std=c99'],
    extra_link_args=['-lswamp', '-ltrident']
)]
setup(ext_modules=cythonize(ext_mods, **cy_opts))
T)r/   r-   r   r   r	   r   r   Ú_module_counterÚtempfileÚmkdtempr   Ú
tmp_folderÚosÚpathÚjoinÚ_prepare_filesr   Ú	read_textÚ_need_numpyÚcleanup)
r-   r#   r$   r%   r'   r(   r)   Útemp_dirÚsetup_file_pathÚ
setup_texts
             r   Ú!test_cython_wrapper_compile_flagsrO   X   s  € Ø.Ð.Ð.Ð.Ð.Ð.Ý�gÑÔ�G€A€qˆ!Ý˜6 8 8¨A¨q°1©uÑ#5Ô#5Ñ6Ô6€Gå ¥¡¤Ñ,Ô,€Hðð �kÔ)Ð*ñ+€Hõ" ÔÑ!Ô!€HÝÔ˜hÑ'Ô'Ð'Ý”g—l’l 8¨ZÑ8Ô8€Oà×Ò˜G¨xÐÑ8Ô8Ð8Ý�oÑ&Ô&×0Ò0Ñ2Ô2€JØ˜Ò!Ð!Ð!Ð!å ¥¡¤Ø/CÐEZÐ.[Ø/@Ð.AØ,4°gÐ+>Ø5A°NØ2;¸[Ð1IØ4IÈMÐ[`ÐKaÐ3bð#ñ #ô #€Hðð �kÔ)Ð*ñ+€Hð" ×Ò˜G¨xÐÑ8Ô8Ð8Ý�oÑ&Ô&×0Ò0Ñ2Ô2€JØ˜Ò!Ð!Ð!Ð!ðð  �kÔ)Ð*ñ!+€Hð$  €HÔØ×Ò˜G¨xÐÑ8Ô8Ð8Ý�oÑ&Ô&×0Ò0Ñ2Ô2€JØ˜Ò!Ð!Ð!Ð!åÔÑÔÐÐÐr   c                  ój  — ddl m}  ddlm}  |d¦  «         |d¦  «         |d¦  «        }}}d„ |||fD ¦   «         \  }}} | |||z   ¦  «        }t	          d|¦  «        }	t          t          ¦   «         ¦  «        }
t          |
j        |	g¦  «        }d	}| 	                    |||¬
¦  «        }||k    sJ ‚d S )Nr   r,   )ÚDummyr#   r$   r%   c                 ó6   — g | ]}t          |j        ¦  «        ‘ŒS © )ÚstrÚdummy_index)Ú.0Úds     r   ú
<listcomp>z8test_cython_wrapper_unique_dummyvars.<locals>.<listcomp>²   s"   € Ð>Ð>Ð>¨q�˜AœMÑ*Ô*Ð>Ð>Ð>r   r!   zåcdef extern from 'file.h':
    void test(double x_{x_id}, double y_{y_id}, double *z_{z_id})

def test_c(double x_{x_id}, double y_{y_id}):

    cdef double z_{z_id} = 0
    test(x_{x_id}, y_{y_id}, &z_{z_id})
    return z_{z_id})Úx_idÚy_idÚz_id)
r/   r-   Úsympy.core.symbolrQ   r   r	   r   r   r"   Úformat)r-   rQ   r#   r$   r%   rY   rZ   r[   r&   r'   r(   r   Úexpected_templater)   s                 r   Ú$test_cython_wrapper_unique_dummyvarsr_   ®   sñ   € Ø.Ð.Ð.Ð.Ð.Ð.Ø'Ð'Ð'Ð'Ð'Ð'Øˆe�C‰jŒj˜%˜% ™*œ* e e¨C¡j¤jˆ!€q€AØ>Ð>°Q¸¸1°IÐ>Ñ>Ô>Ñ€Dˆ$�Øˆ8�A�q˜1‘uÑÔ€DÝ˜6 4Ñ(Ô(€GÝ ¥¡¤Ñ,Ô,€HÝ˜Ô)¨G¨9Ñ5Ô5€Fð	ð ð !×'Ò'¨T¸À4Ð'ÑHÔH€HØ�XÒÐÐÐÐÐr   c                  óD  — t          d¦  «        \  } }}t          | |z   d¬¦  «        } |¦   «         t          | |z   ¦  «        k    sJ ‚|j        dk    sJ ‚|j        dk    sJ ‚t          t          || |z   ¦  «        d¬¦  «        } |¦   «         t          | |z   ¦  «        k    sJ ‚|j        dk    sJ ‚|j        dk    sJ ‚t          t          || |z   |z   ¦  «        d¬¦  «        } |¦   «         t          | |z   |z   ¦  «        k    sJ ‚|j        dk    sJ ‚|j        dk    sJ ‚d S )Núx y zÚdummy©Úbackendzx, yÚnamelessr%   zx, y, z)r   r   rT   ÚargsÚreturnsr   )r#   r$   r%   Úfs       r   Útest_autowrap_dummyri   Ã   sN  € Ý�gÑÔ�G€A€qˆ!õ 	��Q‘ Ð(Ñ(Ô(€AØˆ1‰3Œ3•#�a˜!‘e‘*”*ÒÐÐÐØŒ6�VÒÐÐÐØŒ9˜
Ò"Ð"Ð"Ð"Ý•�A�q˜1‘u‘” wÐ/Ñ/Ô/€AØˆ1‰3Œ3•#�a˜!‘e‘*”*ÒÐÐÐØŒ6�VÒÐÐÐØŒ9˜ÒÐÐÐÝ•�A�q˜1‘u˜q‘yÑ!Ô!¨7Ð3Ñ3Ô3€AØˆ1‰3Œ3•#�a˜!‘e˜a‘i‘.”.Ò Ð Ð Ð ØŒ6�YÒÐÐÐØŒ9˜ÒÐÐÐÐÐr   c                  óð  ‡‡‡— t          d¦  «        \  ŠŠŠt          t          ˆˆˆfd„¦  «         t          t	          ‰‰‰z   ¦  «        d‰‰g¬¦  «        }  | ¦   «         t          ‰‰z   ¦  «        k    sJ ‚| j        dk    sJ ‚| j        dk    sJ ‚t          t          ˆˆˆfd„¦  «         t          t	          ‰‰‰z   ‰z   ¦  «        d‰‰‰g¬¦  «        }  | ¦   «         t          ‰‰z   ‰z   ¦  «        k    sJ ‚| j        dk    sJ ‚| j        dk    sJ ‚t          t	          ‰‰‰z   ‰z   ¦  «        d‰‰‰f¬¦  «        }  | ¦   «         t          ‰‰z   ‰z   ¦  «        k    sJ ‚| j        dk    sJ ‚| j        dk    sJ ‚d S )	Nra   c                  óL   •— t          t          ‰‰ ‰z   ¦  «        d‰ g¬¦  «        S ©Nrb   ©rd   rf   ©r   r   ©r#   r$   r%   s   €€€r   ú<lambda>z$test_autowrap_args.<locals>.<lambda>Ù   s+   ø€ ­Xµb¸¸AÀ¹E±l´lØ ! ð.&ñ .&ô .&€ r   rb   rm   zy, xr%   c                  óT   •— t          t          ‰‰ ‰z   ‰z   ¦  «        d‰ ‰g¬¦  «        S rl   rn   ro   s   €€€r   rp   z$test_autowrap_args.<locals>.<lambda>à   s3   ø€ ­Xµb¸¸AÀ¹EÀA¹IÑ6FÔ6FØ ! Q ð.)ñ .)ô .)€ r   zy, x, z)r   r   r   r   r   rT   rf   rg   )rh   r#   r$   r%   s    @@@r   Útest_autowrap_argsrr   Ö   sÝ  øøø€ Ý�gÑÔ�G€A€qˆ!å
Õ#ð &&ð &&ð &&ð &&ð &&ð &&ñ 'ô 'ð 'å•�A�q˜1‘u‘” w°a¸°VÐ<Ñ<Ô<€AØˆ1‰3Œ3•#�a˜!‘e‘*”*ÒÐÐÐØŒ6�VÒÐÐÐØŒ9˜ÒÐÐÐå
Õ#ð &)ð &)ð &)ð &)ð &)ð &)ñ *ô *ð *å•�A�q˜1‘u˜q‘yÑ!Ô!¨7¸!¸QÀ¸ÐCÑCÔC€AØˆ1‰3Œ3•#�a˜!‘e˜a‘i‘.”.Ò Ð Ð Ð ØŒ6�YÒÐÐÐØŒ9˜ÒÐÐÐå•�A�q˜1‘u˜q‘yÑ!Ô!¨7¸!¸QÀ¸ÐCÑCÔC€AØˆ1‰3Œ3•#�a˜!‘e˜a‘i‘.”.Ò Ð Ð Ð ØŒ6�YÒÐÐÐØŒ9˜ÒÐÐÐÐÐr   c                  óJ  — t          d¦  «        \  } }t          j        ¦   «         }t          j        |¦  «         t          | |z   d|¬¦  «        } |¦   «         t          | |z   ¦  «        k    sJ ‚t          j        |t          j	        ¦  «        sJ ‚t          j
        ¦   «          d S )Núx yrb   ©rd   Útempdir)r   rB   rC   r   rD   r   rT   rE   ÚaccessÚF_OKrK   )r#   r$   Útmprh   s       r   Útest_autowrap_store_filesrz   ì   s˜   € Ý�5‰>Œ>�D€A€qÝ
Ô
Ñ
Ô
€CÝÔ˜cÑ"Ô"Ð"å��Q‘ °Ð5Ñ5Ô5€AØˆ1‰3Œ3•#�a˜!‘e‘*”*ÒÐÐÐÝŒ9�S�"œ'Ñ"Ô"Ð"Ð"Ð"åÔÑÔÐÐÐr   c                  óü  — t          d¦  «        \  } }d}t          j        ¦   «         }t          j        ¦   «         }	 t          j        |¦  «         t          | |z   d|¬¦  «        } |¦   «         t          | |z   ¦  «        k    sJ ‚t          j        |t          j	        ¦  «        sJ ‚	 t          j        |¦  «         t          j        |¦  «         d S # t          j        |¦  «         t          j        |¦  «         w xY w)Nrt   z./tmprb   ru   )r   rE   ÚgetcwdrB   rC   Úchdirr   rT   rw   rx   ÚshutilÚrmtree)r#   r$   ry   Ú	saved_cwdÚtemp_cwdrh   s         r   Ú'test_autowrap_store_files_issue_gh12939r‚   ÷   sé   € Ý�5‰>Œ>�D€A€qØ
€CÝ”	‘”€IÝÔÑ!Ô!€Hð Ý
Œ�ÑÔÐÝ�Q˜‘U G°SÐ9Ñ9Ô9ˆØˆq‰sŒs•c˜!˜a™%‘j”jÒ Ð Ð Ð ÝŒy˜�bœgÑ&Ô&Ð&Ð&Ð&Ð&å
Œ�ÑÔÐÝŒ�hÑÔÐÐÐøõ 	Œ�ÑÔÐÝŒ�hÑÔÐÐøøøs   ¼A*C Ã*C;c                  ó¨   — t          d¦  «        \  } }t          d| |z   d¬¦  «        }|                     ¦   «         t          | |z   ¦  «        k    sJ ‚d S )Nrt   rh   rb   rc   )r   r   Ú_imp_rT   )r#   r$   rh   s      r   Útest_binary_functionr…     sR   € Ý�5‰>Œ>�D€A€qÝ˜˜Q ™U¨GÐ4Ñ4Ô4€AØ�7Š7‰9Œ9�˜A ™E™
œ
Ò"Ð"Ð"Ð"Ð"Ð"r   c                  óî   — t          d¦  «        \  } }}t          t          d¦  «        ¦  «        }t          d| |z   |z   ¦  «        }t	          |j        |g¦  «        }ddt          j        iz  }||k    sJ ‚d S )Nr    Úufuncifyr!   af	  #include "Python.h"
#include "math.h"
#include "numpy/ndarraytypes.h"
#include "numpy/ufuncobject.h"
#include "numpy/halffloat.h"
#include "file.h"

static PyMethodDef wrapper_module_%(num)sMethods[] = {
        {NULL, NULL, 0, NULL}
};

#ifdef NPY_1_19_API_VERSION
static void test_ufunc(char **args, const npy_intp *dimensions, const npy_intp* steps, void* data)
#else
static void test_ufunc(char **args, npy_intp *dimensions, npy_intp* steps, void* data)
#endif
{
    npy_intp i;
    npy_intp n = dimensions[0];
    char *in0 = args[0];
    char *in1 = args[1];
    char *in2 = args[2];
    char *out0 = args[3];
    npy_intp in0_step = steps[0];
    npy_intp in1_step = steps[1];
    npy_intp in2_step = steps[2];
    npy_intp out0_step = steps[3];
    for (i = 0; i < n; i++) {
        *((double *)out0) = test(*(double *)in0, *(double *)in1, *(double *)in2);
        in0 += in0_step;
        in1 += in1_step;
        in2 += in2_step;
        out0 += out0_step;
    }
}
PyUFuncGenericFunction test_funcs[1] = {&test_ufunc};
static char test_types[4] = {NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE};
static void *test_data[1] = {NULL};

#if PY_VERSION_HEX >= 0x03000000
static struct PyModuleDef moduledef = {
    PyModuleDef_HEAD_INIT,
    "wrapper_module_%(num)s",
    NULL,
    -1,
    wrapper_module_%(num)sMethods,
    NULL,
    NULL,
    NULL,
    NULL
};

PyMODINIT_FUNC PyInit_wrapper_module_%(num)s(void)
{
    PyObject *m, *d;
    PyObject *ufunc0;
    m = PyModule_Create(&moduledef);
    if (!m) {
        return NULL;
    }
    import_array();
    import_umath();
    d = PyModule_GetDict(m);
    ufunc0 = PyUFunc_FromFuncAndData(test_funcs, test_data, test_types, 1, 3, 1,
            PyUFunc_None, "wrapper_module_%(num)s", "Created in SymPy with Ufuncify", 0);
    PyDict_SetItemString(d, "test", ufunc0);
    Py_DECREF(ufunc0);
    return m;
}
#else
PyMODINIT_FUNC initwrapper_module_%(num)s(void)
{
    PyObject *m, *d;
    PyObject *ufunc0;
    m = Py_InitModule("wrapper_module_%(num)s", wrapper_module_%(num)sMethods);
    if (m == NULL) {
        return;
    }
    import_array();
    import_umath();
    d = PyModule_GetDict(m);
    ufunc0 = PyUFunc_FromFuncAndData(test_funcs, test_data, test_types, 1, 3, 1,
            PyUFunc_None, "wrapper_module_%(num)s", "Created in SymPy with Ufuncify", 0);
    PyDict_SetItemString(d, "test", ufunc0);
    Py_DECREF(ufunc0);
}
#endifr5   )r   r
   r   r   r   Údump_cr   rA   )r#   r$   r%   Úcode_wrapperr'   r   r)   s          r   Útest_ufuncify_sourcerŠ     sŒ   € Ý�gÑÔ�G€A€qˆ!Ý&¥z°*Ñ'=Ô'=Ñ>Ô>€LÝ˜6 1 q¡5¨1¡9Ñ-Ô-€GÝ˜Ô+¨g¨YÑ7Ô7€FðW
ðn •KÔ/Ð0ñoW1€Hðp �XÒÐÐÐÐÐr   c                  óF  ‡‡— t          d¦  «        \  } }}| ||fŠ| |dz  z   d|dz  z  z   Št          t          d¦  «        ¦  «        }ˆˆfd„t          t	          ‰¦  «        ¦  «        D ¦   «         }t          |j        |d¬¦  «        }d	d
t          j        iz  }||k    sJ ‚d S )Nr    é   é
   é   r‡   c           	      óŠ   •— g | ]?}t          d                      |¦  «        ‰                     ‰|         ¦  «        ‰¦  «        ‘Œ@S )zfunc{})r   r]   Údiff)rV   Úir&   Úvar_symbolss     €€r   rX   z4test_ufuncify_source_multioutput.<locals>.<listcomp>q  sB   ø€ ÐzÐzÐzÐ]^•˜XŸ_š_¨QÑ/Ô/°·²¸;Àq¼>Ñ1JÔ1JÈKÑXÔXÐzÐzÐzr   Ú	multitest)Úfuncnamea  #include "Python.h"
#include "math.h"
#include "numpy/ndarraytypes.h"
#include "numpy/ufuncobject.h"
#include "numpy/halffloat.h"
#include "file.h"

static PyMethodDef wrapper_module_%(num)sMethods[] = {
        {NULL, NULL, 0, NULL}
};

#ifdef NPY_1_19_API_VERSION
static void multitest_ufunc(char **args, const npy_intp *dimensions, const npy_intp* steps, void* data)
#else
static void multitest_ufunc(char **args, npy_intp *dimensions, npy_intp* steps, void* data)
#endif
{
    npy_intp i;
    npy_intp n = dimensions[0];
    char *in0 = args[0];
    char *in1 = args[1];
    char *in2 = args[2];
    char *out0 = args[3];
    char *out1 = args[4];
    char *out2 = args[5];
    npy_intp in0_step = steps[0];
    npy_intp in1_step = steps[1];
    npy_intp in2_step = steps[2];
    npy_intp out0_step = steps[3];
    npy_intp out1_step = steps[4];
    npy_intp out2_step = steps[5];
    for (i = 0; i < n; i++) {
        *((double *)out0) = func0(*(double *)in0, *(double *)in1, *(double *)in2);
        *((double *)out1) = func1(*(double *)in0, *(double *)in1, *(double *)in2);
        *((double *)out2) = func2(*(double *)in0, *(double *)in1, *(double *)in2);
        in0 += in0_step;
        in1 += in1_step;
        in2 += in2_step;
        out0 += out0_step;
        out1 += out1_step;
        out2 += out2_step;
    }
}
PyUFuncGenericFunction multitest_funcs[1] = {&multitest_ufunc};
static char multitest_types[6] = {NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE, NPY_DOUBLE};
static void *multitest_data[1] = {NULL};

#if PY_VERSION_HEX >= 0x03000000
static struct PyModuleDef moduledef = {
    PyModuleDef_HEAD_INIT,
    "wrapper_module_%(num)s",
    NULL,
    -1,
    wrapper_module_%(num)sMethods,
    NULL,
    NULL,
    NULL,
    NULL
};

PyMODINIT_FUNC PyInit_wrapper_module_%(num)s(void)
{
    PyObject *m, *d;
    PyObject *ufunc0;
    m = PyModule_Create(&moduledef);
    if (!m) {
        return NULL;
    }
    import_array();
    import_umath();
    d = PyModule_GetDict(m);
    ufunc0 = PyUFunc_FromFuncAndData(multitest_funcs, multitest_data, multitest_types, 1, 3, 3,
            PyUFunc_None, "wrapper_module_%(num)s", "Created in SymPy with Ufuncify", 0);
    PyDict_SetItemString(d, "multitest", ufunc0);
    Py_DECREF(ufunc0);
    return m;
}
#else
PyMODINIT_FUNC initwrapper_module_%(num)s(void)
{
    PyObject *m, *d;
    PyObject *ufunc0;
    m = Py_InitModule("wrapper_module_%(num)s", wrapper_module_%(num)sMethods);
    if (m == NULL) {
        return;
    }
    import_array();
    import_umath();
    d = PyModule_GetDict(m);
    ufunc0 = PyUFunc_FromFuncAndData(multitest_funcs, multitest_data, multitest_types, 1, 3, 3,
            PyUFunc_None, "wrapper_module_%(num)s", "Created in SymPy with Ufuncify", 0);
    PyDict_SetItemString(d, "multitest", ufunc0);
    Py_DECREF(ufunc0);
}
#endifr5   )	r   r
   r   ÚrangeÚlenr   rˆ   r   rA   )	r#   r$   r%   r‰   r   r   r)   r&   r’   s	          @@r   Ú test_ufuncify_source_multioutputr—   l  sÎ   øø€ Ý�gÑÔ�G€A€qˆ!Ø�a˜�)€KØˆq�!‰t‰8�b˜˜A™‘gÑ€DÝ&¥z°*Ñ'=Ô'=Ñ>Ô>€LØzÐzÐzÐzÐzÕbgÕhkÐlwÑhxÔhxÑbyÔbyÐzÑzÔz€HÝ˜Ô+¨XÀÐLÑLÔL€Fð_
ð~ •KÔ/Ð0ñ_1€Hð@ �XÒÐÐÐÐÐr   )r   )&rE   rB   r~   Úior   Úpathlibr   Ú
sympy.corer   r   Úsympy.utilities.autowrapr   r   r	   r
   r   Úsympy.utilities.codegenr   r   r   r   Úsympy.testing.pytestr   Úsympy.testing.tmpfilesr   r   r*   r1   r3   rO   r_   ri   rr   rz   r‚   r…   rŠ   r—   rS   r   r   ú<module>rŸ      só  ðð 
€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "ðAð Að Að Að Að Að Að Að Að Að Að Að Að Aðð ð ð ð ð ð ð ð ð ð ð ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ðð ð ð"ð ð ð&ð ð ð"Tð Tð Tðlð ð ð*ð ð ð&ð ð ð,	ð 	ð 	ð ð  ð  ð#ð #ð #ð]ð ]ð ]ð@gð gð gð gð gr   