[Scipy-svn] r7026 - branches/0.9.x/scipy/integrate

scipy-svn at scipy.org scipy-svn at scipy.org
Tue Jan 11 07:48:55 EST 2011


Author: rgommers
Date: 2011-01-11 06:48:55 -0600 (Tue, 11 Jan 2011)
New Revision: 7026

Modified:
   branches/0.9.x/scipy/integrate/__quadpack.h
Log:
BUG: integrate: correct use of npy_intp vs int in __quadpack.h (#1103)

(backported from r7012)

Modified: branches/0.9.x/scipy/integrate/__quadpack.h
===================================================================
--- branches/0.9.x/scipy/integrate/__quadpack.h	2011-01-11 12:48:31 UTC (rev 7025)
+++ branches/0.9.x/scipy/integrate/__quadpack.h	2011-01-11 12:48:55 UTC (rev 7026)
@@ -1,11 +1,11 @@
 /* This file should be included into the _multipackmodule file */
 /* $Revision$ */
 /* module_methods:
-  {"_qagse", quadpack_qagse, METH_VARARGS, doc_qagse},   
+  {"_qagse", quadpack_qagse, METH_VARARGS, doc_qagse},
   {"_qagie", quadpack_qagie, METH_VARARGS, doc_qagie},
-  {"_qagpe", quadpack_qagpe, METH_VARARGS, doc_qagpe},   
-  {"_qawoe", quadpack_qawoe, METH_VARARGS, doc_qawoe},   
-  {"_qawfe", quadpack_qawfe, METH_VARARGS, doc_qawfe},   
+  {"_qagpe", quadpack_qagpe, METH_VARARGS, doc_qagpe},
+  {"_qawoe", quadpack_qawoe, METH_VARARGS, doc_qawoe},
+  {"_qawfe", quadpack_qawfe, METH_VARARGS, doc_qawfe},
   {"_qawse", quadpack_qawse, METH_VARARGS, doc_qawse},
   {"_qawce", quadpack_qawce, METH_VARARGS, doc_qawce},
  */
@@ -76,16 +76,16 @@
   /* Build argument list */
   if ((arg1 = PyTuple_New(1)) == NULL) goto fail;
 
-  PyTuple_SET_ITEM(arg1, 0, PyFloat_FromDouble(*x)); 
+  PyTuple_SET_ITEM(arg1, 0, PyFloat_FromDouble(*x));
                 /* arg1 now owns reference to Float object*/
   if ((arglist = PySequence_Concat( arg1, quadpack_extra_arguments)) == NULL) goto fail;
-    
+
   /* Call function object --- stored as a global variable.  Extra
           arguments are in another global variable.
    */
   if ((result = PyEval_CallObject(quadpack_python_function, arglist))==NULL) goto fail;
 
-  /* Have to do own error checking because PyFloat_AsDouble returns -1 on 
+  /* Have to do own error checking because PyFloat_AsDouble returns -1 on
      error -- making that return value from the function unusable.
 
      No; Solution is to test for Python Error Occurrence if -1 is return of PyFloat_AsDouble.
@@ -119,7 +119,8 @@
   PyObject *extra_args = NULL;
   PyObject *fcn;
 
-  npy_intp limit=50;
+  int      limit=50;
+  npy_intp limit_shape[1];
   int      full_output = 0;
   double   a, b, epsabs=1.49e-8, epsrel=1.49e-8;
   int      neval=0, ier=6, last=0, *iord;
@@ -129,19 +130,20 @@
   STORE_VARS();
 
   if (!PyArg_ParseTuple(args, "Odd|Oiddi", &fcn, &a, &b, &extra_args, &full_output, &epsabs, &epsrel, &limit)) return NULL;
+  limit_shape[0] = limit;
 
   /* Need to check that limit is bigger than 1 */
-  if (limit < 1) 
+  if (limit < 1)
     return Py_BuildValue("ddi",result,abserr,ier);
 
   QUAD_INIT_FUNC(fcn,extra_args)
 
   /* Setup iwork and work arrays */
-  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_INT);
-  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
+  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_INT);
+  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
   if (ap_iord == NULL || ap_alist == NULL || ap_blist == NULL || ap_rlist == NULL || ap_elist == NULL) goto fail;
   iord = (int *)ap_iord->data;
   alist = (double *)ap_alist->data;
