o
    *ήc                     @   sZ   d dl Z d dlmZ d dlmZ d dlmZ edZedZddgZ	dd
dZ
dd ZdS )    N)import_module)skip)compile_link_import_stringsnumpycython)z	sigmoid.cz
#include <math.h>

void sigmoid(int n, const double * const restrict in,
             double * const restrict out, double lim){
    for (int i=0; i<n; ++i){
        const double x = in[i];
        out[i] = x*pow(pow(x/lim, 8)+1, -1./8.);
    }
}
)z_sigmoid.pyxaw  
import numpy as np
cimport numpy as cnp

cdef extern void c_sigmoid "sigmoid" (int, const double * const,
                                      double * const, double)

def sigmoid(double [:] inp, double lim=350.0):
    cdef cnp.ndarray[cnp.float64_t, ndim=1] out = np.empty(
        inp.size, dtype=np.float64)
    c_sigmoid(inp.size, &inp[0], &out[0], lim)
    return out
     u@c                 C   s   | | | d d d  S )N      g      ? )datalimr
   r
   Z/tmp/pip-target-vg8gfxp4/lib/python/sympy/utilities/_compilation/tests/test_compilation.pynpy&   s   r   c               
   C   s   t std tstd ddlm}  |  std tdt  gd}d }z3tt|d\}}t j		d	}|
|}t|}t ||sDJ W |rT|d
 rVt|d
  d S d S d S |rf|d
 rgt|d
  w w w )Nznumpy not installed.zcython not installed.r   )has_czNo C compiler found.c99)stdinclude_dirs)compile_kwargsi   	build_dir)r   r   r   sympy.utilities._compilationr   dictget_includer   	_sources1randomsigmoidr   allcloseshutilrmtree)r   
compile_kwinfomodr   res_modres_npyr
   r
   r    test_compile_link_import_strings*   s(   
r#   )r   )r   sympy.externalr   sympy.testing.pytestr   (sympy.utilities._compilation.compilationr   r   r   r   r   r#   r
   r
   r
   r   <module>   s    
