#!/bin/sh
""":"
exec python $0 ${1+"$@"}
"""#"
from Instant import create_extension
import Numeric,sys
a = Numeric.arange(10000000)
a = Numeric.sin(a)
b = Numeric.arange(10000000)
b = Numeric.cos(b)
s = """
PyObject* add(PyObject* a_, PyObject* b_){
/*
various checks
*/
PyArrayObject* a=(PyArrayObject*) a_;
PyArrayObject* b=(PyArrayObject*) b_;
int n = a->dimensions[0];
int dims[1];
dims[0] = n;
PyArrayObject* ret;
ret = (PyArrayObject*) PyArray_FromDims(1, dims, PyArray_DOUBLE);
int i;
double aj;
double bj;
double *retj;
for (i=0; i < n; i++) {
retj = (double*)(ret->data+ret->strides[0]*i);
aj = *(double *)(a->data+ a->strides[0]*i);
bj = *(double *)(b->data+ b->strides[0]*i);
*retj = aj + bj;
}
return PyArray_Return(ret);
}
"""
create_extension(code=s, system_headers=["arrayobject.h"],
include_dirs=[sys.prefix + "/include/python" + sys.version[:3] + "/Numeric"],
init_code='import_array();', module="test4_ext"
)
import time
import test4_ext
t1 = time.time()
d = test4_ext.add(a,b)
t2 = time.time()
print 'With Instant:',t2-t1,'seconds'
t1 = time.time()
c = a+b
t2 = time.time()
print 'Med numpy: ',t2-t1,'seconds'
difference = abs(c - d)
sum = reduce( lambda a,b: a+b, difference)
print "The difference between the arrays computed by numpy and instant is " + str(sum)
syntax highlighted by Code2HTML, v. 0.9.1