@@ -167,7 +169,7 @@
   if (full_output) {
     return Py_BuildValue("dd{s:i,s:i,s:N,s:N,s:N,s:N,s:N}i", result, abserr, "neval", neval, "last", last, "iord", PyArray_Return(ap_iord), "alist", PyArray_Return(ap_alist), "blist", PyArray_Return(ap_blist), "rlist", PyArray_Return(ap_rlist), "elist", PyArray_Return(ap_elist),ier);
   }
-  else {    
+  else {
     Py_DECREF(ap_alist);
     Py_DECREF(ap_blist);
     Py_DECREF(ap_rlist);
@@ -198,16 +200,18 @@
   PyObject *extra_args = NULL;
   PyObject *fcn;
 
-  npy_intp limit=50;
+  int      limit=50;
+  npy_intp limit_shape[1];
   int      full_output = 0;
   double   bound, epsabs=1.49e-8, epsrel=1.49e-8;
   int      inf, neval=0, ier=6, last=0, *iord;
   double   result=0.0, abserr=0.0;
   double   *alist, *blist, *rlist, *elist;
-  
+
   STORE_VARS();
-  
+
   if (!PyArg_ParseTuple(args, "Odi|Oiddi", &fcn, &bound, &inf, &extra_args, &full_output, &epsabs, &epsrel, &limit)) return NULL;
+  limit_shape[0] = limit;
 
   /* Need to check that limit is bigger than 1 */
   if (limit < 1)
@@ -216,11 +220,11 @@
   QUAD_INIT_FUNC(fcn,extra_args);
 
   /* Setup iwork and work arrays */
-  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_INT);
-  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
+  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_INT);
+  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
   if (ap_iord == NULL || ap_alist == NULL || ap_blist == NULL || ap_rlist == NULL || ap_elist == NULL) goto fail;
   iord = (int *)ap_iord->data;
   alist = (double *)ap_alist->data;
@@ -247,7 +251,7 @@
   if (full_output) {
     return Py_BuildValue("dd{s:i,s:i,s:N,s:N,s:N,s:N,s:N}i", result, abserr, "neval", neval, "last", last, "iord", PyArray_Return(ap_iord), "alist", PyArray_Return(ap_alist), "blist", PyArray_Return(ap_blist), "rlist", PyArray_Return(ap_rlist), "elist", PyArray_Return(ap_elist),ier);
   }
