chiark / gitweb /
bug fix - python strides are in bytes, not in doubles (thanks to Zhichao for the...
authorstevenj <stevenj@alum.mit.edu>
Sat, 12 Jun 2010 04:34:14 +0000 (00:34 -0400)
committerstevenj <stevenj@alum.mit.edu>
Sat, 12 Jun 2010 04:34:14 +0000 (00:34 -0400)
darcs-hash:20100612043414-c8de0-be0b85376f235b5e48551c6c917ad687ec41eaeb.gz

swig/nlopt-python.i

index 05570f141c8cf7b0c495218f26a5e108bd215df0..8a2e88e42c224d0276a0bd5c7f8649a34e6cbe6f 100644 (file)
@@ -34,7 +34,8 @@
   $1 = &arrayv;
   {
     double *arr_data = (double *) array_data(array);
-    int arr_i, arr_s = array_stride(array,0), arr_sz = array_size(array,0);
+    int arr_i, arr_s = array_stride(array,0) / sizeof(double);
+    int arr_sz = array_size(array,0);
     for (arr_i = 0; arr_i < arr_sz; ++arr_i)
       arrayv[arr_i] = arr_data[arr_i * arr_s];
   }
@@ -64,7 +65,7 @@ static void *dup_pyfunc(void *p) { Py_INCREF((PyObject*) p); return p; }
 
 static double func_python(unsigned n, const double *x, double *grad, void *f)
 {
-  npy_intp sz = npy_intp(n), sz0 = 0, stride1 = 1;
+  npy_intp sz = npy_intp(n), sz0 = 0, stride1 = sizeof(double);
   PyObject *xpy = PyArray_New(&PyArray_Type, 1, &sz, NPY_DOUBLE, &stride1,
                              const_cast<double*>(x), // not NPY_WRITEABLE
                              0, NPY_C_CONTIGUOUS | NPY_ALIGNED, NULL);