ó
    „ñ:i?  ã                   óª   • S SK r S SKrS SKJs  Js  Jr  S SKJ	r	J
r
  S SKJr  S rS rS rS rS=qqS rS	 rS
 rS rS rS rS rS rS rS rS rg)é    N)Úimport_dynamicÚtemp_directory)Ú
complex128c                  ó†   • SSK Jn   SnU " 5       nUR                  U5        SSKJn  X"R                  UR                  5      4$ )zH
Create an inline module, return the corresponding ffi and dll objects.
r   ©ÚFFIz­
    double _numba_test_sin(double x);
    double _numba_test_cos(double x);
    double _numba_test_funcptr(double (*func)(double));
    bool _numba_test_boolean(void);
    )Ú
_helperlib)Úcffir   ÚcdefÚnumbar	   ÚdlopenÚ__file__)r   ÚdefsÚffir	   s       Ú\/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/tests/cffi_usecases.pyÚload_inline_moduler   
   s=   € õ ð
€Dñ ‹%€CØ‡H�HˆT„Nå Ø—
‘
˜:×.Ñ.Ó/Ð/Ð/ó    c                  ó@  • SSK Jn   SnSnUS-   nX-   S-   nU " 5       nUR                  SU5        UR                  USS	9  [	        S
5      nUR                  US9  [        R                  R                  U5         [        S5      n[        R                  " U5        [        R                  " UR                  R                  S5      [        5        UR                  U4[        R                  R!                  U5        $ ! [        R                  R!                  U5        f = f)zQ
Compile an out-of-line module, return the corresponding ffi and
module objects.
r   r   zh
    typedef struct _numba_complex {
        double real;
        double imag;
    } numba_complex;
    z“
    #ifdef _MSC_VER
        #define false 0
        #define true 1
        #define bool int
    #else
        #include <stdbool.h>
    #endif
    aE  
    bool boolean(void);
    double sin(double x);
    double cos(double x);
    int foo(int a, int b, int c);
    void vsSin(int n, float* x, float* y);
    void vdSin(int n, double* x, double* y);
    void vector_real(numba_complex *c, double *real, int n);
    void vector_imag(numba_complex *c, double *imag, int n);
    aÅ  
    static bool boolean(void)
    {
        return true;
    }

    static int foo(int a, int b, int c)
    {
        return a + b * c;
    }

    void vsSin(int n, float* x, float* y) {
        int i;
        for (i=0; i<n; i++)
            y[i] = sin(x[i]);
    }

    void vdSin(int n, double* x, double* y) {
        int i;
        for (i=0; i<n; i++)
            y[i] = sin(x[i]);
    }

    static void vector_real(numba_complex *c, double *real, int n) {
        int i;
        for (i = 0; i < n; i++)
            real[i] = c[i].real;
    }

    static void vector_imag(numba_complex *c, double *imag, int n) {
        int i;
        for (i = 0; i < n; i++)
            imag[i] = c[i].imag;
    }
    Úcffi_usecases_oolT)ÚoverrideÚ	test_cffi)Útmpdirzstruct _numba_complex)r
   r   Ú
set_sourcer   r   ÚcompileÚsysÚpathÚappendr   Úcffi_supportÚregister_moduleÚregister_typer   Útypeofr   Úremove)r   Únumba_complexÚbool_definer   Úsourcer   r   Úmods           r   Úload_ool_moduler'   !   sö   € õ
 ð€Mð€Kð ð 	ñ 	€Dð Ñ(ð ",ñ "€FñH ‹%€CØ‡N�NÐ&¨Ô/Ø‡H�HˆT˜D€HÑ!Ü˜KÓ(€FØ‡K�K�v€KÑÜ‡H�H‡O�O�FÔð ÜÐ0Ó1ˆÜ×$Ò$ SÔ)Ü×"Ò" 3§7¡7§>¡>Ð2IÓ#JÜ#-ô	/à�w‰w˜ˆ|ä�‰�‰˜ÕøŒ�‰�‰˜Õús   Á:A"C< Ã<!Dc                  óx   • [         c3  [        5       u  q n U R                  qU R                  qU R                  qA gg)zw
Initialize module globals.  This can invoke external utilities, hence not
being executed implicitly at module import.
N)r   r   Ú_numba_test_sinÚcffi_sinÚ_numba_test_cosÚcffi_cosÚ_numba_test_booleanÚ	cffi_bool)Údlls    r   Úinitr0   x   s>   € ô �{Ü%Ó'‰ˆˆSØ×&Ñ&ˆØ×&Ñ&ˆØ×+Ñ+ˆ	Ùð r   c                  ó�  • [         c¿  [        5       u  q n U R                  R                  qU R                  R
                  qU R                  R                  qU R                  R                  q
U R                  R                  qU R                  R                  qU R                  R                  qU R                  R                  qA gg)z
Same as init() for OOL mode.
N)Úffi_oolr'   ÚlibÚsinÚcffi_sin_oolÚcosÚcffi_cos_oolÚfooÚcffi_fooÚbooleanÚcffi_bool_oolÚvsSinÚvdSinÚvector_realÚvector_imag)r&   s    r   Úinit_oolr@   †   s‰   € ô �Ü&Ó(‰ˆ�Ø—w‘w—{‘{ˆØ—w‘w—{‘{ˆØ—7‘7—;‘;ˆØŸ™Ÿ™ˆØ—‘—‘ˆØ—‘—‘ˆØ—g‘g×)Ñ)ˆØ—g‘g×)Ñ)ˆÙð r   c                 ó   • [        U 5      S-  $ ©Né   )r*   ©Úxs    r   Úuse_cffi_sinrF   œ   s   € Ü�A‹;˜‰?Ðr   c                 ó0   • [        U 5      [        U 5      -
  $ ©N)r*   r,   rD   s    r   Úuse_two_funcsrI   Ÿ   s   € Ü�A‹;œ !›Ñ$Ð$r   c                 ó   • [        U 5      S-  $ rB   )r5   rD   s    r   Úuse_cffi_sin_oolrK   ¢   s   € Ü˜‹?˜QÑÐr   c                  ó   • [        5       $ rH   )r;   © r   r   Úuse_cffi_boolean_truerN   ¥   s
   € Ü‹?Ðr   c                 ó0   • [        U 5      [        U 5      -
  $ rH   )r5   r7   rD   s    r   Úuse_two_funcs_oolrP   ¨   s   € Ü˜‹?œ\¨!›_Ñ,Ð,r   c                 ó.   • US:”  a  U " U5      $ U" U5      $ )Nr   rM   )ÚfaÚfbrE   s      r   Úuse_func_pointerrT   «   s   € Øˆ1ƒuÙ�!‹uˆá�!‹uˆr   c                  ó   • [        SSS5      $ )Né   rC   é   )r9   rM   r   r   Úuse_user_defined_symbolsrX   ±   s   € Ü�A�q˜!ÓÐr   c                 ó|   • [        [        U 5      [        R                  U 5      [        R                  U5      5        g rH   )r<   Úlenr   Úfrom_bufferr2   ©rE   Úys     r   Úvector_sin_float32r^   ¸   ó&   € Ü	Œ#ˆa‹&”#—/‘/ !Ó$¤g×&9Ñ&9¸!Ó&<Õ=r   c                 ó|   • [        [        U 5      [        R                  U 5      [        R                  U5      5        g rH   )r=   rZ   r   r[   r2   r\   s     r   Úvector_sin_float64ra   »   r_   r   c                 ó|   • [        [        R                  U 5      [        R                  U5      [        U 5      5        g rH   )r>   r   r[   rZ   r\   s     r   Úvector_extract_realrc   Á   ó$   € Ü”—‘ Ó"¤C§O¡O°AÓ$6¼¸A»Õ?r   c                 ó|   • [        [        R                  U 5      [        R                  U5      [        U 5      5        g rH   )r?   r   r[   rZ   r\   s     r   Úvector_extract_imagrf   Ä   rd   r   )r   ÚnumpyÚnpÚnumba.core.typing.cffi_utilsÚcoreÚtypingÚ
cffi_utilsr   Únumba.tests.supportr   r   Únumba.core.typesr   r   r'   r0   r@   r   r2   rF   rI   rK   rN   rP   rT   rX   r^   ra   rc   rf   rM   r   r   Ú<module>ro      sr   ðÛ 
ã ç 3Ó 3ß >Ý 'ò0ò.T ònòð& Ð €€gòò%òòò-òòò>ò>ò@ó@r   