-  else {    
+  else {
     Py_DECREF(ap_alist);
     Py_DECREF(ap_blist);
     Py_DECREF(ap_rlist);
@@ -281,7 +285,8 @@
   PyObject *extra_args = NULL;
   PyObject *fcn, *o_points;
 
-  npy_intp limit=50, npts2;
+  int      limit=50, npts2;
+  npy_intp limit_shape[1], npts2_shape[1];
   int      full_output = 0;
   double   a, b, epsabs=1.49e-8, epsrel=1.49e-8;
   int      neval=0, ier=6, last=0, *iord;
@@ -293,6 +298,7 @@
   STORE_VARS();
 
   if (!PyArg_ParseTuple(args, "OddO|Oiddi", &fcn, &a, &b, &o_points, &extra_args, &full_output, &epsabs, &epsrel, &limit)) return NULL;
+  limit_shape[0] = limit;
 
   /* Need to check that limit is bigger than 1 */
   if (limit < 1)
@@ -303,17 +309,18 @@
   ap_points = (PyArrayObject *)PyArray_ContiguousFromObject(o_points, PyArray_DOUBLE, 1, 1);
   if (ap_points == NULL) goto fail;
   npts2 = ap_points->dimensions[0];
+  npts2_shape[0] = npts2;
   points = (double *)ap_points->data;
 
   /* Setup iwork and work arrays */
-  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_INT);
-  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_pts = (PyArrayObject *)PyArray_SimpleNew(1,&npts2,PyArray_DOUBLE);
-  ap_level = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_ndin = (PyArrayObject *)PyArray_SimpleNew(1,&npts2,PyArray_DOUBLE);
+  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_INT);
+  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_pts = (PyArrayObject *)PyArray_SimpleNew(1,npts2_shape,PyArray_DOUBLE);
+  ap_level = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_ndin = (PyArrayObject *)PyArray_SimpleNew(1,npts2_shape,PyArray_DOUBLE);
   if (ap_iord == NULL || ap_alist == NULL || ap_blist == NULL || ap_rlist == NULL || ap_elist == NULL || ap_pts == NULL || ap_level == NULL || ap_ndin == NULL) goto fail;
   iord = (int *)ap_iord->data;
   alist = (double *)ap_alist->data;
@@ -327,7 +334,7 @@
   if (setjmp(quadpack_jmpbuf)) {
     goto fail;
   }
-  else {    
+  else {
     DQAGPE(quad_function, &a, &b, &npts2, points, &epsabs, &epsrel, &limit, &result, &abserr, &neval, &ier, alist, blist, rlist, elist, pts, iord, level, ndin, &last);
   }
 
@@ -343,7 +350,7 @@
   if (full_output) {
     return Py_BuildValue("dd{s:i,s:i,s:N,s:N,s:N,s:N,s:N,s:N,s:N,s:N}i", result, abserr, "neval", neval, "last", last, "iord", PyArray_Return(ap_iord), "alist", PyArray_Return(ap_alist), "blist", PyArray_Return(ap_blist), "rlist", PyArray_Return(ap_rlist), "elist", PyArray_Return(ap_elist), "pts", PyArray_Return(ap_pts), "level", PyArray_Return(ap_level), "ndin", PyArray_Return(ap_ndin),ier);
   }
-  else {    
+  else {
     Py_DECREF(ap_alist);
     Py_DECREF(ap_blist);
     Py_DECREF(ap_rlist);
@@ -383,7 +390,8 @@
   PyObject *extra_args = NULL, *o_chebmo = NULL;
   PyObject *fcn;
 
-  npy_intp limit=50, sz[2];
+  int      limit=50;
+  npy_intp limit_shape[1], sz[2];
   int      full_output = 0, maxp1=50, icall=1;
   double   a, b, epsabs=1.49e-8, epsrel=1.49e-8;
   int      neval=0, ier=6, integr=1, last=0, momcom=0, *iord;
@@ -391,10 +399,11 @@
   double   result=0.0, abserr=0.0, omega=0.0;
   double   *chebmo;
   double   *alist, *blist, *rlist, *elist;
-  
+
   STORE_VARS();
 
   if (!PyArg_ParseTuple(args, "Odddi|OiddiiiiO", &fcn, &a, &b, &omega, &integr, &extra_args, &full_output, &epsabs, &epsrel, &limit, &maxp1, &icall, &momcom, &o_chebmo)) return NULL;
+  limit_shape[0] = limit;
 
   /* Need to check that limit is bigger than 1 */
   if (limit < 1)
@@ -417,12 +426,12 @@
   chebmo = (double *) ap_chebmo->data;
 
   /* Setup iwork and work arrays */
-  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_INT);
-  ap_nnlog = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_INT);
-  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
+  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_INT);
+  ap_nnlog = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_INT);
+  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
   if (ap_iord == NULL || ap_nnlog == NULL || ap_alist == NULL || ap_blist == NULL || ap_rlist == NULL || ap_elist == NULL) goto fail;
   iord = (int *)ap_iord->data;
   nnlog = (int *)ap_nnlog->data;
