Instant

From The FEniCS project

Instant is a Python module that allows for instant inlining of C and C++ code in Python. It is a small Python module built on top of SWIG and Distutils.

Example of use

from instant import inline

add_func = inline("double add(double a, double b){ return a+b; }")

print "The sum of 3 and 4.5 is ", add_func(3, 4.5)

Example with numpy arrays beeing converted to C double arrays

from instant import inline_with_numpy

c_code = """
double sum (int n1, double* array1){
 double tmp = 0.0;
 for (int i=0; i < n1; i++) {
  tmp += array1[i];
 }
 return tmp;
}
"""

sum_func = inline_with_numpy(c_code, arrays = 'n1', 'array1')

a = numpy.arange(10000000); a = numpy.sin(a)

sum1 = sum_func(a)

On my machine, the above sum function is about three times faster than the corresponding sum function in numpy (see also the file test9.py that comes with the package).

Main authors

Kent-Andre Mardal and Magne Westlie

License

Instant is licensed under the BSD license.

Dependencies and requirements

Instant depends on SWIG.

Personal tools