@@ -449,7 +458,7 @@
   if (full_output) {
     return Py_BuildValue("dd{s:i,s:i,s:N,s:N,s:N,s:N,s:N,s:N,s:i,s:N}i", result, abserr, "neval", neval, "last", last, "iord", PyArray_Return(ap_iord), "alist", PyArray_Return(ap_alist), "blist", PyArray_Return(ap_blist), "rlist", PyArray_Return(ap_rlist), "elist", PyArray_Return(ap_elist), "nnlog", PyArray_Return(ap_nnlog), "momcom", momcom, "chebmo", PyArray_Return(ap_chebmo),ier);
   }
-  else {    
+  else {
     Py_DECREF(ap_alist);
     Py_DECREF(ap_blist);
     Py_DECREF(ap_rlist);
@@ -487,7 +496,8 @@
   PyObject *extra_args = NULL;
   PyObject *fcn;
 
-  npy_intp limlst = 50, limit=50, sz[2];
+  int      limlst = 50, limit=50;
+  npy_intp limlst_shape[1], limit_shape[1], sz[2];
   int      full_output = 0, maxp1=50;
   double   a, epsabs=1.49e-8;
   int      neval=0, ier=6, integr=1, *iord;
@@ -499,6 +509,8 @@
   STORE_VARS();
 
   if (!PyArg_ParseTuple(args, "Oddi|Oidiii", &fcn, &a, &omega, &integr, &extra_args, &full_output, &epsabs, &limlst, &limit, &maxp1)) return NULL;
+  limit_shape[0] = limit;
+  limlst_shape[0] = limlst;
 
   /* Need to check that limit is bigger than 1 */
   if (limit < 1)
@@ -513,15 +525,15 @@
   chebmo = (double *) ap_chebmo->data;
 
   /* Setup iwork and work arrays */
-  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_INT);
-  ap_nnlog = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_INT);
-  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_rslst = (PyArrayObject *)PyArray_SimpleNew(1,&limlst,PyArray_DOUBLE);
-  ap_erlst = (PyArrayObject *)PyArray_SimpleNew(1,&limlst,PyArray_DOUBLE);
-  ap_ierlst = (PyArrayObject *)PyArray_SimpleNew(1,&limlst,PyArray_INT);
+  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_INT);
+  ap_nnlog = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_INT);
+  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_rslst = (PyArrayObject *)PyArray_SimpleNew(1,limlst_shape,PyArray_DOUBLE);
+  ap_erlst = (PyArrayObject *)PyArray_SimpleNew(1,limlst_shape,PyArray_DOUBLE);
+  ap_ierlst = (PyArrayObject *)PyArray_SimpleNew(1,limlst_shape,PyArray_INT);
   if (ap_iord == NULL || ap_nnlog == NULL || ap_alist == NULL || ap_blist == NULL || ap_rlist == NULL || ap_elist == NULL || ap_rslst == NULL || ap_erlst == NULL || ap_ierlst == NULL) goto fail;
   iord = (int *)ap_iord->data;
   nnlog = (int *)ap_nnlog->data;
@@ -558,7 +570,7 @@
   if (full_output) {
     return Py_BuildValue("dd{s:i,s:i,s:N,s:N,s:N}i", result, abserr, "neval", neval, "lst", lst, "rslst", PyArray_Return(ap_rslst), "erlst", PyArray_Return(ap_erlst), "ierlst", PyArray_Return(ap_ierlst), ier);
   }
-  else {    
+  else {
     Py_DECREF(ap_rslst);
     Py_DECREF(ap_erlst);
     Py_DECREF(ap_ierlst);
@@ -593,7 +605,8 @@
   PyObject *extra_args = NULL;
   PyObject *fcn;
 
-  npy_intp limit=50;
+  int      limit;
+  npy_intp limit_shape[1];
   int      full_output = 0;
   double   a, b, c, epsabs=1.49e-8, epsrel=1.49e-8;
   int      neval=0, ier=6, last=0, *iord;
@@ -601,8 +614,9 @@
   double   *alist, *blist, *rlist, *elist;
 
   STORE_VARS();
-  
+
   if (!PyArg_ParseTuple(args, "Oddd|Oiddi", &fcn, &a, &b, &c, &extra_args, &full_output, &epsabs, &epsrel, &limit)) return NULL;
+  limit_shape[0] = limit;
 
   /* Need to check that limit is bigger than 1 */
   if (limit < 1)
@@ -611,11 +625,11 @@
   QUAD_INIT_FUNC(fcn,extra_args)
 
   /* Setup iwork and work arrays */
-  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_INT);
-  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
+  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_INT);
+  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
   if (ap_iord == NULL || ap_alist == NULL || ap_blist == NULL || ap_rlist == NULL || ap_elist == NULL) goto fail;
   iord = (int *)ap_iord->data;
   alist = (double *)ap_alist->data;
@@ -641,7 +655,7 @@
   if (full_output) {
     return Py_BuildValue("dd{s:i,s:i,s:N,s:N,s:N,s:N,s:N}i", result, abserr, "neval", neval, "last", last, "iord", PyArray_Return(ap_iord), "alist", PyArray_Return(ap_alist), "blist", PyArray_Return(ap_blist), "rlist", PyArray_Return(ap_rlist), "elist", PyArray_Return(ap_elist),ier);
   }
-  else {    
+  else {
     Py_DECREF(ap_alist);
     Py_DECREF(ap_blist);
     Py_DECREF(ap_rlist);
@@ -674,7 +688,8 @@
   PyObject *fcn;
 
   int      full_output = 0, integr;
-  npy_intp limit=50;
+  int      limit=50;
+  npy_intp limit_shape[1];
   double   a, b, epsabs=1.49e-8, epsrel=1.49e-8;
   double   alfa, beta;
   int      neval=0, ier=6, last=0, *iord;
@@ -682,8 +697,9 @@
   double   *alist, *blist, *rlist, *elist;
 
   STORE_VARS();
-  
+
   if (!PyArg_ParseTuple(args, "Odd(dd)i|Oiddi", &fcn, &a, &b, &alfa, &beta, &integr, &extra_args, &full_output, &epsabs, &epsrel, &limit)) return NULL;
+  limit_shape[0] = limit;
 
   /* Need to check that limit is bigger than 1 */
   if (limit < 1)
@@ -692,11 +708,11 @@
   QUAD_INIT_FUNC(fcn,extra_args)
 
   /* Setup iwork and work arrays */
-  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_INT);
-  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
-  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,&limit,PyArray_DOUBLE);
+  ap_iord = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_INT);
+  ap_alist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_blist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_rlist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
+  ap_elist = (PyArrayObject *)PyArray_SimpleNew(1,limit_shape,PyArray_DOUBLE);
   if (ap_iord == NULL || ap_alist == NULL || ap_blist == NULL || ap_rlist == NULL || ap_elist == NULL) goto fail;
   iord = (int *)ap_iord->data;
   alist = (double *)ap_alist->data;
@@ -722,7 +738,7 @@
   if (full_output) {
     return Py_BuildValue("dd{s:i,s:i,s:N,s:N,s:N,s:N,s:N}i", result, abserr, "neval", neval, "last", last, "iord", PyArray_Return(ap_iord), "alist", PyArray_Return(ap_alist), "blist", PyArray_Return(ap_blist), "rlist", PyArray_Return(ap_rlist), "elist", PyArray_Return(ap_elist),ier);
   }
-  else {    
+  else {
     Py_DECREF(ap_alist);
     Py_DECREF(ap_blist);
     Py_DECREF(ap_rlist);




More information about the Scipy-svn mailing list