[Scipy-svn] r3557 - in branches/scipy.scons: . scipy/io/tests scipy/linsolve/umfpack scipy/ndimage scipy/ndimage/segment scipy/ndimage/segment/tests scipy/ndimage/tests scipy/sandbox/montecarlo/examples scipy/sandbox/multigrid scipy/sandbox/multigrid/multigridtools scipy/sandbox/multigrid/tests scipy/sparse scipy/sparse/sparsetools scipy/stats/models/robust

scipy-svn at scipy.org scipy-svn at scipy.org
Wed Nov 21 07:33:03 EST 2007


Author: cdavid
Date: 2007-11-21 06:32:02 -0600 (Wed, 21 Nov 2007)
New Revision: 3557

Added:
   branches/scipy.scons/scipy/ndimage/segmenter.py
   branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/README.txt
Modified:
   branches/scipy.scons/
   branches/scipy.scons/scipy/io/tests/test_datasource.py
   branches/scipy.scons/scipy/linsolve/umfpack/info.py
   branches/scipy.scons/scipy/ndimage/segment/Segmenter_EXT.c
   branches/scipy.scons/scipy/ndimage/segment/Segmenter_IMPL.c
   branches/scipy.scons/scipy/ndimage/segment/ndImage_Segmenter_structs.h
   branches/scipy.scons/scipy/ndimage/segment/tests/test_segment.py
   branches/scipy.scons/scipy/ndimage/tests/test_segment.py
   branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed.py
   branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_2.py
   branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_3.py
   branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_4.py
   branches/scipy.scons/scipy/sandbox/multigrid/adaptive.py
   branches/scipy.scons/scipy/sandbox/multigrid/dec_test.py
   branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools.i
   branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools.py
   branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools_wrap.cxx
   branches/scipy.scons/scipy/sandbox/multigrid/multilevel.py
   branches/scipy.scons/scipy/sandbox/multigrid/tests/test_utils.py
   branches/scipy.scons/scipy/sandbox/multigrid/utils.py
   branches/scipy.scons/scipy/sparse/sparse.py
   branches/scipy.scons/scipy/sparse/sparsetools/sparsetools.py
   branches/scipy.scons/scipy/stats/models/robust/scale.py
   branches/scipy.scons/setup.py
Log:
Merged revisions 3540-3556 via svnmerge from 
http://svn.scipy.org/svn/scipy/trunk

........
  r3541 | tom.waite | 2007-11-16 06:56:38 +0900 (Fri, 16 Nov 2007) | 1 line
  
  Python segment execution 
........
  r3542 | tom.waite | 2007-11-16 09:28:25 +0900 (Fri, 16 Nov 2007) | 1 line
  
  changed morphological mask function passing method
........
  r3543 | tom.waite | 2007-11-16 09:29:18 +0900 (Fri, 16 Nov 2007) | 1 line
  
  changed function prototypes
........
  r3544 | tom.waite | 2007-11-16 09:31:11 +0900 (Fri, 16 Nov 2007) | 1 line
  
  changed PyArray type creation for edge and mask output arrays.
........
  r3545 | wnbell | 2007-11-16 17:41:00 +0900 (Fri, 16 Nov 2007) | 2 lines
  
  support for 64bit indices in multigridtools
........
  r3547 | tom.waite | 2007-11-17 10:15:06 +0900 (Sat, 17 Nov 2007) | 1 line
  
  Move C code to Python. Start with setup functions.
........
  r3548 | jarrod.millman | 2007-11-19 13:13:22 +0900 (Mon, 19 Nov 2007) | 2 lines
  
  ran reindent.py to cleanup whitespaces
........
  r3553 | rc | 2007-11-20 23:28:31 +0900 (Tue, 20 Nov 2007) | 2 lines
  
  Edited module docstring.
........



Property changes on: branches/scipy.scons
___________________________________________________________________
Name: svnmerge-integrated
   - /trunk:1-3539
   + /trunk:1-3556

Modified: branches/scipy.scons/scipy/io/tests/test_datasource.py
===================================================================
--- branches/scipy.scons/scipy/io/tests/test_datasource.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/io/tests/test_datasource.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -85,7 +85,7 @@
 
     def test_ValidHTTP(self):
         assert self.ds.open(valid_httpurl())
-    
+
     def test_InvalidHTTP(self):
         self.assertRaises(IOError, self.ds.open, invalid_httpurl())
 
@@ -131,7 +131,7 @@
 
     def test_ValidHTTP(self):
         assert self.ds.exists(valid_httpurl())
-    
+
     def test_InvalidHTTP(self):
         self.assertEqual(self.ds.exists(invalid_httpurl()), False)
 
@@ -240,7 +240,7 @@
 class TestOpenFunc(NumpyTestCase):
     def setUp(self):
         self.tmpdir = mkdtemp()
-    
+
     def tearDown(self):
         rmtree(self.tmpdir)
 
@@ -254,4 +254,3 @@
 
 if __name__ == "__main__":
     NumpyTest().run()
-

Modified: branches/scipy.scons/scipy/linsolve/umfpack/info.py
===================================================================
--- branches/scipy.scons/scipy/linsolve/umfpack/info.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/linsolve/umfpack/info.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -2,6 +2,10 @@
 Interface to the UMFPACK library.
 =================================
 
+:Contains: UmfpackContext class
+
+:Description:
+-------------
 Routines for symbolic and numeric LU factorization of sparse
 matrices and for solving systems of linear equations with sparse matrices.
 
@@ -9,13 +13,12 @@
 Copyright (c) 2005 by Timothy A. Davis.  All Rights Reserved.
 UMFPACK homepage: http://www.cise.ufl.edu/research/sparse/umfpack
 
-Contains: UmfpackContext class
-
 Use 'print UmfpackContext().funs' to see all UMFPACK library functions the
 module exposes, if you need something not covered by the examples below.
 
-Installation:
-=============
+:Installation:
+--------------
+
 Example site.cfg entry:
 
 UMFPACK v4.4 in <dir>:
@@ -43,8 +46,8 @@
 umfpack_libs = umfpack
 
 
-Examples:
-=========
+:Examples:
+----------
 
 Assuming this module imported as um (import scipy.linsolve.umfpack as um)
 
@@ -115,8 +118,8 @@
                LU = PRAQ        when do_recip is true
                LU = P(R^-1)AQ   when do_recip is false
 
-Description of arguments of UmfpackContext solution methods:
-=============================================
+:Arguments of UmfpackContext solution methods:
+----------------------------------------------
 This holds for: umfpack(), umfpack.linsolve(), umfpack.solve()
 
  sys - one of UMFPACK system description constants, like
@@ -128,8 +131,9 @@
        transposed type, if 'mtx' is in CSR, since UMFPACK
        assumes CSC internally
 
-Setting control parameters:
-===========================
+:Setting control parameters:
+----------------------------
+
 Assuming this module imported as um:
 
 List of control parameter names is accessible as 'um.umfControls' - their
@@ -143,9 +147,9 @@
 umfpack.control[um.UMFPACK_PRL] = 4 # Let's be more verbose.
 
 --
-Author: Robert Cimrman
+:Author: Robert Cimrman
 
-Other contributors: Nathan Bell (lu() method wrappers)
+:Other contributors: Nathan Bell (lu() method wrappers)
 """
 
 postpone_import = 1

Modified: branches/scipy.scons/scipy/ndimage/segment/Segmenter_EXT.c
===================================================================
--- branches/scipy.scons/scipy/ndimage/segment/Segmenter_EXT.c	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/ndimage/segment/Segmenter_EXT.c	2007-11-21 12:32:02 UTC (rev 3557)
@@ -36,7 +36,8 @@
     type = PyArray_TYPE(iArray);
     num  = PyArray_SIZE(iArray);
 
-    itype  = 4;
+    //itype  = 4;
+    itype  = NPY_USHORT;
     eArray = (PyObject*)PyArray_SimpleNew(nd, dims, itype);
     fP2    = (unsigned short *)PyArray_DATA(eArray);
 
@@ -88,7 +89,8 @@
     num  = PyArray_SIZE(iArray);
 
     // this is int type and hard-wirred. pass this in from Python code
-    itype  = 4; // unsigned short
+    //itype  = 4; // unsigned short
+    itype  = NPY_USHORT;
     eArray = (PyObject*)PyArray_SimpleNew(nd, dims, itype);
     fP2    = (unsigned short *)PyArray_DATA(eArray);
 
@@ -139,7 +141,8 @@
     num  = PyArray_SIZE(iArray);
 
     // this is int type and hard-wirred. pass this in from Python code
-    itype  = 4; // unsigned short
+    //itype  = 4; // unsigned short
+    itype  = NPY_USHORT;
     eArray = (PyObject*)PyArray_SimpleNew(nd, dims, itype);
     fP2    = (unsigned short *)PyArray_DATA(eArray);
 
@@ -325,7 +328,8 @@
     // replace the edgeImage with maskImage
     //
 
-    if(!NI_VoxelMeasures(num, (int)dims[0], (int)dims[1], (int)objNumber[0], fP1, fP2, ROIList))
+    if(!NI_VoxelMeasures(num, (int)dims[0], (int)dims[1], (int)objNumber[0], fP1,
+			 fP2, ROIList))
 	    goto exit;
 
 exit:
@@ -373,7 +377,8 @@
     // replace the edgeImage with maskImage
     //
 
-    if(!NI_TextureMeasures(num, (int)dims[0], (int)dims[1], (int)objNumber[0], fP1, fP2, ROIList))
+    if(!NI_TextureMeasures(num, (int)dims[0], (int)dims[1], (int)objNumber[0], fP1,
+			   fP2, ROIList))
 	    goto exit;
 
 exit:
@@ -402,7 +407,8 @@
 
     //
     // pass in 2D LPF coefficients
-    if(!PyArg_ParseTuple(args, "iiiiO", &lowThreshold, &highThreshold, &closeWindow, &openWindow, &iArray))
+    if(!PyArg_ParseTuple(args, "iiiiO", &lowThreshold, &highThreshold, &closeWindow,
+		         &openWindow, &iArray))
 	    goto exit;
 
     fP1  = (double *)PyArray_DATA(iArray);
@@ -412,7 +418,8 @@
     num  = PyArray_SIZE(iArray);
 
     // this is int type and hard-wirred. pass this in from Python code
-    itype  = 4; // unsigned short
+    //itype  = 4; // unsigned short
+    itype  = NPY_USHORT;
     eArray = (PyObject*)PyArray_SimpleNew(nd, dims, itype);
     fP2    = (unsigned short *)PyArray_DATA(eArray);
 
@@ -420,8 +427,9 @@
 	    goto exit;
 
     
-    if(!NI_RegionGrow(num, (int)dims[0], (int)dims[1], lowThreshold, highThreshold, closeWindow, openWindow,
-		      fP1, fP2, &groups))
+    if(!NI_RegionGrow(num, (int)dims[0], (int)dims[1], lowThreshold, highThreshold,
+		      closeWindow, openWindow, fP1, fP2, &groups))
+		      
 	    goto exit;
 
 exit:

Modified: branches/scipy.scons/scipy/ndimage/segment/Segmenter_IMPL.c
===================================================================
--- branches/scipy.scons/scipy/ndimage/segment/Segmenter_IMPL.c	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/ndimage/segment/Segmenter_IMPL.c	2007-11-21 12:32:02 UTC (rev 3557)
@@ -1331,8 +1331,8 @@
 
 	int i, j;
 	int offset, offset2;
-	unsigned short cmask[11][11];
-	unsigned short omask[11][11];
+	unsigned short *cmask;
+	unsigned short *omask;
 	int olapValuesC[4];
 	int olapValuesO[4];
 	int CloseMaskSize = 1;
@@ -1340,6 +1340,7 @@
 	int LowValue1, HighValue1;   
 	int LowValue2, HighValue2;  
 	int spadSize;
+	int maskSize = 11;
 	unsigned char *ImageE;
 	unsigned char *ImageC;
 
@@ -1348,6 +1349,9 @@
 	ImageE = calloc(spadSize*spadSize, sizeof(unsigned char));
 	ImageC = calloc(spadSize*spadSize, sizeof(unsigned char));
 
+	cmask = calloc(11*11, sizeof(unsigned short));
+	omask = calloc(11*11, sizeof(unsigned short));
+
 	//
 	// Close filter
 	//
@@ -1355,7 +1359,7 @@
 	    CloseMaskSize = (CloseSize-1)/2;
 	    for(i = 0; i < 2*CloseMaskSize+1; ++i){
 	        for(j = 0; j < 2*CloseMaskSize+1; ++j){
-	            cmask[i][j] = 1;
+	            cmask[i*maskSize+j] = 1;
 	        }
 	    }
 	    LowValue1      = 0;   
@@ -1375,7 +1379,7 @@
 	    OpenMaskSize = (OpenSize-1)/2;
 	    for(i = 0; i < 2*OpenMaskSize+1; ++i){
 	        for(j = 0; j < 2*OpenMaskSize+1; ++j){
-	            omask[i][j] = 1;
+	            omask[i*maskSize+j] = 1;
 	        }
 	    }
 	    LowValue1      = 1;   
@@ -1426,6 +1430,9 @@
 	free(ImageE);
 	free(ImageC);
 
+	free(cmask);
+	free(omask);
+
 	return;
 
 }
@@ -1442,8 +1449,8 @@
 }
 
 int NI_RegionGrow(int samples, int rows, int cols, int lowThreshold, int highThreshold,
-                   int closeWindow, int openWindow, double *rawImage, 
-                   unsigned short *edgeImage, int *groups){
+                  int closeWindow, int openWindow, double *rawImage, 
+                  unsigned short *edgeImage, int *groups){
 
 	int i, j;
 	int offset;
@@ -1503,107 +1510,108 @@
 
 }
 
-void initThinFilter(int J_mask[3][30], int K_mask[3][30]){
+void initThinFilter(int *J_mask, int *K_mask){
 
 	int i, j;
 	int Column;
+	int maskCols = 3;
 
 	for(i = 0; i < 3; ++i){
 	    for(j = 0; j < 30; ++j){
-		J_mask[i][j] = 0;
-		K_mask[i][j] = 0;
+		J_mask[i+j*maskCols] = 0;
+		K_mask[i+j*maskCols] = 0;
 	    }
 	}
 
 	Column = 0;
-   	J_mask[0][Column+0] = 1;
-   	J_mask[0][Column+1] = 1;
-   	J_mask[0][Column+2] = 1;
-   	J_mask[1][Column+1] = 1;
+   	J_mask[0+maskCols*(Column+0)] = 1;
+   	J_mask[0+maskCols*(Column+1)] = 1;
+   	J_mask[0+maskCols*(Column+2)] = 1;
+   	J_mask[1+maskCols*(Column+1)] = 1;
 
 	Column += 3;
-   	J_mask[0][Column+1] = 1;
-   	J_mask[1][Column+1] = 1;
-   	J_mask[1][Column+2] = 1;
+   	J_mask[0+maskCols*(Column+1)] = 1;
+   	J_mask[1+maskCols*(Column+1)] = 1;
+   	J_mask[1+maskCols*(Column+2)] = 1;
 
 	Column += 3;
-   	J_mask[0][Column+0] = 1;
-   	J_mask[1][Column+0] = 1;
-   	J_mask[2][Column+0] = 1;
-   	J_mask[1][Column+1] = 1;
+   	J_mask[0+maskCols*(Column+0)] = 1;
+   	J_mask[1+maskCols*(Column+0)] = 1;
+   	J_mask[2+maskCols*(Column+0)] = 1;
+   	J_mask[1+maskCols*(Column+1)] = 1;
 
 	Column += 3;
-   	J_mask[0][Column+1] = 1;
-   	J_mask[1][Column+0] = 1;
-   	J_mask[1][Column+1] = 1;
+   	J_mask[0+maskCols*(Column+1)] = 1;
+   	J_mask[1+maskCols*(Column+0)] = 1;
+   	J_mask[1+maskCols*(Column+1)] = 1;
 
 	Column += 3;
-   	J_mask[0][Column+2] = 1;
-   	J_mask[1][Column+1] = 1;
-   	J_mask[1][Column+2] = 1;
-   	J_mask[2][Column+2] = 1;
+   	J_mask[0+maskCols*(Column+2)] = 1;
+   	J_mask[1+maskCols*(Column+1)] = 1;
+   	J_mask[1+maskCols*(Column+2)] = 1;
+   	J_mask[2+maskCols*(Column+2)] = 1;
 
 	Column += 3;
-   	J_mask[1][Column+0] = 1;
-   	J_mask[1][Column+1] = 1;
-   	J_mask[2][Column+1] = 1;
+   	J_mask[1+maskCols*(Column+0)] = 1;
+   	J_mask[1+maskCols*(Column+1)] = 1;
+   	J_mask[2+maskCols*(Column+1)] = 1;
 
 	Column += 3;
-   	J_mask[1][Column+1] = 1;
-   	J_mask[2][Column+0] = 1;
-   	J_mask[2][Column+1] = 1;
-   	J_mask[2][Column+2] = 1;
+   	J_mask[1+maskCols*(Column+1)] = 1;
+   	J_mask[2+maskCols*(Column+0)] = 1;
+   	J_mask[2+maskCols*(Column+1)] = 1;
+   	J_mask[2+maskCols*(Column+2)] = 1;
 
 	Column += 3;
-   	J_mask[1][Column+1] = 1;
-   	J_mask[1][Column+2] = 1;
-   	J_mask[2][Column+1] = 1;
+   	J_mask[1+maskCols*(Column+1)] = 1;
+   	J_mask[1+maskCols*(Column+2)] = 1;
+   	J_mask[2+maskCols*(Column+1)] = 1;
 
 	Column = 0;
-   	K_mask[2][Column+0] = 1;
-   	K_mask[2][Column+1] = 1;
-   	K_mask[2][Column+2] = 1;
+   	K_mask[2+maskCols*(Column+0)] = 1;
+   	K_mask[2+maskCols*(Column+1)] = 1;
+   	K_mask[2+maskCols*(Column+2)] = 1;
 
 	Column += 3;
-   	K_mask[1][Column+0] = 1;
-   	K_mask[2][Column+0] = 1;
-   	K_mask[2][Column+1] = 1;
+   	K_mask[1+maskCols*(Column+0)] = 1;
+   	K_mask[2+maskCols*(Column+0)] = 1;
+   	K_mask[2+maskCols*(Column+1)] = 1;
 
 	Column += 3;
-   	K_mask[0][Column+2] = 1;
-   	K_mask[1][Column+2] = 1;
-   	K_mask[2][Column+2] = 1;
+   	K_mask[0+maskCols*(Column+2)] = 1;
+   	K_mask[1+maskCols*(Column+2)] = 1;
+   	K_mask[2+maskCols*(Column+2)] = 1;
 
 	Column += 3;
-   	K_mask[1][Column+2] = 1;
-   	K_mask[2][Column+1] = 1;
-   	K_mask[2][Column+2] = 1;
+   	K_mask[1+maskCols*(Column+2)] = 1;
+   	K_mask[2+maskCols*(Column+1)] = 1;
+   	K_mask[2+maskCols*(Column+2)] = 1;
 
 	Column += 3;
-   	K_mask[0][Column+0] = 1;
-   	K_mask[1][Column+0] = 1;
-   	K_mask[2][Column+0] = 1;
+   	K_mask[0+maskCols*(Column+0)] = 1;
+   	K_mask[1+maskCols*(Column+0)] = 1;
+   	K_mask[2+maskCols*(Column+0)] = 1;
 
 	Column += 3;
-   	K_mask[0][Column+1] = 1;
-   	K_mask[0][Column+2] = 1;
-   	K_mask[1][Column+2] = 1;
+   	K_mask[0+maskCols*(Column+1)] = 1;
+   	K_mask[0+maskCols*(Column+2)] = 1;
+   	K_mask[1+maskCols*(Column+2)] = 1;
 
 	Column += 3;
-   	K_mask[0][Column+0] = 1;
-   	K_mask[0][Column+1] = 1;
-   	K_mask[0][Column+2] = 1;
+   	K_mask[0+maskCols*(Column+0)] = 1;
+   	K_mask[0+maskCols*(Column+1)] = 1;
+   	K_mask[0+maskCols*(Column+2)] = 1;
 
 	Column += 3;
-   	K_mask[0][Column+0] = 1;
-   	K_mask[0][Column+1] = 1;
-   	K_mask[1][Column+0] = 1;
+   	K_mask[0+maskCols*(Column+0)] = 1;
+   	K_mask[0+maskCols*(Column+1)] = 1;
+   	K_mask[1+maskCols*(Column+0)] = 1;
 
 	return;
 
 }
 
-void ThinningFilter(int regRows, int regColumns, int spadSize, int J_mask[3][30], int K_mask[3][30],
+void ThinningFilter(int regRows, int regColumns, int spadSize, int *J_mask, int *K_mask,
 	            unsigned char *Input, unsigned char *CInput, unsigned char *ErosionStage,
 	            unsigned char *DialationStage, unsigned char *HMT, unsigned char *Copy){
 
@@ -1613,6 +1621,7 @@
 	int Column, T, nloop;
 	int Offset;
 	int N, M;
+	int maskCols = 3;
 	int j_mask[3][3];
 	int k_mask[3][3];
 
@@ -1640,12 +1649,12 @@
 	    for(n = 0; n < 8; ++n){
 		for(i = 0; i < 3; ++i){
 		    for(j = 0; j < 3; ++j){
-			j_mask[i][j] = J_mask[i][Column+j];
+			j_mask[i][j] = J_mask[i+maskCols*(Column+j)];
 		    }
 		}
 		for(i = 0; i < 3; ++i){
 		    for(j = 0; j < 3; ++j){
-			k_mask[i][j] = K_mask[i][Column+j];
+			k_mask[i][j] = K_mask[i+maskCols*(Column+j)];
 		    }
 		}
 		Column += 3;
@@ -1745,6 +1754,7 @@
 		}
 		Offset += spadSize;
 	    }
+	    /* nloop is data dependent. */
 	    ++nloop;
 	}
 
@@ -1766,8 +1776,8 @@
 	int dstOffset;
 	int status;
 	int inflate = 1;
-	int J_mask[3][30];
-	int K_mask[3][30];
+	int *J_mask;
+	int *K_mask;
 
 	unsigned char *Input;
 	unsigned char *CInput;
@@ -1787,6 +1797,8 @@
 	HMT            = calloc(samples, sizeof(unsigned char));
 	Copy           = calloc(samples, sizeof(unsigned char));
 	thinEdgeImage  = calloc(samples, sizeof(unsigned short));
+	J_mask         = calloc(3*30,    sizeof(int));
+	K_mask         = calloc(3*30,    sizeof(int));
 
 	initThinFilter(J_mask, K_mask);
 	for(loop = 0; loop < numberObjects; ++loop){
@@ -1855,6 +1867,8 @@
 	free(HMT);
 	free(Copy);
 	free(thinEdgeImage);
+	free(J_mask);
+	free(K_mask);
 
 	status = 1;
 
@@ -2050,7 +2064,7 @@
 
 
 void OpenCloseFilter(int olapValues[], int maskSize, int rows, int columns, int spadSize, 
-                     unsigned char *input, unsigned char *output, unsigned short mask[11][11]){
+                     unsigned char *input, unsigned char *output, unsigned short *mask){
 
 
 	/*
@@ -2061,6 +2075,7 @@
 	int offset;
 	int LowValue1, HighValue1;   
 	int LowValue2, HighValue2;  
+	int morphoMaskSize = 11;
 
 	LowValue1  = olapValues[0];
 	HighValue1 = olapValues[1];
@@ -2076,7 +2091,7 @@
 		for(k = -maskSize; k < maskSize; ++k){
 	    	    m = k*spadSize;
 		    for(l = -maskSize; l < maskSize; ++l){
-	    		overlap = mask[k+maskSize][l+maskSize]*input[offset+m+j+l];
+	    		overlap = mask[morphoMaskSize*(k+maskSize)+(l+maskSize)]*input[offset+m+j+l];
 			if(overlap == HighValue1){
 			    hit = HighValue1;
 			}
@@ -2096,7 +2111,7 @@
 		for(k = -maskSize; k < maskSize; ++k){
 	    	    m = k*spadSize;
 		    for(l = -maskSize; l < maskSize; ++l){
-	    		overlap = mask[k+maskSize][l+maskSize]*output[offset+m+j+l];
+	    		overlap = mask[morphoMaskSize*(k+maskSize)+(l+maskSize)]*output[offset+m+j+l];
 			if(overlap == HighValue2){
 			    hit = HighValue2;
 			}
@@ -2140,7 +2155,7 @@
 
 void doMorphology(unsigned char *Input, unsigned char *ImageE, unsigned char *ImageC,
                   unsigned char *ImageH, int olapValuesC[], int olapValuesO[], 
-       	          unsigned short cmask[11][11], unsigned short omask[11][11],
+       	          unsigned short *cmask, unsigned short *omask,
 	          RECT roi, int label, int CloseMaskSize, int OpenMaskSize, int spadSize){
 
 	int i, j;
@@ -2306,8 +2321,9 @@
 	float aveRadius;
 	float vCompactness;
 	/* for morphological close of mask. max structuring element is 11x11 */
-	unsigned short cmask[11][11];
-	unsigned short omask[11][11];
+	unsigned short *cmask;
+	unsigned short *omask;
+	int maskSize = 11;
 	int olapValuesC[4];
 	int olapValuesO[4];
 	int CloseMaskSize;
@@ -2325,13 +2341,25 @@
 	unsigned char *ImageC;
 	unsigned char *ImageH;
 
+	spadSize = srcCols;
+	pBoundaryIndex = calloc(srcRows+srcCols,   sizeof(boundaryIndex));
+	Input          = calloc(spadSize*spadSize, sizeof(unsigned char));
+	ImageE         = calloc(spadSize*spadSize, sizeof(unsigned char));
+	ImageC         = calloc(spadSize*spadSize, sizeof(unsigned char));
+	ImageH         = calloc(spadSize*spadSize, sizeof(unsigned char));
+	pBoundary      = calloc(srcRows*srcCols,   sizeof(blobBoundary));
+	lBoundary      = calloc(32767, sizeof(blobBoundary));
+	boundary       = calloc(32767, sizeof(POINT));
+	cmask          = calloc(11*11, sizeof(unsigned short));
+	omask          = calloc(11*11, sizeof(unsigned short));
+
 	/*
 	// Close filter
 	*/
 	CloseMaskSize = (CloseSize-1)/2;
 	for(i = 0; i < 2*CloseMaskSize+1; ++i){
 	    for(j = 0; j < 2*CloseMaskSize+1; ++j){
-	        cmask[i][j] = 1;
+	        cmask[i*maskSize+j] = 1;
 	    }
 	}
 	LowValue1      = 0;   
@@ -2349,7 +2377,7 @@
 	OpenMaskSize = (OpenSize-1)/2;
 	for(i = 0; i < 2*OpenMaskSize+1; ++i){
 	    for(j = 0; j < 2*OpenMaskSize+1; ++j){
-	        omask[i][j] = 1;
+	        omask[i*maskSize+j] = 1;
 	    }
 	}
 	LowValue1      = 1;   
@@ -2361,19 +2389,6 @@
 	olapValuesO[2] = LowValue2;
 	olapValuesO[3] = HighValue2;
 
-
-	//spadSize = MAX(srcRows, srcCols);
-	spadSize = srcCols;
-
-	pBoundaryIndex = calloc(srcRows+srcCols,   sizeof(boundaryIndex));
-	Input          = calloc(spadSize*spadSize, sizeof(unsigned char));
-	ImageE         = calloc(spadSize*spadSize, sizeof(unsigned char));
-	ImageC         = calloc(spadSize*spadSize, sizeof(unsigned char));
-	ImageH         = calloc(spadSize*spadSize, sizeof(unsigned char));
-	pBoundary      = calloc(srcRows*srcCols,   sizeof(blobBoundary));
-	lBoundary      = calloc(32767, sizeof(blobBoundary));
-	boundary       = calloc(32767, sizeof(POINT));
-
 	for(i = 0; i < (srcRows+srcCols); ++i){
 	    pBoundaryIndex[i].numberPoints = 0;
 	    pBoundaryIndex[i].curveClose   = 0;
@@ -2384,7 +2399,6 @@
 
 
 	for(i = 0; i < numberObjects; ++i){
-	//for(i = 0; i < 1; ++i){
 	    ++pBoundaryIndex[0].numberPoints;
 	    count = 0;
 	    j = 1;
@@ -2597,6 +2611,8 @@
 	free(pBoundary);
 	free(lBoundary);
 	free(boundary);
+	free(cmask);
+	free(omask);
 
 	return;
 
@@ -2949,14 +2965,13 @@
 	    if(count){
 	        std /= (float)count; 
 	        std = sqrt(std);
-	        objectMetrics[i].voxelMean = mean - 2048.0; // the 2048 is only for the cardiac CT volume
+	        objectMetrics[i].voxelMean = mean;
 	        objectMetrics[i].voxelVar  = std;
 	    }
 	    else{
 	        objectMetrics[i].voxelMean = 0.0;
 	        objectMetrics[i].voxelVar  = 0.0;
 	    }
-	    if(0) printf("(%d) mean %f, std %f\n", label, objectMetrics[i].voxelMean, objectMetrics[i].voxelVar); 
 	}
 
 	return;

Modified: branches/scipy.scons/scipy/ndimage/segment/ndImage_Segmenter_structs.h
===================================================================
--- branches/scipy.scons/scipy/ndimage/segment/ndImage_Segmenter_structs.h	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/ndimage/segment/ndImage_Segmenter_structs.h	2007-11-21 12:32:02 UTC (rev 3557)
@@ -117,17 +117,17 @@
 void getBoundary(unsigned short *, unsigned char *, blobBoundary *, blobBoundary *, 
 	         boundaryIndex *, RECT, int, int, int, int, int, int);
 void doMorphology(unsigned char *, unsigned char *, unsigned char *, unsigned char *, int olapValuesC[],
-       	          int olapValuesO[], unsigned short cmask[11][11], unsigned short omask[11][11],
+       	          int olapValuesO[], unsigned short *, unsigned short *,
 	          RECT, int, int, int, int);
 void getCompactness(unsigned char *, RECT, int, int, float *, float);
 void OpenCloseFilter(int olapValues[], int, int, int, int, unsigned char *,  
-                     unsigned char *, unsigned short mask[11][11]);
+                     unsigned char *, unsigned short *);
 void trackBoundary(unsigned char *, blobBoundary lBoundary[], int, int, blobBoundary, int); 
 void getBoundaryMetrics(bPOINT *, float *, float *, float *, float *, float, float, int);
 void generateMask(unsigned char *, bPOINT *, int, int, int);
-void ThinningFilter(int, int, int, int J_mask[3][30], int K_mask[3][30], unsigned char *, 
+void ThinningFilter(int, int, int, int *, int *, unsigned char *, 
 	            unsigned char *, unsigned char *, unsigned char *, unsigned char *, unsigned char *);
-void initThinFilter(int J_mask[3][30], int K_mask[3][30]);
+void initThinFilter(int *, int *);
 void Shen_Castan(double, double, int, int, int, int, int, double *, unsigned short *);
 void computeISEF(float *, float *, int, int, double);
 void ISEF_Horizontal(float *, float *, float *, float *, int, int, double);

Modified: branches/scipy.scons/scipy/ndimage/segment/tests/test_segment.py
===================================================================
--- branches/scipy.scons/scipy/ndimage/segment/tests/test_segment.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/ndimage/segment/tests/test_segment.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -11,302 +11,302 @@
 
 def shen_castan(image, IIRFilter=0.8, scLow=0.3, window=7, lowThreshold=220+2048,
                 highThreshold=600+2048, dust=16):
-        """
-	    labeledEdges, ROIList = shen_castan(image, [default])
+    """
+        labeledEdges, ROIList = shen_castan(image, [default])
 
-	    implements Shen-Castan edge finding
+        implements Shen-Castan edge finding
 
-	    Inputs - image, IIR filter, shen_castan_low, window, low_threshold, high_threshold, dust 
-	    - image is the numarray 2D image
-	    - IIR filter is filter parameter for exponential filter
-	    - shen_castan_low is edge threshold is range (0.0, 1.0]
-	    - window is search window for edge detection
-	    - low_ and high_ threshold are density values 
-	    - dust is blob filter. blob area (length x width of bounding box) under this
-	      size threshold are filtered (referred to as dust and blown away)
+        Inputs - image, IIR filter, shen_castan_low, window, low_threshold, high_threshold, dust 
+        - image is the numarray 2D image
+        - IIR filter is filter parameter for exponential filter
+        - shen_castan_low is edge threshold is range (0.0, 1.0]
+        - window is search window for edge detection
+        - low_ and high_ threshold are density values 
+        - dust is blob filter. blob area (length x width of bounding box) under this
+          size threshold are filtered (referred to as dust and blown away)
 
-	    Outputs - labeledEdges, ROIList[>dust] 
-	    - labeledEdges is boundary (edges) of segmented 'blobs', 
-	      numerically labeled by blob number
-	    - ROIList[>dust] is a blob feature list. Only values
-	      with bounding box area greater than dust threshold are returned
+        Outputs - labeledEdges, ROIList[>dust] 
+        - labeledEdges is boundary (edges) of segmented 'blobs', 
+          numerically labeled by blob number
+        - ROIList[>dust] is a blob feature list. Only values
+          with bounding box area greater than dust threshold are returned
 
-        """
-	labeledEdges, numberObjects = S.shen_castan_edges(scLow, IIRFilter, window, 
-	                                                  lowThreshold, highThreshold, image)
-	# allocated struct array for edge object measures. for now just the rect bounding box
-	ROIList = N.zeros(numberObjects, dtype=S.objstruct)
-	# return the bounding box for each connected edge
-	S.get_object_stats(labeledEdges, ROIList)
-	return labeledEdges, ROIList[ROIList['Area']>dust]
+    """
+    labeledEdges, numberObjects = S.shen_castan_edges(scLow, IIRFilter, window, 
+                                                      lowThreshold, highThreshold, image)
+    # allocated struct array for edge object measures. for now just the rect bounding box
+    ROIList = N.zeros(numberObjects, dtype=S.objstruct)
+    # return the bounding box for each connected edge
+    S.get_object_stats(labeledEdges, ROIList)
+    return labeledEdges, ROIList[ROIList['Area']>dust]
 
 def sobel(image, sLow=0.3, tMode=1, lowThreshold=220+2048, highThreshold=600+2048, BPHigh=10.0, 
           apearture=21, dust=16):
-        """
-	    labeledEdges, ROIList = sobel(image, [default])
+    """
+        labeledEdges, ROIList = sobel(image, [default])
 
-	    implements sobel magnitude edge finding
+        implements sobel magnitude edge finding
 
-	    Inputs - image, sobel_low, tMode, low_threshold, high_threshold, 
-	                    high_filter_cutoff, filter_aperature, dust
-	    - image is the numarray 2D image
-	    - sobel_low is edge threshold is range (0.0, 1.0]
-	    - tMode is threshold mode: 1 for ave, 2 for mode (histogram peak)
-	    - low_ and high_ threshold are density values 
-	    - high_filter_cutoff is digital high frequency cutoff in range (0.0, 180.0]
-	    - aperature is odd filter kernel length
-	    - dust is blob filter. blob area (length x width of bounding box) under this
-	      size threshold are filtered (referred to as dust and blown away)
+        Inputs - image, sobel_low, tMode, low_threshold, high_threshold, 
+                        high_filter_cutoff, filter_aperature, dust
+        - image is the numarray 2D image
+        - sobel_low is edge threshold is range (0.0, 1.0]
+        - tMode is threshold mode: 1 for ave, 2 for mode (histogram peak)
+        - low_ and high_ threshold are density values 
+        - high_filter_cutoff is digital high frequency cutoff in range (0.0, 180.0]
+        - aperature is odd filter kernel length
+        - dust is blob filter. blob area (length x width of bounding box) under this
+          size threshold are filtered (referred to as dust and blown away)
 
-	    Outputs - labeledEdges, ROIList[>dust] 
-	    - labeledEdges is boundary (edges) of segmented 'blobs', 
-	      numerically labeled by blob number
-	    - ROIList[>dust] is a blob feature list. Only values
-	      with bounding box area greater than dust threshold are returned
+        Outputs - labeledEdges, ROIList[>dust] 
+        - labeledEdges is boundary (edges) of segmented 'blobs', 
+          numerically labeled by blob number
+        - ROIList[>dust] is a blob feature list. Only values
+          with bounding box area greater than dust threshold are returned
 
-        """
-	# get sobel edge points. return edges that are labeled (1..numberObjects)
-	labeledEdges, numberObjects = S.sobel_edges(sLow, tMode, lowThreshold, 
-	                                            highThreshold, BPHigh, apearture, image)
-	# allocated struct array for edge object measures. for now just the rect bounding box
-	ROIList = N.zeros(numberObjects, dtype=S.objstruct)
-	# return the bounding box for each connected edge
-	S.get_object_stats(labeledEdges, ROIList)
-	# thin (medial axis transform) of the sobel edges as the sobel produces a 'band edge'
-	S.morpho_thin_filt(labeledEdges, ROIList)
-	return labeledEdges, ROIList[ROIList['Area']>dust]
+    """
+    # get sobel edge points. return edges that are labeled (1..numberObjects)
+    labeledEdges, numberObjects = S.sobel_edges(sLow, tMode, lowThreshold, 
+                                                highThreshold, BPHigh, apearture, image)
+    # allocated struct array for edge object measures. for now just the rect bounding box
+    ROIList = N.zeros(numberObjects, dtype=S.objstruct)
+    # return the bounding box for each connected edge
+    S.get_object_stats(labeledEdges, ROIList)
+    # thin (medial axis transform) of the sobel edges as the sobel produces a 'band edge'
+    S.morpho_thin_filt(labeledEdges, ROIList)
+    return labeledEdges, ROIList[ROIList['Area']>dust]
 
 def canny(image, cSigma=1.0, cLow=0.5, cHigh=0.8, tMode=1, lowThreshold=220+2048, 
           highThreshold=600+2048, BPHigh=10.0, apearture=21, dust=16):
-        """
-	    labeledEdges, ROIList = canny(image, [default])
+    """
+        labeledEdges, ROIList = canny(image, [default])
 
-	    implements canny edge finding
+        implements canny edge finding
 
-	    Inputs - image, DG_sigma, canny_low, canny_high, tMode, low_threshold,
-	             high_threshold, high_filter_cutoff, filter_aperature, dust
-	    - image is the numarray 2D image
-	    - DG_sigma is Gaussain sigma for the derivative-of-gaussian filter
-	    - clow is low edge threshold is range (0.0, 1.0]
-	    - chigh is high edge threshold is range (0.0, 1.0]
-	    - tMode is threshold mode: 1 for ave, 2 for mode (histogram peak)
-	    - low_ and high_ threshold are density values 
-	    - high_filter_cutoff is digital high frequency cutoff in range (0.0, 180.0]
-	    - high_filter_cutoff is digital high frequency cutoff in range (0.0, 180.0]
-	    - aperature is odd filter kernel length
-	    - dust is blob filter. blob area (length x width of bounding box) under this
-	      size threshold are filtered (referred to as dust and blown away)
+        Inputs - image, DG_sigma, canny_low, canny_high, tMode, low_threshold,
+                 high_threshold, high_filter_cutoff, filter_aperature, dust
+        - image is the numarray 2D image
+        - DG_sigma is Gaussain sigma for the derivative-of-gaussian filter
+        - clow is low edge threshold is range (0.0, 1.0]
+        - chigh is high edge threshold is range (0.0, 1.0]
+        - tMode is threshold mode: 1 for ave, 2 for mode (histogram peak)
+        - low_ and high_ threshold are density values 
+        - high_filter_cutoff is digital high frequency cutoff in range (0.0, 180.0]
+        - high_filter_cutoff is digital high frequency cutoff in range (0.0, 180.0]
+        - aperature is odd filter kernel length
+        - dust is blob filter. blob area (length x width of bounding box) under this
+          size threshold are filtered (referred to as dust and blown away)
 
-	    Outputs - labeledEdges, ROIList[>dust] 
-	    - labeledEdges is boundary (edges) of segmented 'blobs', 
-	      numerically labeled by blob number
-	    - ROIList[>dust] is a blob feature list. Only values
-	      with bounding box area greater than dust threshold are returned
+        Outputs - labeledEdges, ROIList[>dust] 
+        - labeledEdges is boundary (edges) of segmented 'blobs', 
+          numerically labeled by blob number
+        - ROIList[>dust] is a blob feature list. Only values
+          with bounding box area greater than dust threshold are returned
 
-        """
-	# get canny edge points. return edges that are labeled (1..numberObjects)
-	labeledEdges, numberObjects = S.canny_edges(cSigma, cLow, cHigh, tMode, lowThreshold, highThreshold, 
-			                           BPHigh, apearture, image)
-	# allocated struct array for edge object measures. for now just the rect bounding box
-	ROIList = N.zeros(numberObjects, dtype=S.objstruct)
-	# return the bounding box for each connected edge
-	S.get_object_stats(labeledEdges, ROIList)
-	return labeledEdges, ROIList[ROIList['Area']>dust]
+    """
+    # get canny edge points. return edges that are labeled (1..numberObjects)
+    labeledEdges, numberObjects = S.canny_edges(cSigma, cLow, cHigh, tMode, lowThreshold, highThreshold, 
+                                               BPHigh, apearture, image)
+    # allocated struct array for edge object measures. for now just the rect bounding box
+    ROIList = N.zeros(numberObjects, dtype=S.objstruct)
+    # return the bounding box for each connected edge
+    S.get_object_stats(labeledEdges, ROIList)
+    return labeledEdges, ROIList[ROIList['Area']>dust]
 
 def get_shape_mask(labeledEdges, ROIList):
-        """
-	    get_shape_mask(labeledEdges, ROIList)
+    """
+        get_shape_mask(labeledEdges, ROIList)
 
-	    takes labeled edge image plus ROIList (blob descriptors) and generates
-	    boundary shape features and builds labeled blob masks. 'labeledEdges' 
-	    is over-written by 'labeledMask'. Adds features to ROIList structure
+        takes labeled edge image plus ROIList (blob descriptors) and generates
+        boundary shape features and builds labeled blob masks. 'labeledEdges' 
+        is over-written by 'labeledMask'. Adds features to ROIList structure
 
-	    Inputs - labeledEdges, ROIList
-	    - labeledEdges is boundary (edges) of segmented 'blobs', 
-	      numerically labeled by blob number
-	    - ROIList is a blob feature list. 
+        Inputs - labeledEdges, ROIList
+        - labeledEdges is boundary (edges) of segmented 'blobs', 
+          numerically labeled by blob number
+        - ROIList is a blob feature list. 
 
-	    Output - no return. edge image input is over-written with mask image.
-	                        ROIList added to.
+        Output - no return. edge image input is over-written with mask image.
+                            ROIList added to.
 
-        """
+    """
 
-	# pass in Sobel morph-thinned labeled edge image (LEI) and ROIList
-	# GetShapeMask will augment the ROI list
-	# labeledEdges is the original edge image and overwritten as mask image
-	# maskImage is the mask that is used for blob texture / pixel features
-	S.build_boundary(labeledEdges, ROIList)
-	return 
+    # pass in Sobel morph-thinned labeled edge image (LEI) and ROIList
+    # GetShapeMask will augment the ROI list
+    # labeledEdges is the original edge image and overwritten as mask image
+    # maskImage is the mask that is used for blob texture / pixel features
+    S.build_boundary(labeledEdges, ROIList)
+    return 
 
 def get_voxel_measures(rawImage, labeledEdges, ROIList):
-        """
-	    get_voxel_measures(rawImage, labeledEdges, ROIList)
+    """
+        get_voxel_measures(rawImage, labeledEdges, ROIList)
 
-	    takes raw 2D image, labeled blob mask and ROIList. computes voxel features
-	    (moments, histogram) for each blob. Adds features to ROIList structure.
+        takes raw 2D image, labeled blob mask and ROIList. computes voxel features
+        (moments, histogram) for each blob. Adds features to ROIList structure.
 
-	    Inputs - rawImage, labeledEdges, ROIList
-	    - rawImage is the original source 2D image
-	    - labeledEdges is boundary (edges) of segmented 'blobs', 
-	      numerically labeled by blob number
-	    - ROIList is a blob feature list. 
+        Inputs - rawImage, labeledEdges, ROIList
+        - rawImage is the original source 2D image
+        - labeledEdges is boundary (edges) of segmented 'blobs', 
+          numerically labeled by blob number
+        - ROIList is a blob feature list. 
 
-	    Output - no return. ROIList added to.
+        Output - no return. ROIList added to.
 
-        """
-	#
-	# pass raw image, labeled mask and the partially filled ROIList
-	# VoxelMeasures will fill the voxel features in the list
-	#
-	S.voxel_measures(rawImage, labeledEdges, ROIList)
-	return 
+    """
+    #
+    # pass raw image, labeled mask and the partially filled ROIList
+    # VoxelMeasures will fill the voxel features in the list
+    #
+    S.voxel_measures(rawImage, labeledEdges, ROIList)
+    return 
 
 def get_texture_measures(rawImage, labeledEdges, ROIList):
-        """
-	    get_texture_measures(rawImage, labeledEdges, ROIList)
+    """
+        get_texture_measures(rawImage, labeledEdges, ROIList)
 
-	    takes raw 2D image, labeled blob mask and ROIList. computes 2D 
-	    texture features using 7x7 Law's texture filters applied 
-	    to segmented blobs. TEM (texture energy metric) is computed 
-	    for each Law's filter image and stored in TEM part of ROIList.
+        takes raw 2D image, labeled blob mask and ROIList. computes 2D 
+        texture features using 7x7 Law's texture filters applied 
+        to segmented blobs. TEM (texture energy metric) is computed 
+        for each Law's filter image and stored in TEM part of ROIList.
 
-	    Inputs - rawImage, labeledEdges, ROIList
-	    - rawImage is the original source 2D image
-	    - labeledEdges is boundary (edges) of segmented 'blobs', 
-	      numerically labeled by blob number
-	    - ROIList is a blob feature list. 
+        Inputs - rawImage, labeledEdges, ROIList
+        - rawImage is the original source 2D image
+        - labeledEdges is boundary (edges) of segmented 'blobs', 
+          numerically labeled by blob number
+        - ROIList is a blob feature list. 
 
-	    Output - no return. ROIList added to.
-        """
-	#
-	# pass raw image, labeled mask and the partially filled ROIList
-	# VoxelMeasures will fill the texture (Law's, sub-edges, co-occurence, Gabor) features in the list
-	#
-	S.texture_measures(rawImage, labeledEdges, ROIList)
-	return 
+        Output - no return. ROIList added to.
+    """
+    #
+    # pass raw image, labeled mask and the partially filled ROIList
+    # VoxelMeasures will fill the texture (Law's, sub-edges, co-occurence, Gabor) features in the list
+    #
+    S.texture_measures(rawImage, labeledEdges, ROIList)
+    return 
 
 def segment_regions():
-	"""
-	    sourceImage, labeledMask, ROIList = segment_regions()
+    """
+        sourceImage, labeledMask, ROIList = segment_regions()
 
-	    Inputs - No Input
+        Inputs - No Input
 
-	    Outputs - sourceImage, labeledMask, ROIList
-	    - sourceImage is raw 2D image (default cardiac CT slice for demo
-	    - labeledMask is mask of segmented 'blobs', 
-	      numerically labeled by blob number
-	    - ROIList is numerical Python structure of intensity, shape and 
-	      texture features for each blob
+        Outputs - sourceImage, labeledMask, ROIList
+        - sourceImage is raw 2D image (default cardiac CT slice for demo
+        - labeledMask is mask of segmented 'blobs', 
+          numerically labeled by blob number
+        - ROIList is numerical Python structure of intensity, shape and 
+          texture features for each blob
 
-	    High level script calls Python functions:
-	        get_slice()            - a cardiac CT slice demo file
-	        sobel()                - sobel magnitude edge finder,
-	                                 returns connected edges
-	        get_shape_mask()       - gets segmented blob boundary and mask 
-	                                 and shape features
-	        get_voxel_measures()   - uses masks get object voxel moment 
-	                                 and histogram features 
-	        get_texture_measures() - uses masks get object 2D texture features 
-	"""
-	# get slice from the CT volume
-	image = get_slice(filename)
-	# need a copy of original image as filtering will occur on the extracted slice
-    	sourceImage = image.copy()
-	# Sobel is the first level segmenter. Sobel magnitude and MAT (medial axis transform)
-	# followed by connected component analysis. What is returned is labeled edges and the object list
-    	labeledMask, ROIList = sobel(image)
-	# From the labeled edges and the object list get the labeled mask for each blob object
-    	get_shape_mask(labeledMask, ROIList)
-	# Use the labeled mask and source image (raw) to get voxel features 
-    	get_voxel_measures(sourceImage, labeledMask, ROIList)
-	# Use the labeled mask and source image (raw) to get texture features 
-	get_texture_measures(sourceImage, labeledMask, ROIList)
-	return sourceImage, labeledMask, ROIList
+        High level script calls Python functions:
+            get_slice()            - a cardiac CT slice demo file
+            sobel()                - sobel magnitude edge finder,
+                                     returns connected edges
+            get_shape_mask()       - gets segmented blob boundary and mask 
+                                     and shape features
+            get_voxel_measures()   - uses masks get object voxel moment 
+                                     and histogram features 
+            get_texture_measures() - uses masks get object 2D texture features 
+    """
+    # get slice from the CT volume
+    image = get_slice(filename)
+    # need a copy of original image as filtering will occur on the extracted slice
+    sourceImage = image.copy()
+    # Sobel is the first level segmenter. Sobel magnitude and MAT (medial axis transform)
+    # followed by connected component analysis. What is returned is labeled edges and the object list
+    labeledMask, ROIList = sobel(image)
+    # From the labeled edges and the object list get the labeled mask for each blob object
+    get_shape_mask(labeledMask, ROIList)
+    # Use the labeled mask and source image (raw) to get voxel features 
+    get_voxel_measures(sourceImage, labeledMask, ROIList)
+    # Use the labeled mask and source image (raw) to get texture features 
+    get_texture_measures(sourceImage, labeledMask, ROIList)
+    return sourceImage, labeledMask, ROIList
 
 def grow_regions():
-        """
-	    regionMask, numberRegions = region_grow()
-	    Inputs - No Input
-	    Outputs - regionMask, numberRegions 
-	    - regionMask is the labeled segment masks from 2D image
-	    - numberRegions is the number of segmented blobs
+    """
+        regionMask, numberRegions = region_grow()
+        Inputs - No Input
+        Outputs - regionMask, numberRegions 
+        - regionMask is the labeled segment masks from 2D image
+        - numberRegions is the number of segmented blobs
 
-	    High level script calls Python functions:
-	        get_slice()      - a cardiac CT slice demo file
-	        region_grow()    - "grows" connected blobs. default threshold 
-	                            and morphological filter structuring element
-        """
-	# get slice from the CT volume
-	image = get_slice(filename)
-	regionMask, numberRegions = region_grow(image)
-	return regionMask, numberRegions 
+        High level script calls Python functions:
+            get_slice()      - a cardiac CT slice demo file
+            region_grow()    - "grows" connected blobs. default threshold 
+                                and morphological filter structuring element
+    """
+    # get slice from the CT volume
+    image = get_slice(filename)
+    regionMask, numberRegions = region_grow(image)
+    return regionMask, numberRegions 
 
 
 def region_grow(image, lowThreshold=220+2048, highThreshold=600+2048, open=7, close=7):
-        """
-	    regionMask, numberRegions = region_grow(image, [defaults])
+    """
+        regionMask, numberRegions = region_grow(image, [defaults])
 
-	    Inputs - image, low_threshold, high_threshold, open, close
-	    - image is the numarray 2D image
-	    - low_ and high_ threshold are density values 
-	    - open is open morphology structuring element
-	      odd size. 0 to turn off. max is 11
-	    - close is close morphology structuring element
-	      odd size. 0 to turn off. max is 11
+        Inputs - image, low_threshold, high_threshold, open, close
+        - image is the numarray 2D image
+        - low_ and high_ threshold are density values 
+        - open is open morphology structuring element
+          odd size. 0 to turn off. max is 11
+        - close is close morphology structuring element
+          odd size. 0 to turn off. max is 11
 
-	    Outputs - regionMask, numberRegions 
-	    - regionMask is the labeled segment masks from 2D image
-	    - numberRegions is the number of segmented blobs
-        """
-	# morphology filters need to be clipped to 11 max and be odd
-	regionMask, numberRegions = S.region_grow(lowThreshold, highThreshold, close, open, image)
-	return regionMask, numberRegions
-          
+        Outputs - regionMask, numberRegions 
+        - regionMask is the labeled segment masks from 2D image
+        - numberRegions is the number of segmented blobs
+    """
+    # morphology filters need to be clipped to 11 max and be odd
+    regionMask, numberRegions = S.region_grow(lowThreshold, highThreshold, close, open, image)
+    return regionMask, numberRegions
+      
 
 def get_slice(imageName='slice112.raw', bytes=2, rows=512, columns=512):
-	# get a slice alrady extracted from the CT volume
-	#image = open(imageName, 'rb')
-	#slice = image.read(rows*columns*bytes)
-	#values = struct.unpack('h'*rows*columns, slice)
-	#ImageSlice = N.array(values, dtype=float).reshape(rows, columns)
+    # get a slice alrady extracted from the CT volume
+    #image = open(imageName, 'rb')
+    #slice = image.read(rows*columns*bytes)
+    #values = struct.unpack('h'*rows*columns, slice)
+    #ImageSlice = N.array(values, dtype=float).reshape(rows, columns)
 
-	ImageSlice = N.fromfile(imageName, dtype=N.uint16).reshape(rows, columns);
+    ImageSlice = N.fromfile(imageName, dtype=N.uint16).reshape(rows, columns);
 
-	# clip the ends for this test CT image file as the spine runs off the end of the image
-	ImageSlice[505:512, :] = 0
-	return (ImageSlice).astype(float)
+    # clip the ends for this test CT image file as the spine runs off the end of the image
+    ImageSlice[505:512, :] = 0
+    return (ImageSlice).astype(float)
 
 def get_slice2(image_name='slice112.raw', bytes=2, shape=(512,512)):
-        import mmap
-        file = open(image_name, 'rb')
-        mm = mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ)
-        slice = N.frombuffer(mm, dtype='u%d' % bytes).reshape(shape) 
-        slice = slice.astype(float)
-        slice[505:512,:] = 0
-        return slice
+    import mmap
+    file = open(image_name, 'rb')
+    mm = mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ)
+    slice = N.frombuffer(mm, dtype='u%d' % bytes).reshape(shape) 
+    slice = slice.astype(float)
+    slice[505:512,:] = 0
+    return slice
 
 def save_slice(mySlice, filename='junk.raw', bytes=4):
-	# just save the slice to a fixed file
-	slice = mySlice.astype('u%d' % bytes)
-        slice.tofile(filename)
+    # just save the slice to a fixed file
+    slice = mySlice.astype('u%d' % bytes)
+    slice.tofile(filename)
 
 
 class TestSegment(NumpyTestCase):
     def test1(self):
-	image = get_slice(filename)
-	sourceImage = image.copy()
-	edges, objects = sobel(image)
-	get_shape_mask(edges, objects)
-	get_voxel_measures(sourceImage, edges, objects)
-	get_texture_measures(sourceImage, edges, objects)
+        image = get_slice(filename)
+        sourceImage = image.copy()
+        edges, objects = sobel(image)
+        get_shape_mask(edges, objects)
+        get_voxel_measures(sourceImage, edges, objects)
+        get_texture_measures(sourceImage, edges, objects)
 
     def test2(self):
-	sourceImage, labeledMask, ROIList = segment_regions()
+        sourceImage, labeledMask, ROIList = segment_regions()
 
     def test3(self):
-	regionMask, numberRegions = grow_regions()
-	regionMask.max()
-	#save_slice(regionMask, 'regionMask.raw')
+        regionMask, numberRegions = grow_regions()
+        regionMask.max()
+        #save_slice(regionMask, 'regionMask.raw')
 
     
 if __name__ == "__main__":

Copied: branches/scipy.scons/scipy/ndimage/segmenter.py (from rev 3553, trunk/scipy/ndimage/segmenter.py)

Modified: branches/scipy.scons/scipy/ndimage/tests/test_segment.py
===================================================================
--- branches/scipy.scons/scipy/ndimage/tests/test_segment.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/ndimage/tests/test_segment.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -10,132 +10,132 @@
 
 
 def shen_castan(image, IIRFilter=0.8, scLow=0.3, window=7, lowThreshold=220+2048, highThreshold=600+2048, dust=16):
-	labeledEdges, numberObjects = S.shen_castan_edges(scLow, IIRFilter, window, lowThreshold, highThreshold, image)
-	# allocated struct array for edge object measures. for now just the rect bounding box
-	ROIList = N.zeros(numberObjects, dtype=S.objstruct)
-	# return the bounding box for each connected edge
-	S.get_object_stats(labeledEdges, ROIList)
-	return labeledEdges, ROIList[ROIList['Area']>dust]
+    labeledEdges, numberObjects = S.shen_castan_edges(scLow, IIRFilter, window, lowThreshold, highThreshold, image)
+    # allocated struct array for edge object measures. for now just the rect bounding box
+    ROIList = N.zeros(numberObjects, dtype=S.objstruct)
+    # return the bounding box for each connected edge
+    S.get_object_stats(labeledEdges, ROIList)
+    return labeledEdges, ROIList[ROIList['Area']>dust]
 
 def sobel(image, sLow=0.3, tMode=1, lowThreshold=220+2048, highThreshold=600+2048, BPHigh=10.0, apearture=21, dust=16):
-	# get sobel edge points. return edges that are labeled (1..numberObjects)
-	labeledEdges, numberObjects = S.sobel_edges(sLow, tMode, lowThreshold, highThreshold, BPHigh, apearture, image)
-	# allocated struct array for edge object measures. for now just the rect bounding box
-	ROIList = N.zeros(numberObjects, dtype=S.objstruct)
-	# return the bounding box for each connected edge
-	S.get_object_stats(labeledEdges, ROIList)
-	# thin (medial axis transform) of the sobel edges as the sobel produces a 'band edge'
-	S.morpho_thin_filt(labeledEdges, ROIList)
-	return labeledEdges, ROIList[ROIList['Area']>dust]
+    # get sobel edge points. return edges that are labeled (1..numberObjects)
+    labeledEdges, numberObjects = S.sobel_edges(sLow, tMode, lowThreshold, highThreshold, BPHigh, apearture, image)
+    # allocated struct array for edge object measures. for now just the rect bounding box
+    ROIList = N.zeros(numberObjects, dtype=S.objstruct)
+    # return the bounding box for each connected edge
+    S.get_object_stats(labeledEdges, ROIList)
+    # thin (medial axis transform) of the sobel edges as the sobel produces a 'band edge'
+    S.morpho_thin_filt(labeledEdges, ROIList)
+    return labeledEdges, ROIList[ROIList['Area']>dust]
 
 def canny(image, cSigma=1.0, cLow=0.5, cHigh=0.8, tMode=1, lowThreshold=220+2048, highThreshold=600+2048,
           BPHigh=10.0, apearture=21, dust=16):
-	# get canny edge points. return edges that are labeled (1..numberObjects)
-	labeledEdges, numberObjects = S.canny_edges(cSigma, cLow, cHigh, tMode, lowThreshold, highThreshold, 
-			                           BPHigh, apearture, image)
-	# allocated struct array for edge object measures. for now just the rect bounding box
-	ROIList = N.zeros(numberObjects, dtype=S.objstruct)
-	# return the bounding box for each connected edge
-	S.get_object_stats(labeledEdges, ROIList)
-	return labeledEdges, ROIList[ROIList['Area']>dust]
+    # get canny edge points. return edges that are labeled (1..numberObjects)
+    labeledEdges, numberObjects = S.canny_edges(cSigma, cLow, cHigh, tMode, lowThreshold, highThreshold, 
+                                               BPHigh, apearture, image)
+    # allocated struct array for edge object measures. for now just the rect bounding box
+    ROIList = N.zeros(numberObjects, dtype=S.objstruct)
+    # return the bounding box for each connected edge
+    S.get_object_stats(labeledEdges, ROIList)
+    return labeledEdges, ROIList[ROIList['Area']>dust]
 
 def get_shape_mask(labeledEdges, ROIList):
-	# pass in Sobel morph-thinned labeled edge image (LEI) and ROIList
-	# GetShapeMask will augment the ROI list
-	# labeledEdges is the original edge image and overwritten as mask image
-	# maskImage is the mask that is used for blob texture / pixel features
-	S.build_boundary(labeledEdges, ROIList)
-	return 
+    # pass in Sobel morph-thinned labeled edge image (LEI) and ROIList
+    # GetShapeMask will augment the ROI list
+    # labeledEdges is the original edge image and overwritten as mask image
+    # maskImage is the mask that is used for blob texture / pixel features
+    S.build_boundary(labeledEdges, ROIList)
+    return 
 
 def get_voxel_measures(rawImage, labeledEdges, ROIList):
-	#
-	# pass raw image, labeled mask and the partially filled ROIList
-	# VoxelMeasures will fill the voxel features in the list
-	#
-	S.voxel_measures(rawImage, labeledEdges, ROIList)
-	return 
+    #
+    # pass raw image, labeled mask and the partially filled ROIList
+    # VoxelMeasures will fill the voxel features in the list
+    #
+    S.voxel_measures(rawImage, labeledEdges, ROIList)
+    return 
 
 def get_texture_measures(rawImage, labeledEdges, ROIList):
-	#
-	# pass raw image, labeled mask and the partially filled ROIList
-	# VoxelMeasures will fill the texture (Law's, co-occurence, Gabor) features in the list
-	#
-	S.texture_measures(rawImage, labeledEdges, ROIList)
-	return 
+    #
+    # pass raw image, labeled mask and the partially filled ROIList
+    # VoxelMeasures will fill the texture (Law's, co-occurence, Gabor) features in the list
+    #
+    S.texture_measures(rawImage, labeledEdges, ROIList)
+    return 
 
 def segment_regions():
-	# get slice from the CT volume
-	image = get_slice(filename)
-	# need a copy of original image as filtering will occur on the extracted slice
-    	sourceImage = image.copy()
-	# Sobel is the first level segmenter. Sobel magnitude and MAT (medial axis transform)
-	# followed by connected component analysis. What is returned is labeled edges and the object list
-    	labeledMask, ROIList = sobel(image)
-	# From the labeled edges and the object list get the labeled mask for each blob object
-    	get_shape_mask(labeledMask, ROIList)
-	# Use the labeled mask and source image (raw) to get voxel features 
-    	get_voxel_measures(sourceImage, labeledMask, ROIList)
-	# Use the labeled mask and source image (raw) to get texture features 
-	get_texture_measures(sourceImage, labeledMask, ROIList)
-	return sourceImage, labeledMask, ROIList
+    # get slice from the CT volume
+    image = get_slice(filename)
+    # need a copy of original image as filtering will occur on the extracted slice
+    sourceImage = image.copy()
+    # Sobel is the first level segmenter. Sobel magnitude and MAT (medial axis transform)
+    # followed by connected component analysis. What is returned is labeled edges and the object list
+    labeledMask, ROIList = sobel(image)
+    # From the labeled edges and the object list get the labeled mask for each blob object
+    get_shape_mask(labeledMask, ROIList)
+    # Use the labeled mask and source image (raw) to get voxel features 
+    get_voxel_measures(sourceImage, labeledMask, ROIList)
+    # Use the labeled mask and source image (raw) to get texture features 
+    get_texture_measures(sourceImage, labeledMask, ROIList)
+    return sourceImage, labeledMask, ROIList
 
 def grow_regions():
-	# get slice from the CT volume
-	image = get_slice(filename)
-	regionMask, numberRegions = region_grow(image)
-	return regionMask, numberRegions 
+    # get slice from the CT volume
+    image = get_slice(filename)
+    regionMask, numberRegions = region_grow(image)
+    return regionMask, numberRegions 
 
 
 def region_grow(image, lowThreshold=220+2048, highThreshold=600+2048, open=7, close=7):
-	# morphology filters need to be clipped to 11 max and be odd
-	regionMask, numberRegions = S.region_grow(lowThreshold, highThreshold, close, open, image)
-	return regionMask, numberRegions
-          
+    # morphology filters need to be clipped to 11 max and be odd
+    regionMask, numberRegions = S.region_grow(lowThreshold, highThreshold, close, open, image)
+    return regionMask, numberRegions
+      
 
 def get_slice(imageName='junk.raw', bytes=2, rows=512, columns=512):
-	# get a slice alrady extracted from the CT volume
-	#image = open(imageName, 'rb')
-	#slice = image.read(rows*columns*bytes)
-	#values = struct.unpack('h'*rows*columns, slice)
-	#ImageSlice = N.array(values, dtype=float).reshape(rows, columns)
+    # get a slice alrady extracted from the CT volume
+    #image = open(imageName, 'rb')
+    #slice = image.read(rows*columns*bytes)
+    #values = struct.unpack('h'*rows*columns, slice)
+    #ImageSlice = N.array(values, dtype=float).reshape(rows, columns)
 
-	ImageSlice = N.fromfile(imageName, dtype=N.uint16).reshape(rows, columns);
+    ImageSlice = N.fromfile(imageName, dtype=N.uint16).reshape(rows, columns);
 
-	# clip the ends for this test CT image file as the spine runs off the end of the image
-	ImageSlice[505:512, :] = 0
-	return (ImageSlice).astype(float)
+    # clip the ends for this test CT image file as the spine runs off the end of the image
+    ImageSlice[505:512, :] = 0
+    return (ImageSlice).astype(float)
 
 def get_slice2(image_name='junk.raw', bytes=2, shape=(512,512)):
-        import mmap
-        file = open(image_name, 'rb')
-        mm = mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ)
-        slice = N.frombuffer(mm, dtype='u%d' % bytes).reshape(shape) 
-        slice = slice.astype(float)
-        slice[505:512,:] = 0
-        return slice
+    import mmap
+    file = open(image_name, 'rb')
+    mm = mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ)
+    slice = N.frombuffer(mm, dtype='u%d' % bytes).reshape(shape) 
+    slice = slice.astype(float)
+    slice[505:512,:] = 0
+    return slice
 
 def save_slice(mySlice, filename='junk.raw', bytes=4):
-	# just save the slice to a fixed file
-	slice = mySlice.astype('u%d' % bytes)
-        slice.tofile(filename)
+    # just save the slice to a fixed file
+    slice = mySlice.astype('u%d' % bytes)
+    slice.tofile(filename)
 
 
 class TestSegment(NumpyTestCase):
     def test1(self):
-	image = get_slice(filename)
-	sourceImage = image.copy()
-	edges, objects = sobel(image)
-	get_shape_mask(edges, objects)
-	get_voxel_measures(sourceImage, edges, objects)
-	get_texture_measures(sourceImage, edges, objects)
+        image = get_slice(filename)
+        sourceImage = image.copy()
+        edges, objects = sobel(image)
+        get_shape_mask(edges, objects)
+        get_voxel_measures(sourceImage, edges, objects)
+        get_texture_measures(sourceImage, edges, objects)
 
     def test2(self):
-	sourceImage, labeledMask, ROIList = segment_regions()
+        sourceImage, labeledMask, ROIList = segment_regions()
 
     def test3(self):
-	regionMask, numberRegions = grow_regions()
-	print regionMask.max()
-	#save_slice(regionMask, 'regionMask.raw')
+        regionMask, numberRegions = grow_regions()
+        print regionMask.max()
+        #save_slice(regionMask, 'regionMask.raw')
 
     
 if __name__ == "__main__":

Modified: branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed.py
===================================================================
--- branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -17,4 +17,3 @@
 s = montecarlo.dictsampler(d)
 for i in range(10):
     temp = s.sample(10**7)
-

Modified: branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_2.py
===================================================================
--- branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_2.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_2.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -8,4 +8,3 @@
 s = montecarlo.dictsampler(d)
 for i in range(10):
     temp = s.sample(10**7)
-

Modified: branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_3.py
===================================================================
--- branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_3.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_3.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -6,4 +6,3 @@
 s = montecarlo.intsampler(v)
 for i in range(10):
     temp = s.sample(10**7)
-

Modified: branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_4.py
===================================================================
--- branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_4.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/montecarlo/examples/test_montecarlo_speed_4.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -6,4 +6,3 @@
 s = montecarlo.intsampler(v)
 for i in range(10):
     temp = s.sample(10**7)
-

Modified: branches/scipy.scons/scipy/sandbox/multigrid/adaptive.py
===================================================================
--- branches/scipy.scons/scipy/sandbox/multigrid/adaptive.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/multigrid/adaptive.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -139,8 +139,8 @@
                                                max_levels = max_levels, \
                                                max_coarse = max_coarse, \
                                                mu = mu, epsilon = epsilon, \
-                                               aggregation = aggregation ) 
-        
+                                               aggregation = aggregation )
+
         #create SA using x here
         As,Ps,Ts,Bs = sa_hierarchy(A,x,AggOps)
 
@@ -160,7 +160,7 @@
             for i in range(max_candidates):
                 B = B[:,1:]
                 As,Ps,Ts,Bs = sa_hierarchy(A,B,AggOps)
-                x = self.__develop_new_candidate(As,Ps,Ts,Bs,AggOps,mu=mu)    
+                x = self.__develop_new_candidate(As,Ps,Ts,Bs,AggOps,mu=mu)
                 B = hstack((B,x))
             As,Ps,Ts,Bs = sa_hierarchy(A,B,AggOps)
 
@@ -174,7 +174,7 @@
             max_coarse = 0
             max_levels = len(aggregation) + 1
 
-        # aSA parameters 
+        # aSA parameters
         # mu      - number of test relaxation iterations
         # epsilon - minimum acceptable relaxation convergence factor
 
@@ -307,7 +307,7 @@
     aggregation = None
 
     #A = poisson_problem2D(200,1e-2)
-    #aggregation = [ sa_constant_interpolation(A*A*A,epsilon=0.0) ] 
+    #aggregation = [ sa_constant_interpolation(A*A*A,epsilon=0.0) ]
 
     #A = io.mmread("tests/sample_data/laplacian_41_3dcube.mtx").tocsr()
     #A = io.mmread("laplacian_40_3dcube.mtx").tocsr()
@@ -373,7 +373,7 @@
         pcolor(x.reshape(sqrt(len(x)),sqrt(len(x))))
         show()
 
-  
+
     for c in asa.Bs[0].T:
         #plot2d(c)
         plot2d_arrows(c)

Modified: branches/scipy.scons/scipy/sandbox/multigrid/dec_test.py
===================================================================
--- branches/scipy.scons/scipy/sandbox/multigrid/dec_test.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/multigrid/dec_test.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -30,10 +30,10 @@
 def curl_curl_prolongator(D_nodal,vertices):
     if not isspmatrix_csr(D_nodal):
         raise TypeError('expected csr_matrix')
-    
+
     A = D_nodal.T.tocsr() * D_nodal
     aggs = multigridtools.sa_get_aggregates(A.shape[0],A.indptr,A.indices)
-    
+
     num_edges = D_nodal.shape[0]
     num_basis = vertices.shape[1]
     num_aggs  = aggs.max() + 1
@@ -52,9 +52,9 @@
     return coo_matrix((data,(row,col)),dims=(num_edges,num_basis*num_aggs)).tocsr()
 
 
-    
 
 
+
 def whitney_innerproduct_cache(cmplx,k):
     h = hash(cmplx.vertices.tostring()) ^ hash(cmplx.simplices.tostring()) ^ hash(k)
 
@@ -102,33 +102,33 @@
         Mi = whitney_innerproduct_cache(cmplx,i+1)
     else:
         Mi = regular_cube_innerproduct(cmplx,i+1)
-        
-        
+
+
     dimension = mesh['vertices'].shape[1]
 
     if True:
-    
+
         d0 = cmplx[0].d
         d1 = cmplx[1].d
-        
+
         #A = (d1.T.tocsr() * d1 + d0 * d0.T.tocsr()).astype('d')
         A = (d1.T.tocsr()  * d1).astype('d')
-    
+
         P = curl_curl_prolongator(d0,mesh['vertices'])
-        
+
         num_blocks = P.shape[1]/dimension
         blocks = arange(num_blocks).repeat(dimension)
-    
+
         P = sa_smoothed_prolongator(A,P,epsilon=0,omega=4.0/3.0)
-    
+
         PAP = P.T.tocsr() * A * P
-    
+
         candidates = None
         candidates = zeros((num_blocks,dimension,dimension))
         for n in range(dimension):
             candidates[:,n,n] = 1.0
         candidates = candidates.reshape(-1,dimension)
-        
+
         ml = smoothed_aggregation_solver(PAP,epsilon=0.0,candidates=candidates,blocks=blocks)
         #A = PAP
         ml = multilevel_solver([A] + ml.As, [P] + ml.Ps)
@@ -138,16 +138,16 @@
         while len(bh) < 3:
             bh.coarsen()
         print repr(bh)
-    
+
         N = len(cochain_complex) - 1
-    
+
         B =  bh[0][N - i].B
-    
+
         A = (B.T.tocsr() * B).astype('d')
         #A = B.T.tocsr() * Mi * B
-    
+
         constant_prolongators = [lvl[N - i].I for lvl in bh[:-1]]
-   
+
         method = 'aSA'
 
         if method == 'RS':
@@ -157,28 +157,28 @@
                 Ps.append( sa_smoothed_prolongator(As[-1],T,epsilon=0.0,omega=4.0/3.0) )
                 As.append(Ps[-1].T.tocsr() * As[-1] * Ps[-1])
             ml = multilevel_solver(As,Ps)
-        
+
         else:
             if method == 'BSA':
-                if i == 0:  
+                if i == 0:
                     candidates = None
                 else:
                     candidates = cmplx[0].d * mesh['vertices']
                     K = candidates.shape[1]
-                
+
                     constant_prolongators = [constant_prolongators[0]] + \
                             [expand_into_blocks(T,K,1).tocsr() for T in constant_prolongators[1:] ]
 
                     ml = smoothed_aggregation_solver(A,candidates,aggregation=constant_prolongators)
             elif method == 'aSA':
-                asa = adaptive_sa_solver(A,aggregation=constant_prolongators,max_candidates=dimension,epsilon=0.0) 
+                asa = adaptive_sa_solver(A,aggregation=constant_prolongators,max_candidates=dimension,epsilon=0.0)
                 ml = asa.solver
             else:
                 raise ValuerError,'unknown method'
-                
+
         #ml = smoothed_aggregation_solver(A,candidates)
 
-    #x = d0 * mesh['vertices'][:,0] 
+    #x = d0 * mesh['vertices'][:,0]
     x = rand(A.shape[0])
     b = zeros_like(x)
     #b = A*rand(A.shape[0])

Copied: branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/README.txt (from rev 3553, trunk/scipy/sandbox/multigrid/multigridtools/README.txt)

Modified: branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools.i
===================================================================
--- branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools.i	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools.i	2007-11-21 12:32:02 UTC (rev 3557)
@@ -62,6 +62,7 @@
 
 
 I_IN_ARRAY1( int         )
+I_IN_ARRAY1( long long   )
 T_IN_ARRAY1( float       )
 T_IN_ARRAY1( double      )
 
@@ -103,6 +104,7 @@
 %enddef
 
 I_ARRAY_ARGOUT( int    )
+I_ARRAY_ARGOUT( long long    )
 T_ARRAY_ARGOUT( float  )
 T_ARRAY_ARGOUT( double )
 
@@ -125,6 +127,7 @@
 %enddef
 
 I_INPLACE_ARRAY1( int    )
+I_INPLACE_ARRAY1( long long    )
 T_INPLACE_ARRAY1( float  )
 T_INPLACE_ARRAY1( double )
 
@@ -140,12 +143,14 @@
 %define INSTANTIATE_BOTH( f_name )
 %template(f_name)   f_name<int,float>;
 %template(f_name)   f_name<int,double>;
+%template(f_name)   f_name<long long,float>;
+%template(f_name)   f_name<long long,double>;
 /* 64-bit indices would go here */
 %enddef
  
 %define INSTANTIATE_INDEX( f_name )
 %template(f_name)   f_name<int>;
-/* 64-bit indices would go here */
+%template(f_name)   f_name<long long>;
 %enddef
 
 %define INSTANTIATE_DATA( f_name )

Modified: branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools.py
===================================================================
--- branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -53,71 +53,84 @@
 F_NODE = _multigridtools.F_NODE
 
 def sa_get_aggregates(*args):
-  """sa_get_aggregates(int n_row, int Ap, int Aj, std::vector<(int)> Bj)"""
-  return _multigridtools.sa_get_aggregates(*args)
+    """sa_get_aggregates(int n_row, int Ap, int Aj, std::vector<(int)> Bj)"""
+    return _multigridtools.sa_get_aggregates(*args)
 
 
 def rs_strong_connections(*args):
-  """
-    rs_strong_connections(int n_row, float theta, int Ap, int Aj, float Ax, std::vector<(int)> Sp, 
-        std::vector<(int)> Sj, 
-        std::vector<(float)> Sx)
-    rs_strong_connections(int n_row, double theta, int Ap, int Aj, double Ax, 
-        std::vector<(int)> Sp, std::vector<(int)> Sj, 
-        std::vector<(double)> Sx)
     """
-  return _multigridtools.rs_strong_connections(*args)
+      rs_strong_connections(int n_row, float theta, int Ap, int Aj, float Ax, std::vector<(int)> Sp,
+          std::vector<(int)> Sj,
+          std::vector<(float)> Sx)
+      rs_strong_connections(int n_row, double theta, int Ap, int Aj, double Ax,
+          std::vector<(int)> Sp, std::vector<(int)> Sj,
+          std::vector<(double)> Sx)
+      """
+    return _multigridtools.rs_strong_connections(*args)
 
 def rs_interpolation(*args):
-  """
-    rs_interpolation(int n_nodes, int Ap, int Aj, float Ax, int Sp, int Sj, 
-        float Sx, int Tp, int Tj, float Tx, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(float)> Bx)
-    rs_interpolation(int n_nodes, int Ap, int Aj, double Ax, int Sp, int Sj, 
-        double Sx, int Tp, int Tj, double Tx, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(double)> Bx)
     """
-  return _multigridtools.rs_interpolation(*args)
+      rs_interpolation(int n_nodes, int Ap, int Aj, float Ax, int Sp, int Sj,
+          float Sx, int Tp, int Tj, float Tx, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(float)> Bx)
+      rs_interpolation(int n_nodes, int Ap, int Aj, double Ax, int Sp, int Sj,
+          double Sx, int Tp, int Tj, double Tx, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(double)> Bx)
+      """
+    return _multigridtools.rs_interpolation(*args)
 
 def sa_strong_connections(*args):
-  """
-    sa_strong_connections(int n_row, float epsilon, int Ap, int Aj, float Ax, 
-        std::vector<(int)> Sp, std::vector<(int)> Sj, 
-        std::vector<(float)> Sx)
-    sa_strong_connections(int n_row, double epsilon, int Ap, int Aj, double Ax, 
-        std::vector<(int)> Sp, std::vector<(int)> Sj, 
-        std::vector<(double)> Sx)
     """
-  return _multigridtools.sa_strong_connections(*args)
+      sa_strong_connections(int n_row, float epsilon, int Ap, int Aj, float Ax,
+          std::vector<(int)> Sp, std::vector<(int)> Sj,
+          std::vector<(float)> Sx)
+      sa_strong_connections(int n_row, double epsilon, int Ap, int Aj, double Ax,
+          std::vector<(int)> Sp, std::vector<(int)> Sj,
+          std::vector<(double)> Sx)
+      """
+    return _multigridtools.sa_strong_connections(*args)
 
 def sa_smoother(*args):
-  """
-    sa_smoother(int n_row, float omega, int Ap, int Aj, float Ax, int Sp, 
-        int Sj, float Sx, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(float)> Bx)
-    sa_smoother(int n_row, double omega, int Ap, int Aj, double Ax, 
-        int Sp, int Sj, double Sx, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(double)> Bx)
     """
-  return _multigridtools.sa_smoother(*args)
+      sa_smoother(int n_row, float omega, int Ap, int Aj, float Ax, int Sp,
+          int Sj, float Sx, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(float)> Bx)
+      sa_smoother(int n_row, double omega, int Ap, int Aj, double Ax,
+          int Sp, int Sj, double Sx, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(double)> Bx)
+      """
+    return _multigridtools.sa_smoother(*args)
 
 def gauss_seidel(*args):
-  """
-    gauss_seidel(int n_row, int Ap, int Aj, float Ax, float x, float b, 
-        int row_start, int row_stop, int row_step)
-    gauss_seidel(int n_row, int Ap, int Aj, double Ax, double x, double b, 
-        int row_start, int row_stop, int row_step)
     """
-  return _multigridtools.gauss_seidel(*args)
+      gauss_seidel(int n_row, int Ap, int Aj, float Ax, float x, float b,
+          int row_start, int row_stop, int row_step)
+      gauss_seidel(int n_row, int Ap, int Aj, double Ax, double x, double b,
+          int row_start, int row_stop, int row_step)
+      gauss_seidel(long long n_row, long long Ap, long long Aj, float Ax,
+          float x, float b, long long row_start, long long row_stop,
+          long long row_step)
+      gauss_seidel(long long n_row, long long Ap, long long Aj, double Ax,
+          double x, double b, long long row_start,
+          long long row_stop, long long row_step)
+      """
+    return _multigridtools.gauss_seidel(*args)
 
 def jacobi(*args):
-  """
-    jacobi(int n_row, int Ap, int Aj, float Ax, float x, float b, 
-        float temp, int row_start, int row_stop, 
-        int row_step, float omega)
-    jacobi(int n_row, int Ap, int Aj, double Ax, double x, double b, 
-        double temp, int row_start, int row_stop, 
-        int row_step, double omega)
     """
-  return _multigridtools.jacobi(*args)
-
+      jacobi(int n_row, int Ap, int Aj, float Ax, float x, float b,
+          float temp, int row_start, int row_stop,
+          int row_step, float omega)
+      jacobi(int n_row, int Ap, int Aj, double Ax, double x, double b,
+          double temp, int row_start, int row_stop,
+          int row_step, double omega)
+      jacobi(long long n_row, long long Ap, long long Aj, float Ax,
+          float x, float b, float temp, long long row_start,
+          long long row_stop, long long row_step,
+          float omega)
+      jacobi(long long n_row, long long Ap, long long Aj, double Ax,
+          double x, double b, double temp, long long row_start,
+          long long row_stop, long long row_step,
+          double omega)
+      """
+    return _multigridtools.jacobi(*args)

Modified: branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools_wrap.cxx
===================================================================
--- branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools_wrap.cxx	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/multigrid/multigridtools/multigridtools_wrap.cxx	2007-11-21 12:32:02 UTC (rev 3557)
@@ -3099,6 +3099,43 @@
   return res;
 }
 
+
+SWIGINTERN int
+SWIG_AsVal_long_SS_long (PyObject *obj, long long *val)
+{
+  int res = SWIG_TypeError;
+  if (PyLong_Check(obj)) {
+    long long v = PyLong_AsLongLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return SWIG_OK;
+    } else {
+      PyErr_Clear();
+    }
+  } else {
+    long v;
+    res = SWIG_AsVal_long (obj,&v);
+    if (SWIG_IsOK(res)) {
+      if (val) *val = v;
+      return res;
+    }
+  }
+#ifdef SWIG_PYTHON_CAST_MODE
+  {
+    const double mant_max = 1LL << DBL_MANT_DIG;
+    const double mant_min = -mant_max;
+    double d;
+    res = SWIG_AsVal_double (obj,&d);
+    if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) {
+      if (val) *val = (long long)(d);
+      return SWIG_AddCast(res);
+    }
+    res = SWIG_TypeError;
+  }
+#endif
+  return res;
+}
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -5216,6 +5253,278 @@
 }
 
 
+SWIGINTERN PyObject *_wrap_gauss_seidel__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  long long arg1 ;
+  long long *arg2 ;
+  long long *arg3 ;
+  float *arg4 ;
+  float *arg5 ;
+  float *arg6 ;
+  long long arg7 ;
+  long long arg8 ;
+  long long arg9 ;
+  long long val1 ;
+  int ecode1 = 0 ;
+  PyArrayObject *array2 = NULL ;
+  int is_new_object2 ;
+  PyArrayObject *array3 = NULL ;
+  int is_new_object3 ;
+  PyArrayObject *array4 = NULL ;
+  int is_new_object4 ;
+  PyArrayObject *temp5 = NULL ;
+  PyArrayObject *array6 = NULL ;
+  int is_new_object6 ;
+  long long val7 ;
+  int ecode7 = 0 ;
+  long long val8 ;
+  int ecode8 = 0 ;
+  long long val9 ;
+  int ecode9 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  PyObject * obj4 = 0 ;
+  PyObject * obj5 = 0 ;
+  PyObject * obj6 = 0 ;
+  PyObject * obj7 = 0 ;
+  PyObject * obj8 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOO:gauss_seidel",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8)) SWIG_fail;
+  ecode1 = SWIG_AsVal_long_SS_long(obj0, &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "gauss_seidel" "', argument " "1"" of type '" "long long""'");
+  } 
+  arg1 = static_cast< long long >(val1);
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array2 = obj_to_array_contiguous_allow_conversion(obj1, PyArray_LONGLONG, &is_new_object2);
+    if (!array2 || !require_dimensions(array2,1) || !require_size(array2,size,1)
+      || !require_contiguous(array2)   || !require_native(array2)) SWIG_fail;
+    
+    arg2 = (long long*) array2->data;
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array3 = obj_to_array_contiguous_allow_conversion(obj2, PyArray_LONGLONG, &is_new_object3);
+    if (!array3 || !require_dimensions(array3,1) || !require_size(array3,size,1)
+      || !require_contiguous(array3)   || !require_native(array3)) SWIG_fail;
+    
+    arg3 = (long long*) array3->data;
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array4 = obj_to_array_contiguous_allow_conversion(obj3, PyArray_FLOAT, &is_new_object4);
+    if (!array4 || !require_dimensions(array4,1) || !require_size(array4,size,1)
+      || !require_contiguous(array4)   || !require_native(array4)) SWIG_fail;
+    
+    arg4 = (float*) array4->data;
+  }
+  {
+    temp5 = obj_to_array_no_conversion(obj4,PyArray_FLOAT);
+    if (!temp5  || !require_contiguous(temp5) || !require_native(temp5)) SWIG_fail;
+    arg5 = (float*) array_data(temp5);
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_FLOAT, &is_new_object6);
+    if (!array6 || !require_dimensions(array6,1) || !require_size(array6,size,1)
+      || !require_contiguous(array6)   || !require_native(array6)) SWIG_fail;
+    
+    arg6 = (float*) array6->data;
+  }
+  ecode7 = SWIG_AsVal_long_SS_long(obj6, &val7);
+  if (!SWIG_IsOK(ecode7)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "gauss_seidel" "', argument " "7"" of type '" "long long""'");
+  } 
+  arg7 = static_cast< long long >(val7);
+  ecode8 = SWIG_AsVal_long_SS_long(obj7, &val8);
+  if (!SWIG_IsOK(ecode8)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "gauss_seidel" "', argument " "8"" of type '" "long long""'");
+  } 
+  arg8 = static_cast< long long >(val8);
+  ecode9 = SWIG_AsVal_long_SS_long(obj8, &val9);
+  if (!SWIG_IsOK(ecode9)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "gauss_seidel" "', argument " "9"" of type '" "long long""'");
+  } 
+  arg9 = static_cast< long long >(val9);
+  gauss_seidel<long long,float >(arg1,(long long const (*))arg2,(long long const (*))arg3,(float const (*))arg4,arg5,(float const (*))arg6,arg7,arg8,arg9);
+  resultobj = SWIG_Py_Void();
+  {
+    if (is_new_object2 && array2) Py_DECREF(array2);
+  }
+  {
+    if (is_new_object3 && array3) Py_DECREF(array3);
+  }
+  {
+    if (is_new_object4 && array4) Py_DECREF(array4);
+  }
+  {
+    if (is_new_object6 && array6) Py_DECREF(array6);
+  }
+  return resultobj;
+fail:
+  {
+    if (is_new_object2 && array2) Py_DECREF(array2);
+  }
+  {
+    if (is_new_object3 && array3) Py_DECREF(array3);
+  }
+  {
+    if (is_new_object4 && array4) Py_DECREF(array4);
+  }
+  {
+    if (is_new_object6 && array6) Py_DECREF(array6);
+  }
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_gauss_seidel__SWIG_4(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  long long arg1 ;
+  long long *arg2 ;
+  long long *arg3 ;
+  double *arg4 ;
+  double *arg5 ;
+  double *arg6 ;
+  long long arg7 ;
+  long long arg8 ;
+  long long arg9 ;
+  long long val1 ;
+  int ecode1 = 0 ;
+  PyArrayObject *array2 = NULL ;
+  int is_new_object2 ;
+  PyArrayObject *array3 = NULL ;
+  int is_new_object3 ;
+  PyArrayObject *array4 = NULL ;
+  int is_new_object4 ;
+  PyArrayObject *temp5 = NULL ;
+  PyArrayObject *array6 = NULL ;
+  int is_new_object6 ;
+  long long val7 ;
+  int ecode7 = 0 ;
+  long long val8 ;
+  int ecode8 = 0 ;
+  long long val9 ;
+  int ecode9 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  PyObject * obj4 = 0 ;
+  PyObject * obj5 = 0 ;
+  PyObject * obj6 = 0 ;
+  PyObject * obj7 = 0 ;
+  PyObject * obj8 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOO:gauss_seidel",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8)) SWIG_fail;
+  ecode1 = SWIG_AsVal_long_SS_long(obj0, &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "gauss_seidel" "', argument " "1"" of type '" "long long""'");
+  } 
+  arg1 = static_cast< long long >(val1);
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array2 = obj_to_array_contiguous_allow_conversion(obj1, PyArray_LONGLONG, &is_new_object2);
+    if (!array2 || !require_dimensions(array2,1) || !require_size(array2,size,1)
+      || !require_contiguous(array2)   || !require_native(array2)) SWIG_fail;
+    
+    arg2 = (long long*) array2->data;
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array3 = obj_to_array_contiguous_allow_conversion(obj2, PyArray_LONGLONG, &is_new_object3);
+    if (!array3 || !require_dimensions(array3,1) || !require_size(array3,size,1)
+      || !require_contiguous(array3)   || !require_native(array3)) SWIG_fail;
+    
+    arg3 = (long long*) array3->data;
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array4 = obj_to_array_contiguous_allow_conversion(obj3, PyArray_DOUBLE, &is_new_object4);
+    if (!array4 || !require_dimensions(array4,1) || !require_size(array4,size,1)
+      || !require_contiguous(array4)   || !require_native(array4)) SWIG_fail;
+    
+    arg4 = (double*) array4->data;
+  }
+  {
+    temp5 = obj_to_array_no_conversion(obj4,PyArray_DOUBLE);
+    if (!temp5  || !require_contiguous(temp5) || !require_native(temp5)) SWIG_fail;
+    arg5 = (double*) array_data(temp5);
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_DOUBLE, &is_new_object6);
+    if (!array6 || !require_dimensions(array6,1) || !require_size(array6,size,1)
+      || !require_contiguous(array6)   || !require_native(array6)) SWIG_fail;
+    
+    arg6 = (double*) array6->data;
+  }
+  ecode7 = SWIG_AsVal_long_SS_long(obj6, &val7);
+  if (!SWIG_IsOK(ecode7)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "gauss_seidel" "', argument " "7"" of type '" "long long""'");
+  } 
+  arg7 = static_cast< long long >(val7);
+  ecode8 = SWIG_AsVal_long_SS_long(obj7, &val8);
+  if (!SWIG_IsOK(ecode8)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "gauss_seidel" "', argument " "8"" of type '" "long long""'");
+  } 
+  arg8 = static_cast< long long >(val8);
+  ecode9 = SWIG_AsVal_long_SS_long(obj8, &val9);
+  if (!SWIG_IsOK(ecode9)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "gauss_seidel" "', argument " "9"" of type '" "long long""'");
+  } 
+  arg9 = static_cast< long long >(val9);
+  gauss_seidel<long long,double >(arg1,(long long const (*))arg2,(long long const (*))arg3,(double const (*))arg4,arg5,(double const (*))arg6,arg7,arg8,arg9);
+  resultobj = SWIG_Py_Void();
+  {
+    if (is_new_object2 && array2) Py_DECREF(array2);
+  }
+  {
+    if (is_new_object3 && array3) Py_DECREF(array3);
+  }
+  {
+    if (is_new_object4 && array4) Py_DECREF(array4);
+  }
+  {
+    if (is_new_object6 && array6) Py_DECREF(array6);
+  }
+  return resultobj;
+fail:
+  {
+    if (is_new_object2 && array2) Py_DECREF(array2);
+  }
+  {
+    if (is_new_object3 && array3) Py_DECREF(array3);
+  }
+  {
+    if (is_new_object4 && array4) Py_DECREF(array4);
+  }
+  {
+    if (is_new_object6 && array6) Py_DECREF(array6);
+  }
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_gauss_seidel(PyObject *self, PyObject *args) {
   int argc;
   PyObject *argv[10];
@@ -5332,9 +5641,115 @@
       }
     }
   }
+  if (argc == 9) {
+    int _v;
+    {
+      int res = SWIG_AsVal_long_SS_long(argv[0], NULL);
+      _v = SWIG_CheckState(res);
+    }
+    if (_v) {
+      {
+        _v = (is_array(argv[1]) && PyArray_CanCastSafely(PyArray_TYPE(argv[1]),PyArray_LONGLONG)) ? 1 : 0;
+      }
+      if (_v) {
+        {
+          _v = (is_array(argv[2]) && PyArray_CanCastSafely(PyArray_TYPE(argv[2]),PyArray_LONGLONG)) ? 1 : 0;
+        }
+        if (_v) {
+          {
+            _v = (is_array(argv[3]) && PyArray_CanCastSafely(PyArray_TYPE(argv[3]),PyArray_FLOAT)) ? 1 : 0;
+          }
+          if (_v) {
+            {
+              _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_FLOAT)) ? 1 : 0;
+            }
+            if (_v) {
+              {
+                _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_FLOAT)) ? 1 : 0;
+              }
+              if (_v) {
+                {
+                  int res = SWIG_AsVal_long_SS_long(argv[6], NULL);
+                  _v = SWIG_CheckState(res);
+                }
+                if (_v) {
+                  {
+                    int res = SWIG_AsVal_long_SS_long(argv[7], NULL);
+                    _v = SWIG_CheckState(res);
+                  }
+                  if (_v) {
+                    {
+                      int res = SWIG_AsVal_long_SS_long(argv[8], NULL);
+                      _v = SWIG_CheckState(res);
+                    }
+                    if (_v) {
+                      return _wrap_gauss_seidel__SWIG_3(self, args);
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  if (argc == 9) {
+    int _v;
+    {
+      int res = SWIG_AsVal_long_SS_long(argv[0], NULL);
+      _v = SWIG_CheckState(res);
+    }
+    if (_v) {
+      {
+        _v = (is_array(argv[1]) && PyArray_CanCastSafely(PyArray_TYPE(argv[1]),PyArray_LONGLONG)) ? 1 : 0;
+      }
+      if (_v) {
+        {
+          _v = (is_array(argv[2]) && PyArray_CanCastSafely(PyArray_TYPE(argv[2]),PyArray_LONGLONG)) ? 1 : 0;
+        }
+        if (_v) {
+          {
+            _v = (is_array(argv[3]) && PyArray_CanCastSafely(PyArray_TYPE(argv[3]),PyArray_DOUBLE)) ? 1 : 0;
+          }
+          if (_v) {
+            {
+              _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_DOUBLE)) ? 1 : 0;
+            }
+            if (_v) {
+              {
+                _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_DOUBLE)) ? 1 : 0;
+              }
+              if (_v) {
+                {
+                  int res = SWIG_AsVal_long_SS_long(argv[6], NULL);
+                  _v = SWIG_CheckState(res);
+                }
+                if (_v) {
+                  {
+                    int res = SWIG_AsVal_long_SS_long(argv[7], NULL);
+                    _v = SWIG_CheckState(res);
+                  }
+                  if (_v) {
+                    {
+                      int res = SWIG_AsVal_long_SS_long(argv[8], NULL);
+                      _v = SWIG_CheckState(res);
+                    }
+                    if (_v) {
+                      return _wrap_gauss_seidel__SWIG_4(self, args);
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'gauss_seidel'.\n  Possible C/C++ prototypes are:\n""    gauss_seidel<(int,float)>(int const,int const [],int const [],float const [],float [],float const [],int const,int const,int const)\n""    gauss_seidel<(int,double)>(int const,int const [],int const [],double const [],double [],double const [],int const,int const,int const)\n");
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'gauss_seidel'.\n  Possible C/C++ prototypes are:\n""    gauss_seidel<(int,float)>(int const,int const [],int const [],float const [],float [],float const [],int const,int const,int const)\n""    gauss_seidel<(int,double)>(int const,int const [],int const [],double const [],double [],double const [],int const,int const,int const)\n""    gauss_seidel<(long long,float)>(long long const,long long const [],long long const [],float const [],float [],float const [],long long const,long long const,long long const)\n""    gauss_seidel<(long long,double)>(long long const,long long const [],long long const [],double const [],double [],double const [],long long const,long long const,long long const)\n");
   return NULL;
 }
 
@@ -5645,6 +6060,312 @@
 }
 
 
+SWIGINTERN PyObject *_wrap_jacobi__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  long long arg1 ;
+  long long *arg2 ;
+  long long *arg3 ;
+  float *arg4 ;
+  float *arg5 ;
+  float *arg6 ;
+  float *arg7 ;
+  long long arg8 ;
+  long long arg9 ;
+  long long arg10 ;
+  float arg11 ;
+  long long val1 ;
+  int ecode1 = 0 ;
+  PyArrayObject *array2 = NULL ;
+  int is_new_object2 ;
+  PyArrayObject *array3 = NULL ;
+  int is_new_object3 ;
+  PyArrayObject *array4 = NULL ;
+  int is_new_object4 ;
+  PyArrayObject *temp5 = NULL ;
+  PyArrayObject *array6 = NULL ;
+  int is_new_object6 ;
+  PyArrayObject *temp7 = NULL ;
+  long long val8 ;
+  int ecode8 = 0 ;
+  long long val9 ;
+  int ecode9 = 0 ;
+  long long val10 ;
+  int ecode10 = 0 ;
+  float val11 ;
+  int ecode11 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  PyObject * obj4 = 0 ;
+  PyObject * obj5 = 0 ;
+  PyObject * obj6 = 0 ;
+  PyObject * obj7 = 0 ;
+  PyObject * obj8 = 0 ;
+  PyObject * obj9 = 0 ;
+  PyObject * obj10 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOO:jacobi",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10)) SWIG_fail;
+  ecode1 = SWIG_AsVal_long_SS_long(obj0, &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "jacobi" "', argument " "1"" of type '" "long long""'");
+  } 
+  arg1 = static_cast< long long >(val1);
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array2 = obj_to_array_contiguous_allow_conversion(obj1, PyArray_LONGLONG, &is_new_object2);
+    if (!array2 || !require_dimensions(array2,1) || !require_size(array2,size,1)
+      || !require_contiguous(array2)   || !require_native(array2)) SWIG_fail;
+    
+    arg2 = (long long*) array2->data;
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array3 = obj_to_array_contiguous_allow_conversion(obj2, PyArray_LONGLONG, &is_new_object3);
+    if (!array3 || !require_dimensions(array3,1) || !require_size(array3,size,1)
+      || !require_contiguous(array3)   || !require_native(array3)) SWIG_fail;
+    
+    arg3 = (long long*) array3->data;
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array4 = obj_to_array_contiguous_allow_conversion(obj3, PyArray_FLOAT, &is_new_object4);
+    if (!array4 || !require_dimensions(array4,1) || !require_size(array4,size,1)
+      || !require_contiguous(array4)   || !require_native(array4)) SWIG_fail;
+    
+    arg4 = (float*) array4->data;
+  }
+  {
+    temp5 = obj_to_array_no_conversion(obj4,PyArray_FLOAT);
+    if (!temp5  || !require_contiguous(temp5) || !require_native(temp5)) SWIG_fail;
+    arg5 = (float*) array_data(temp5);
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_FLOAT, &is_new_object6);
+    if (!array6 || !require_dimensions(array6,1) || !require_size(array6,size,1)
+      || !require_contiguous(array6)   || !require_native(array6)) SWIG_fail;
+    
+    arg6 = (float*) array6->data;
+  }
+  {
+    temp7 = obj_to_array_no_conversion(obj6,PyArray_FLOAT);
+    if (!temp7  || !require_contiguous(temp7) || !require_native(temp7)) SWIG_fail;
+    arg7 = (float*) array_data(temp7);
+  }
+  ecode8 = SWIG_AsVal_long_SS_long(obj7, &val8);
+  if (!SWIG_IsOK(ecode8)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "jacobi" "', argument " "8"" of type '" "long long""'");
+  } 
+  arg8 = static_cast< long long >(val8);
+  ecode9 = SWIG_AsVal_long_SS_long(obj8, &val9);
+  if (!SWIG_IsOK(ecode9)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "jacobi" "', argument " "9"" of type '" "long long""'");
+  } 
+  arg9 = static_cast< long long >(val9);
+  ecode10 = SWIG_AsVal_long_SS_long(obj9, &val10);
+  if (!SWIG_IsOK(ecode10)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "jacobi" "', argument " "10"" of type '" "long long""'");
+  } 
+  arg10 = static_cast< long long >(val10);
+  ecode11 = SWIG_AsVal_float(obj10, &val11);
+  if (!SWIG_IsOK(ecode11)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "jacobi" "', argument " "11"" of type '" "float""'");
+  } 
+  arg11 = static_cast< float >(val11);
+  jacobi<long long,float >(arg1,(long long const (*))arg2,(long long const (*))arg3,(float const (*))arg4,arg5,(float const (*))arg6,arg7,arg8,arg9,arg10,arg11);
+  resultobj = SWIG_Py_Void();
+  {
+    if (is_new_object2 && array2) Py_DECREF(array2);
+  }
+  {
+    if (is_new_object3 && array3) Py_DECREF(array3);
+  }
+  {
+    if (is_new_object4 && array4) Py_DECREF(array4);
+  }
+  {
+    if (is_new_object6 && array6) Py_DECREF(array6);
+  }
+  return resultobj;
+fail:
+  {
+    if (is_new_object2 && array2) Py_DECREF(array2);
+  }
+  {
+    if (is_new_object3 && array3) Py_DECREF(array3);
+  }
+  {
+    if (is_new_object4 && array4) Py_DECREF(array4);
+  }
+  {
+    if (is_new_object6 && array6) Py_DECREF(array6);
+  }
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_jacobi__SWIG_4(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  long long arg1 ;
+  long long *arg2 ;
+  long long *arg3 ;
+  double *arg4 ;
+  double *arg5 ;
+  double *arg6 ;
+  double *arg7 ;
+  long long arg8 ;
+  long long arg9 ;
+  long long arg10 ;
+  double arg11 ;
+  long long val1 ;
+  int ecode1 = 0 ;
+  PyArrayObject *array2 = NULL ;
+  int is_new_object2 ;
+  PyArrayObject *array3 = NULL ;
+  int is_new_object3 ;
+  PyArrayObject *array4 = NULL ;
+  int is_new_object4 ;
+  PyArrayObject *temp5 = NULL ;
+  PyArrayObject *array6 = NULL ;
+  int is_new_object6 ;
+  PyArrayObject *temp7 = NULL ;
+  long long val8 ;
+  int ecode8 = 0 ;
+  long long val9 ;
+  int ecode9 = 0 ;
+  long long val10 ;
+  int ecode10 = 0 ;
+  double val11 ;
+  int ecode11 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  PyObject * obj3 = 0 ;
+  PyObject * obj4 = 0 ;
+  PyObject * obj5 = 0 ;
+  PyObject * obj6 = 0 ;
+  PyObject * obj7 = 0 ;
+  PyObject * obj8 = 0 ;
+  PyObject * obj9 = 0 ;
+  PyObject * obj10 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOO:jacobi",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10)) SWIG_fail;
+  ecode1 = SWIG_AsVal_long_SS_long(obj0, &val1);
+  if (!SWIG_IsOK(ecode1)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "jacobi" "', argument " "1"" of type '" "long long""'");
+  } 
+  arg1 = static_cast< long long >(val1);
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array2 = obj_to_array_contiguous_allow_conversion(obj1, PyArray_LONGLONG, &is_new_object2);
+    if (!array2 || !require_dimensions(array2,1) || !require_size(array2,size,1)
+      || !require_contiguous(array2)   || !require_native(array2)) SWIG_fail;
+    
+    arg2 = (long long*) array2->data;
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array3 = obj_to_array_contiguous_allow_conversion(obj2, PyArray_LONGLONG, &is_new_object3);
+    if (!array3 || !require_dimensions(array3,1) || !require_size(array3,size,1)
+      || !require_contiguous(array3)   || !require_native(array3)) SWIG_fail;
+    
+    arg3 = (long long*) array3->data;
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array4 = obj_to_array_contiguous_allow_conversion(obj3, PyArray_DOUBLE, &is_new_object4);
+    if (!array4 || !require_dimensions(array4,1) || !require_size(array4,size,1)
+      || !require_contiguous(array4)   || !require_native(array4)) SWIG_fail;
+    
+    arg4 = (double*) array4->data;
+  }
+  {
+    temp5 = obj_to_array_no_conversion(obj4,PyArray_DOUBLE);
+    if (!temp5  || !require_contiguous(temp5) || !require_native(temp5)) SWIG_fail;
+    arg5 = (double*) array_data(temp5);
+  }
+  {
+    npy_intp size[1] = {
+      -1
+    };
+    array6 = obj_to_array_contiguous_allow_conversion(obj5, PyArray_DOUBLE, &is_new_object6);
+    if (!array6 || !require_dimensions(array6,1) || !require_size(array6,size,1)
+      || !require_contiguous(array6)   || !require_native(array6)) SWIG_fail;
+    
+    arg6 = (double*) array6->data;
+  }
+  {
+    temp7 = obj_to_array_no_conversion(obj6,PyArray_DOUBLE);
+    if (!temp7  || !require_contiguous(temp7) || !require_native(temp7)) SWIG_fail;
+    arg7 = (double*) array_data(temp7);
+  }
+  ecode8 = SWIG_AsVal_long_SS_long(obj7, &val8);
+  if (!SWIG_IsOK(ecode8)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "jacobi" "', argument " "8"" of type '" "long long""'");
+  } 
+  arg8 = static_cast< long long >(val8);
+  ecode9 = SWIG_AsVal_long_SS_long(obj8, &val9);
+  if (!SWIG_IsOK(ecode9)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "jacobi" "', argument " "9"" of type '" "long long""'");
+  } 
+  arg9 = static_cast< long long >(val9);
+  ecode10 = SWIG_AsVal_long_SS_long(obj9, &val10);
+  if (!SWIG_IsOK(ecode10)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "jacobi" "', argument " "10"" of type '" "long long""'");
+  } 
+  arg10 = static_cast< long long >(val10);
+  ecode11 = SWIG_AsVal_double(obj10, &val11);
+  if (!SWIG_IsOK(ecode11)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "jacobi" "', argument " "11"" of type '" "double""'");
+  } 
+  arg11 = static_cast< double >(val11);
+  jacobi<long long,double >(arg1,(long long const (*))arg2,(long long const (*))arg3,(double const (*))arg4,arg5,(double const (*))arg6,arg7,arg8,arg9,arg10,arg11);
+  resultobj = SWIG_Py_Void();
+  {
+    if (is_new_object2 && array2) Py_DECREF(array2);
+  }
+  {
+    if (is_new_object3 && array3) Py_DECREF(array3);
+  }
+  {
+    if (is_new_object4 && array4) Py_DECREF(array4);
+  }
+  {
+    if (is_new_object6 && array6) Py_DECREF(array6);
+  }
+  return resultobj;
+fail:
+  {
+    if (is_new_object2 && array2) Py_DECREF(array2);
+  }
+  {
+    if (is_new_object3 && array3) Py_DECREF(array3);
+  }
+  {
+    if (is_new_object4 && array4) Py_DECREF(array4);
+  }
+  {
+    if (is_new_object6 && array6) Py_DECREF(array6);
+  }
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_jacobi(PyObject *self, PyObject *args) {
   int argc;
   PyObject *argv[12];
@@ -5783,9 +6504,137 @@
       }
     }
   }
+  if (argc == 11) {
+    int _v;
+    {
+      int res = SWIG_AsVal_long_SS_long(argv[0], NULL);
+      _v = SWIG_CheckState(res);
+    }
+    if (_v) {
+      {
+        _v = (is_array(argv[1]) && PyArray_CanCastSafely(PyArray_TYPE(argv[1]),PyArray_LONGLONG)) ? 1 : 0;
+      }
+      if (_v) {
+        {
+          _v = (is_array(argv[2]) && PyArray_CanCastSafely(PyArray_TYPE(argv[2]),PyArray_LONGLONG)) ? 1 : 0;
+        }
+        if (_v) {
+          {
+            _v = (is_array(argv[3]) && PyArray_CanCastSafely(PyArray_TYPE(argv[3]),PyArray_FLOAT)) ? 1 : 0;
+          }
+          if (_v) {
+            {
+              _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_FLOAT)) ? 1 : 0;
+            }
+            if (_v) {
+              {
+                _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_FLOAT)) ? 1 : 0;
+              }
+              if (_v) {
+                {
+                  _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_FLOAT)) ? 1 : 0;
+                }
+                if (_v) {
+                  {
+                    int res = SWIG_AsVal_long_SS_long(argv[7], NULL);
+                    _v = SWIG_CheckState(res);
+                  }
+                  if (_v) {
+                    {
+                      int res = SWIG_AsVal_long_SS_long(argv[8], NULL);
+                      _v = SWIG_CheckState(res);
+                    }
+                    if (_v) {
+                      {
+                        int res = SWIG_AsVal_long_SS_long(argv[9], NULL);
+                        _v = SWIG_CheckState(res);
+                      }
+                      if (_v) {
+                        {
+                          int res = SWIG_AsVal_float(argv[10], NULL);
+                          _v = SWIG_CheckState(res);
+                        }
+                        if (_v) {
+                          return _wrap_jacobi__SWIG_3(self, args);
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  if (argc == 11) {
+    int _v;
+    {
+      int res = SWIG_AsVal_long_SS_long(argv[0], NULL);
+      _v = SWIG_CheckState(res);
+    }
+    if (_v) {
+      {
+        _v = (is_array(argv[1]) && PyArray_CanCastSafely(PyArray_TYPE(argv[1]),PyArray_LONGLONG)) ? 1 : 0;
+      }
+      if (_v) {
+        {
+          _v = (is_array(argv[2]) && PyArray_CanCastSafely(PyArray_TYPE(argv[2]),PyArray_LONGLONG)) ? 1 : 0;
+        }
+        if (_v) {
+          {
+            _v = (is_array(argv[3]) && PyArray_CanCastSafely(PyArray_TYPE(argv[3]),PyArray_DOUBLE)) ? 1 : 0;
+          }
+          if (_v) {
+            {
+              _v = (is_array(argv[4]) && PyArray_CanCastSafely(PyArray_TYPE(argv[4]),PyArray_DOUBLE)) ? 1 : 0;
+            }
+            if (_v) {
+              {
+                _v = (is_array(argv[5]) && PyArray_CanCastSafely(PyArray_TYPE(argv[5]),PyArray_DOUBLE)) ? 1 : 0;
+              }
+              if (_v) {
+                {
+                  _v = (is_array(argv[6]) && PyArray_CanCastSafely(PyArray_TYPE(argv[6]),PyArray_DOUBLE)) ? 1 : 0;
+                }
+                if (_v) {
+                  {
+                    int res = SWIG_AsVal_long_SS_long(argv[7], NULL);
+                    _v = SWIG_CheckState(res);
+                  }
+                  if (_v) {
+                    {
+                      int res = SWIG_AsVal_long_SS_long(argv[8], NULL);
+                      _v = SWIG_CheckState(res);
+                    }
+                    if (_v) {
+                      {
+                        int res = SWIG_AsVal_long_SS_long(argv[9], NULL);
+                        _v = SWIG_CheckState(res);
+                      }
+                      if (_v) {
+                        {
+                          int res = SWIG_AsVal_double(argv[10], NULL);
+                          _v = SWIG_CheckState(res);
+                        }
+                        if (_v) {
+                          return _wrap_jacobi__SWIG_4(self, args);
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'jacobi'.\n  Possible C/C++ prototypes are:\n""    jacobi<(int,float)>(int const,int const [],int const [],float const [],float [],float const [],float [],int const,int const,int const,float const)\n""    jacobi<(int,double)>(int const,int const [],int const [],double const [],double [],double const [],double [],int const,int const,int const,double const)\n");
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'jacobi'.\n  Possible C/C++ prototypes are:\n""    jacobi<(int,float)>(int const,int const [],int const [],float const [],float [],float const [],float [],int const,int const,int const,float const)\n""    jacobi<(int,double)>(int const,int const [],int const [],double const [],double [],double const [],double [],int const,int const,int const,double const)\n""    jacobi<(long long,float)>(long long const,long long const [],long long const [],float const [],float [],float const [],float [],long long const,long long const,long long const,float const)\n""    jacobi<(long long,double)>(long long const,long long const [],long long const [],double const [],double [],double const [],double [],long long const,long long const,long long const,double const)\n");
   return NULL;
 }
 
@@ -5829,6 +6678,12 @@
 		"    int row_start, int row_stop, int row_step)\n"
 		"gauss_seidel(int n_row, int Ap, int Aj, double Ax, double x, double b, \n"
 		"    int row_start, int row_stop, int row_step)\n"
+		"gauss_seidel(long long n_row, long long Ap, long long Aj, float Ax, \n"
+		"    float x, float b, long long row_start, long long row_stop, \n"
+		"    long long row_step)\n"
+		"gauss_seidel(long long n_row, long long Ap, long long Aj, double Ax, \n"
+		"    double x, double b, long long row_start, \n"
+		"    long long row_stop, long long row_step)\n"
 		""},
 	 { (char *)"jacobi", _wrap_jacobi, METH_VARARGS, (char *)"\n"
 		"jacobi(int n_row, int Ap, int Aj, float Ax, float x, float b, \n"
@@ -5837,6 +6692,14 @@
 		"jacobi(int n_row, int Ap, int Aj, double Ax, double x, double b, \n"
 		"    double temp, int row_start, int row_stop, \n"
 		"    int row_step, double omega)\n"
+		"jacobi(long long n_row, long long Ap, long long Aj, float Ax, \n"
+		"    float x, float b, float temp, long long row_start, \n"
+		"    long long row_stop, long long row_step, \n"
+		"    float omega)\n"
+		"jacobi(long long n_row, long long Ap, long long Aj, double Ax, \n"
+		"    double x, double b, double temp, long long row_start, \n"
+		"    long long row_stop, long long row_step, \n"
+		"    double omega)\n"
 		""},
 	 { NULL, NULL, 0, NULL }
 };

Modified: branches/scipy.scons/scipy/sandbox/multigrid/multilevel.py
===================================================================
--- branches/scipy.scons/scipy/sandbox/multigrid/multilevel.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/multigrid/multilevel.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -43,7 +43,7 @@
 
         References:
             "Multigrid"
-                Trottenberg, U., C. W. Oosterlee, and Anton Schuller. 
+                Trottenberg, U., C. W. Oosterlee, and Anton Schuller.
                 San Diego: Academic Press, 2001.
                 Appendix A
 
@@ -60,9 +60,9 @@
         Ps.append(P)
 
     return multilevel_solver(As,Ps)
-        
 
 
+
 def smoothed_aggregation_solver(A, B=None, blocks=None, \
                                 aggregation=None, max_levels=10, \
                                 max_coarse=500, epsilon=0.0, \
@@ -98,12 +98,12 @@
             Strength of connection parameter used in aggregation.
         omega: {float} : default 4.0/3.0
             Damping parameter used in prolongator smoothing (0 < omega < 2)
-        symmetric: {boolean} : default True 
+        symmetric: {boolean} : default True
             True if A is symmetric, False otherwise
         rescale: {boolean} : default True
             If True, symmetrically rescale A by the diagonal
             i.e. A -> D * A * D,  where D is diag(A)^-0.5
-            
+
     *Example*:
         TODO
 
@@ -120,17 +120,17 @@
         B = asarray(B)
 
     pre,post = None,None   #preprocess/postprocess
-    
+
     if rescale:
         D_sqrt,D_sqrt_inv,A = symmetric_rescaling(A)
         D_sqrt,D_sqrt_inv = diag_sparse(D_sqrt),diag_sparse(D_sqrt_inv)
-        
+
         B = D_sqrt * B  #scale candidates
         def pre(x,b):
             return D_sqrt*x,D_sqrt_inv*b
         def post(x):
             return D_sqrt_inv*x
-        
+
     As = [A]
     Ps = []
 

Modified: branches/scipy.scons/scipy/sandbox/multigrid/tests/test_utils.py
===================================================================
--- branches/scipy.scons/scipy/sandbox/multigrid/tests/test_utils.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/multigrid/tests/test_utils.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -59,7 +59,7 @@
         cases = []
         cases.append( diag_sparse(array([1,2,3,4])) )
         cases.append( diag_sparse(array([1,0,3,4])) )
-        
+
         A = array([ [ 5.5,  3.5,  4.8],
                     [ 2. ,  9.9,  0.5],
                     [ 6.5,  2.6,  5.7]])

Modified: branches/scipy.scons/scipy/sandbox/multigrid/utils.py
===================================================================
--- branches/scipy.scons/scipy/sandbox/multigrid/utils.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sandbox/multigrid/utils.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -61,11 +61,11 @@
     D_sqrt = sqrt(D)
     D_sqrt_inv = 1.0/D_sqrt
     D_sqrt_inv[mask] = 0
-    
+
     #TODO time this against simple implementation
     data = A.data * D_sqrt_inv[A.indices]
     data *= D_sqrt_inv[arange(A.shape[0]).repeat(diff(A.indptr))]
-    
+
     DAD = A.__class__((data,A.indices,A.indptr),dims=A.shape)
 
     return D_sqrt,D_sqrt_inv,DAD

Modified: branches/scipy.scons/scipy/sparse/sparse.py
===================================================================
--- branches/scipy.scons/scipy/sparse/sparse.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sparse/sparse.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -92,7 +92,7 @@
 
     def set_shape(self,shape):
         shape = tuple(shape)
-        
+
         if len(shape) != 2:
             raise ValueError("Only two-dimensional sparse arrays "
                                      "are supported.")
@@ -103,7 +103,7 @@
 
         if not (shape[0] >= 1 and shape[1] >= 1):
             raise TypeError,'invalid shape'
-        
+
         if (self._shape != shape) and (self._shape is not None):
             try:
                 self = self.reshape(shape)
@@ -518,17 +518,17 @@
 
     def _set_self(self, other, copy=False):
         """take the member variables of other and assign them to self"""
-        
+
         if copy:
             other = other.copy()
-        
+
         self.data    = other.data
         self.indices = other.indices
         self.indptr  = other.indptr
         self.shape   = other.shape
         self.dtype   = other.data.dtype
-          
 
+
     def _check_format(self, orientation, full_check):
         # some functions pass floats
         self.shape = tuple([int(x) for x in self.shape])
@@ -988,14 +988,14 @@
                     self._set_self( other )
 
         else:
-            raise ValueError, "unrecognized form for csc_matrix constructor" 
+            raise ValueError, "unrecognized form for csc_matrix constructor"
 
 
         # Read matrix dimensions given, if any
         if dims is not None:
             self.shape = dims   # spmatrix will check for errors
         else:
-            if self.shape is None:                
+            if self.shape is None:
                 # shape not already set, try to infer dimensions
                 try:
                     M = self.indices.max() + 1
@@ -1238,7 +1238,7 @@
             if copy:
                 arg1 = arg1.copy()
             self._set_self( self._tothis(arg1) )
-        
+
         elif isinstance(arg1, tuple):
             if isshape(arg1):
                 # It's a tuple of matrix dimensions (M, N)
@@ -1270,7 +1270,7 @@
                     other = coo_matrix((data, ij), dims=dims )
                     other = self._tothis(other)
                     self._set_self( other )
-        
+
         else:
             raise ValueError, "unrecognized form for csr_matrix constructor"
 
@@ -1278,7 +1278,7 @@
         if dims is not None:
             self.shape = dims   # spmatrix will check for errors
         else:
-            if self.shape is None:                
+            if self.shape is None:
                 # shape not already set, try to infer dimensions
                 try:
                     M = len(self.indptr) - 1

Modified: branches/scipy.scons/scipy/sparse/sparsetools/sparsetools.py
===================================================================
--- branches/scipy.scons/scipy/sparse/sparsetools/sparsetools.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/sparse/sparsetools/sparsetools.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -51,1609 +51,1608 @@
 
 
 def extract_csr_diagonal(*args):
-  """
-    extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        std::vector<(signed char)> Yx)
-    extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        std::vector<(unsigned char)> Yx)
-    extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, short Ax, std::vector<(short)> Yx)
-    extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, int Ax, std::vector<(int)> Yx)
-    extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        std::vector<(long long)> Yx)
-    extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, float Ax, std::vector<(float)> Yx)
-    extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, double Ax, std::vector<(double)> Yx)
-    extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        std::vector<(npy_cfloat_wrapper)> Yx)
-    extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        std::vector<(npy_cdouble_wrapper)> Yx)
-    extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, std::vector<(signed char)> Yx)
-    extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, std::vector<(unsigned char)> Yx)
-    extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, std::vector<(short)> Yx)
-    extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, std::vector<(int)> Yx)
-    extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, std::vector<(long long)> Yx)
-    extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, std::vector<(float)> Yx)
-    extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, std::vector<(double)> Yx)
-    extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, std::vector<(npy_cfloat_wrapper)> Yx)
-    extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, std::vector<(npy_cdouble_wrapper)> Yx)
     """
-  return _sparsetools.extract_csr_diagonal(*args)
+      extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          std::vector<(signed char)> Yx)
+      extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          std::vector<(unsigned char)> Yx)
+      extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, short Ax, std::vector<(short)> Yx)
+      extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, int Ax, std::vector<(int)> Yx)
+      extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          std::vector<(long long)> Yx)
+      extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, float Ax, std::vector<(float)> Yx)
+      extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, double Ax, std::vector<(double)> Yx)
+      extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          std::vector<(npy_cfloat_wrapper)> Yx)
+      extract_csr_diagonal(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          std::vector<(npy_cdouble_wrapper)> Yx)
+      extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, std::vector<(signed char)> Yx)
+      extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, std::vector<(unsigned char)> Yx)
+      extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, std::vector<(short)> Yx)
+      extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, std::vector<(int)> Yx)
+      extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, std::vector<(long long)> Yx)
+      extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, std::vector<(float)> Yx)
+      extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, std::vector<(double)> Yx)
+      extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, std::vector<(npy_cfloat_wrapper)> Yx)
+      extract_csr_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, std::vector<(npy_cdouble_wrapper)> Yx)
+      """
+    return _sparsetools.extract_csr_diagonal(*args)
 
 def extract_csc_diagonal(*args):
-  """
-    extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        std::vector<(signed char)> Yx)
-    extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        std::vector<(unsigned char)> Yx)
-    extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, short Ax, std::vector<(short)> Yx)
-    extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, int Ax, std::vector<(int)> Yx)
-    extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        std::vector<(long long)> Yx)
-    extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, float Ax, std::vector<(float)> Yx)
-    extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, double Ax, std::vector<(double)> Yx)
-    extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        std::vector<(npy_cfloat_wrapper)> Yx)
-    extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        std::vector<(npy_cdouble_wrapper)> Yx)
-    extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, std::vector<(signed char)> Yx)
-    extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, std::vector<(unsigned char)> Yx)
-    extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, std::vector<(short)> Yx)
-    extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, std::vector<(int)> Yx)
-    extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, std::vector<(long long)> Yx)
-    extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, std::vector<(float)> Yx)
-    extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, std::vector<(double)> Yx)
-    extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, std::vector<(npy_cfloat_wrapper)> Yx)
-    extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, std::vector<(npy_cdouble_wrapper)> Yx)
     """
-  return _sparsetools.extract_csc_diagonal(*args)
+      extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          std::vector<(signed char)> Yx)
+      extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          std::vector<(unsigned char)> Yx)
+      extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, short Ax, std::vector<(short)> Yx)
+      extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, int Ax, std::vector<(int)> Yx)
+      extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          std::vector<(long long)> Yx)
+      extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, float Ax, std::vector<(float)> Yx)
+      extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, double Ax, std::vector<(double)> Yx)
+      extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          std::vector<(npy_cfloat_wrapper)> Yx)
+      extract_csc_diagonal(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          std::vector<(npy_cdouble_wrapper)> Yx)
+      extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, std::vector<(signed char)> Yx)
+      extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, std::vector<(unsigned char)> Yx)
+      extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, std::vector<(short)> Yx)
+      extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, std::vector<(int)> Yx)
+      extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, std::vector<(long long)> Yx)
+      extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, std::vector<(float)> Yx)
+      extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, std::vector<(double)> Yx)
+      extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, std::vector<(npy_cfloat_wrapper)> Yx)
+      extract_csc_diagonal(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, std::vector<(npy_cdouble_wrapper)> Yx)
+      """
+    return _sparsetools.extract_csc_diagonal(*args)
 
 def csrtocsc(*args):
-  """
-    csrtocsc(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(signed char)> Bx)
-    csrtocsc(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(unsigned char)> Bx)
-    csrtocsc(int n_row, int n_col, int Ap, int Aj, short Ax, std::vector<(int)> Bp, 
-        std::vector<(int)> Bi, std::vector<(short)> Bx)
-    csrtocsc(int n_row, int n_col, int Ap, int Aj, int Ax, std::vector<(int)> Bp, 
-        std::vector<(int)> Bi, std::vector<(int)> Bx)
-    csrtocsc(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(long long)> Bx)
-    csrtocsc(int n_row, int n_col, int Ap, int Aj, float Ax, std::vector<(int)> Bp, 
-        std::vector<(int)> Bi, std::vector<(float)> Bx)
-    csrtocsc(int n_row, int n_col, int Ap, int Aj, double Ax, std::vector<(int)> Bp, 
-        std::vector<(int)> Bi, std::vector<(double)> Bx)
-    csrtocsc(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    csrtocsc(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
-    csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, std::vector<(signed char)> Bx)
-    csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, std::vector<(unsigned char)> Bx)
-    csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, std::vector<(short)> Bx)
-    csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, std::vector<(int)> Bx)
-    csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, std::vector<(long long)> Bx)
-    csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, std::vector<(float)> Bx)
-    csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, std::vector<(double)> Bx)
-    csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
     """
-  return _sparsetools.csrtocsc(*args)
+      csrtocsc(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(signed char)> Bx)
+      csrtocsc(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(unsigned char)> Bx)
+      csrtocsc(int n_row, int n_col, int Ap, int Aj, short Ax, std::vector<(int)> Bp,
+          std::vector<(int)> Bi, std::vector<(short)> Bx)
+      csrtocsc(int n_row, int n_col, int Ap, int Aj, int Ax, std::vector<(int)> Bp,
+          std::vector<(int)> Bi, std::vector<(int)> Bx)
+      csrtocsc(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(long long)> Bx)
+      csrtocsc(int n_row, int n_col, int Ap, int Aj, float Ax, std::vector<(int)> Bp,
+          std::vector<(int)> Bi, std::vector<(float)> Bx)
+      csrtocsc(int n_row, int n_col, int Ap, int Aj, double Ax, std::vector<(int)> Bp,
+          std::vector<(int)> Bi, std::vector<(double)> Bx)
+      csrtocsc(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      csrtocsc(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi, std::vector<(signed char)> Bx)
+      csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi, std::vector<(unsigned char)> Bx)
+      csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi, std::vector<(short)> Bx)
+      csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi, std::vector<(int)> Bx)
+      csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi, std::vector<(long long)> Bx)
+      csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi, std::vector<(float)> Bx)
+      csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi, std::vector<(double)> Bx)
+      csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      csrtocsc(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      """
+    return _sparsetools.csrtocsc(*args)
 
 def csctocsr(*args):
-  """
-    csctocsr(int n_row, int n_col, int Ap, int Ai, signed char Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(signed char)> Bx)
-    csctocsr(int n_row, int n_col, int Ap, int Ai, unsigned char Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(unsigned char)> Bx)
-    csctocsr(int n_row, int n_col, int Ap, int Ai, short Ax, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(short)> Bx)
-    csctocsr(int n_row, int n_col, int Ap, int Ai, int Ax, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(int)> Bx)
-    csctocsr(int n_row, int n_col, int Ap, int Ai, long long Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(long long)> Bx)
-    csctocsr(int n_row, int n_col, int Ap, int Ai, float Ax, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(float)> Bx)
-    csctocsr(int n_row, int n_col, int Ap, int Ai, double Ax, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(double)> Bx)
-    csctocsr(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    csctocsr(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
-    csctocsr(long long n_row, long long n_col, long long Ap, long long Ai, 
-        signed char Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, std::vector<(signed char)> Bx)
-    csctocsr(long long n_row, long long n_col, long long Ap, long long Ai, 
-        unsigned char Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, std::vector<(unsigned char)> Bx)
-    csctocsr(long long n_row, long long n_col, long long Ap, long long Ai, 
-        short Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, std::vector<(short)> Bx)
-    csctocsr(long long n_row, long long n_col, long long Ap, long long Ai, 
-        int Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, std::vector<(int)> Bx)
-    csctocsr(long long n_row, long long n_col, long long Ap, long long Ai, 
-        long long Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, std::vector<(long long)> Bx)
-    csctocsr(long long n_row, long long n_col, long long Ap, long long Ai, 
-        float Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, std::vector<(float)> Bx)
-    csctocsr(long long n_row, long long n_col, long long Ap, long long Ai, 
-        double Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, std::vector<(double)> Bx)
-    csctocsr(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cfloat_wrapper Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    csctocsr(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cdouble_wrapper Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
     """
-  return _sparsetools.csctocsr(*args)
+      csctocsr(int n_row, int n_col, int Ap, int Ai, signed char Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(signed char)> Bx)
+      csctocsr(int n_row, int n_col, int Ap, int Ai, unsigned char Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(unsigned char)> Bx)
+      csctocsr(int n_row, int n_col, int Ap, int Ai, short Ax, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(short)> Bx)
+      csctocsr(int n_row, int n_col, int Ap, int Ai, int Ax, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(int)> Bx)
+      csctocsr(int n_row, int n_col, int Ap, int Ai, long long Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(long long)> Bx)
+      csctocsr(int n_row, int n_col, int Ap, int Ai, float Ax, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(float)> Bx)
+      csctocsr(int n_row, int n_col, int Ap, int Ai, double Ax, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(double)> Bx)
+      csctocsr(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      csctocsr(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      csctocsr(long long n_row, long long n_col, long long Ap, long long Ai,
+          signed char Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj, std::vector<(signed char)> Bx)
+      csctocsr(long long n_row, long long n_col, long long Ap, long long Ai,
+          unsigned char Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj, std::vector<(unsigned char)> Bx)
+      csctocsr(long long n_row, long long n_col, long long Ap, long long Ai,
+          short Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj, std::vector<(short)> Bx)
+      csctocsr(long long n_row, long long n_col, long long Ap, long long Ai,
+          int Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj, std::vector<(int)> Bx)
+      csctocsr(long long n_row, long long n_col, long long Ap, long long Ai,
+          long long Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj, std::vector<(long long)> Bx)
+      csctocsr(long long n_row, long long n_col, long long Ap, long long Ai,
+          float Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj, std::vector<(float)> Bx)
+      csctocsr(long long n_row, long long n_col, long long Ap, long long Ai,
+          double Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj, std::vector<(double)> Bx)
+      csctocsr(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cfloat_wrapper Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      csctocsr(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cdouble_wrapper Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      """
+    return _sparsetools.csctocsr(*args)
 
 def csrtocoo(*args):
-  """
-    csrtocoo(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        std::vector<(int)> Bi, std::vector<(int)> Bj, 
-        std::vector<(signed char)> Bx)
-    csrtocoo(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        std::vector<(int)> Bi, std::vector<(int)> Bj, 
-        std::vector<(unsigned char)> Bx)
-    csrtocoo(int n_row, int n_col, int Ap, int Aj, short Ax, std::vector<(int)> Bi, 
-        std::vector<(int)> Bj, std::vector<(short)> Bx)
-    csrtocoo(int n_row, int n_col, int Ap, int Aj, int Ax, std::vector<(int)> Bi, 
-        std::vector<(int)> Bj, std::vector<(int)> Bx)
-    csrtocoo(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        std::vector<(int)> Bi, std::vector<(int)> Bj, 
-        std::vector<(long long)> Bx)
-    csrtocoo(int n_row, int n_col, int Ap, int Aj, float Ax, std::vector<(int)> Bi, 
-        std::vector<(int)> Bj, std::vector<(float)> Bx)
-    csrtocoo(int n_row, int n_col, int Ap, int Aj, double Ax, std::vector<(int)> Bi, 
-        std::vector<(int)> Bj, std::vector<(double)> Bx)
-    csrtocoo(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        std::vector<(int)> Bi, std::vector<(int)> Bj, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    csrtocoo(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        std::vector<(int)> Bi, std::vector<(int)> Bj, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
-    csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(signed char)> Bx)
-    csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(unsigned char)> Bx)
-    csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(short)> Bx)
-    csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(int)> Bx)
-    csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(long long)> Bx)
-    csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(float)> Bx)
-    csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(double)> Bx)
-    csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
     """
-  return _sparsetools.csrtocoo(*args)
+      csrtocoo(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          std::vector<(int)> Bi, std::vector<(int)> Bj,
+          std::vector<(signed char)> Bx)
+      csrtocoo(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          std::vector<(int)> Bi, std::vector<(int)> Bj,
+          std::vector<(unsigned char)> Bx)
+      csrtocoo(int n_row, int n_col, int Ap, int Aj, short Ax, std::vector<(int)> Bi,
+          std::vector<(int)> Bj, std::vector<(short)> Bx)
+      csrtocoo(int n_row, int n_col, int Ap, int Aj, int Ax, std::vector<(int)> Bi,
+          std::vector<(int)> Bj, std::vector<(int)> Bx)
+      csrtocoo(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          std::vector<(int)> Bi, std::vector<(int)> Bj,
+          std::vector<(long long)> Bx)
+      csrtocoo(int n_row, int n_col, int Ap, int Aj, float Ax, std::vector<(int)> Bi,
+          std::vector<(int)> Bj, std::vector<(float)> Bx)
+      csrtocoo(int n_row, int n_col, int Ap, int Aj, double Ax, std::vector<(int)> Bi,
+          std::vector<(int)> Bj, std::vector<(double)> Bx)
+      csrtocoo(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          std::vector<(int)> Bi, std::vector<(int)> Bj,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      csrtocoo(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          std::vector<(int)> Bi, std::vector<(int)> Bj,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(signed char)> Bx)
+      csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(unsigned char)> Bx)
+      csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(short)> Bx)
+      csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(int)> Bx)
+      csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(long long)> Bx)
+      csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(float)> Bx)
+      csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(double)> Bx)
+      csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      csrtocoo(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      """
+    return _sparsetools.csrtocoo(*args)
 
 def csctocoo(*args):
-  """
-    csctocoo(int n_row, int n_col, int Ap, int Ai, signed char Ax, 
-        std::vector<(int)> Bi, std::vector<(int)> Bj, 
-        std::vector<(signed char)> Bx)
-    csctocoo(int n_row, int n_col, int Ap, int Ai, unsigned char Ax, 
-        std::vector<(int)> Bi, std::vector<(int)> Bj, 
-        std::vector<(unsigned char)> Bx)
-    csctocoo(int n_row, int n_col, int Ap, int Ai, short Ax, std::vector<(int)> Bi, 
-        std::vector<(int)> Bj, std::vector<(short)> Bx)
-    csctocoo(int n_row, int n_col, int Ap, int Ai, int Ax, std::vector<(int)> Bi, 
-        std::vector<(int)> Bj, std::vector<(int)> Bx)
-    csctocoo(int n_row, int n_col, int Ap, int Ai, long long Ax, 
-        std::vector<(int)> Bi, std::vector<(int)> Bj, 
-        std::vector<(long long)> Bx)
-    csctocoo(int n_row, int n_col, int Ap, int Ai, float Ax, std::vector<(int)> Bi, 
-        std::vector<(int)> Bj, std::vector<(float)> Bx)
-    csctocoo(int n_row, int n_col, int Ap, int Ai, double Ax, std::vector<(int)> Bi, 
-        std::vector<(int)> Bj, std::vector<(double)> Bx)
-    csctocoo(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax, 
-        std::vector<(int)> Bi, std::vector<(int)> Bj, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    csctocoo(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax, 
-        std::vector<(int)> Bi, std::vector<(int)> Bj, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
-    csctocoo(long long n_row, long long n_col, long long Ap, long long Ai, 
-        signed char Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(signed char)> Bx)
-    csctocoo(long long n_row, long long n_col, long long Ap, long long Ai, 
-        unsigned char Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(unsigned char)> Bx)
-    csctocoo(long long n_row, long long n_col, long long Ap, long long Ai, 
-        short Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(short)> Bx)
-    csctocoo(long long n_row, long long n_col, long long Ap, long long Ai, 
-        int Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(int)> Bx)
-    csctocoo(long long n_row, long long n_col, long long Ap, long long Ai, 
-        long long Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(long long)> Bx)
-    csctocoo(long long n_row, long long n_col, long long Ap, long long Ai, 
-        float Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(float)> Bx)
-    csctocoo(long long n_row, long long n_col, long long Ap, long long Ai, 
-        double Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, std::vector<(double)> Bx)
-    csctocoo(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cfloat_wrapper Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    csctocoo(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cdouble_wrapper Ax, std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bj, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
     """
-  return _sparsetools.csctocoo(*args)
+      csctocoo(int n_row, int n_col, int Ap, int Ai, signed char Ax,
+          std::vector<(int)> Bi, std::vector<(int)> Bj,
+          std::vector<(signed char)> Bx)
+      csctocoo(int n_row, int n_col, int Ap, int Ai, unsigned char Ax,
+          std::vector<(int)> Bi, std::vector<(int)> Bj,
+          std::vector<(unsigned char)> Bx)
+      csctocoo(int n_row, int n_col, int Ap, int Ai, short Ax, std::vector<(int)> Bi,
+          std::vector<(int)> Bj, std::vector<(short)> Bx)
+      csctocoo(int n_row, int n_col, int Ap, int Ai, int Ax, std::vector<(int)> Bi,
+          std::vector<(int)> Bj, std::vector<(int)> Bx)
+      csctocoo(int n_row, int n_col, int Ap, int Ai, long long Ax,
+          std::vector<(int)> Bi, std::vector<(int)> Bj,
+          std::vector<(long long)> Bx)
+      csctocoo(int n_row, int n_col, int Ap, int Ai, float Ax, std::vector<(int)> Bi,
+          std::vector<(int)> Bj, std::vector<(float)> Bx)
+      csctocoo(int n_row, int n_col, int Ap, int Ai, double Ax, std::vector<(int)> Bi,
+          std::vector<(int)> Bj, std::vector<(double)> Bx)
+      csctocoo(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax,
+          std::vector<(int)> Bi, std::vector<(int)> Bj,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      csctocoo(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax,
+          std::vector<(int)> Bi, std::vector<(int)> Bj,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      csctocoo(long long n_row, long long n_col, long long Ap, long long Ai,
+          signed char Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(signed char)> Bx)
+      csctocoo(long long n_row, long long n_col, long long Ap, long long Ai,
+          unsigned char Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(unsigned char)> Bx)
+      csctocoo(long long n_row, long long n_col, long long Ap, long long Ai,
+          short Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(short)> Bx)
+      csctocoo(long long n_row, long long n_col, long long Ap, long long Ai,
+          int Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(int)> Bx)
+      csctocoo(long long n_row, long long n_col, long long Ap, long long Ai,
+          long long Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(long long)> Bx)
+      csctocoo(long long n_row, long long n_col, long long Ap, long long Ai,
+          float Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(float)> Bx)
+      csctocoo(long long n_row, long long n_col, long long Ap, long long Ai,
+          double Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj, std::vector<(double)> Bx)
+      csctocoo(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cfloat_wrapper Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      csctocoo(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cdouble_wrapper Ax, std::vector<(long long)> Bi,
+          std::vector<(long long)> Bj,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      """
+    return _sparsetools.csctocoo(*args)
 
 def cootocsr(*args):
-  """
-    cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, signed char Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(signed char)> Bx)
-    cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, unsigned char Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(unsigned char)> Bx)
-    cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, short Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(short)> Bx)
-    cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, int Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(int)> Bx)
-    cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, long long Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(long long)> Bx)
-    cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, float Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(float)> Bx)
-    cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, double Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(double)> Bx)
-    cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, npy_cfloat_wrapper Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, npy_cdouble_wrapper Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
-    cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, signed char Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(signed char)> Bx)
-    cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, unsigned char Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(unsigned char)> Bx)
-    cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, short Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(short)> Bx)
-    cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, int Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(int)> Bx)
-    cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, long long Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(long long)> Bx)
-    cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, float Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(float)> Bx)
-    cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, double Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(double)> Bx)
-    cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, npy_cfloat_wrapper Ax, 
-        std::vector<(long long)> Bp, std::vector<(long long)> Bj, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, npy_cdouble_wrapper Ax, 
-        std::vector<(long long)> Bp, std::vector<(long long)> Bj, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
     """
-  return _sparsetools.cootocsr(*args)
+      cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, signed char Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(signed char)> Bx)
+      cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, unsigned char Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(unsigned char)> Bx)
+      cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, short Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(short)> Bx)
+      cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, int Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(int)> Bx)
+      cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, long long Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(long long)> Bx)
+      cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, float Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(float)> Bx)
+      cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, double Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(double)> Bx)
+      cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, npy_cfloat_wrapper Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      cootocsr(int n_row, int n_col, int NNZ, int Ai, int Aj, npy_cdouble_wrapper Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, signed char Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(signed char)> Bx)
+      cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, unsigned char Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(unsigned char)> Bx)
+      cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, short Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(short)> Bx)
+      cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, int Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(int)> Bx)
+      cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, long long Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(long long)> Bx)
+      cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, float Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(float)> Bx)
+      cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, double Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(double)> Bx)
+      cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, npy_cfloat_wrapper Ax,
+          std::vector<(long long)> Bp, std::vector<(long long)> Bj,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      cootocsr(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, npy_cdouble_wrapper Ax,
+          std::vector<(long long)> Bp, std::vector<(long long)> Bj,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      """
+    return _sparsetools.cootocsr(*args)
 
 def cootocsc(*args):
-  """
-    cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, signed char Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(signed char)> Bx)
-    cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, unsigned char Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(unsigned char)> Bx)
-    cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, short Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(short)> Bx)
-    cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, int Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(int)> Bx)
-    cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, long long Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(long long)> Bx)
-    cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, float Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(float)> Bx)
-    cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, double Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(double)> Bx)
-    cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, npy_cfloat_wrapper Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, npy_cdouble_wrapper Ax, 
-        std::vector<(int)> Bp, std::vector<(int)> Bi, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
-    cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, signed char Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, 
-        std::vector<(signed char)> Bx)
-    cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, unsigned char Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, 
-        std::vector<(unsigned char)> Bx)
-    cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, short Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, 
-        std::vector<(short)> Bx)
-    cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, int Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, 
-        std::vector<(int)> Bx)
-    cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, long long Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, 
-        std::vector<(long long)> Bx)
-    cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, float Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, 
-        std::vector<(float)> Bx)
-    cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, double Ax, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bi, 
-        std::vector<(double)> Bx)
-    cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, npy_cfloat_wrapper Ax, 
-        std::vector<(long long)> Bp, std::vector<(long long)> Bi, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai, 
-        long long Aj, npy_cdouble_wrapper Ax, 
-        std::vector<(long long)> Bp, std::vector<(long long)> Bi, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
     """
-  return _sparsetools.cootocsc(*args)
+      cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, signed char Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(signed char)> Bx)
+      cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, unsigned char Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(unsigned char)> Bx)
+      cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, short Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(short)> Bx)
+      cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, int Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(int)> Bx)
+      cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, long long Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(long long)> Bx)
+      cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, float Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(float)> Bx)
+      cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, double Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(double)> Bx)
+      cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, npy_cfloat_wrapper Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      cootocsc(int n_row, int n_col, int NNZ, int Ai, int Aj, npy_cdouble_wrapper Ax,
+          std::vector<(int)> Bp, std::vector<(int)> Bi,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, signed char Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi,
+          std::vector<(signed char)> Bx)
+      cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, unsigned char Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi,
+          std::vector<(unsigned char)> Bx)
+      cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, short Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi,
+          std::vector<(short)> Bx)
+      cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, int Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi,
+          std::vector<(int)> Bx)
+      cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, long long Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi,
+          std::vector<(long long)> Bx)
+      cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, float Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi,
+          std::vector<(float)> Bx)
+      cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, double Ax, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bi,
+          std::vector<(double)> Bx)
+      cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, npy_cfloat_wrapper Ax,
+          std::vector<(long long)> Bp, std::vector<(long long)> Bi,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      cootocsc(long long n_row, long long n_col, long long NNZ, long long Ai,
+          long long Aj, npy_cdouble_wrapper Ax,
+          std::vector<(long long)> Bp, std::vector<(long long)> Bi,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      """
+    return _sparsetools.cootocsc(*args)
 
 def csrmucsr(*args):
-  """
-    csrmucsr(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        int Bp, int Bj, signed char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(signed char)> Cx)
-    csrmucsr(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        int Bp, int Bj, unsigned char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(unsigned char)> Cx)
-    csrmucsr(int n_row, int n_col, int Ap, int Aj, short Ax, int Bp, 
-        int Bj, short Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(short)> Cx)
-    csrmucsr(int n_row, int n_col, int Ap, int Aj, int Ax, int Bp, 
-        int Bj, int Bx, std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(int)> Cx)
-    csrmucsr(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        int Bp, int Bj, long long Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(long long)> Cx)
-    csrmucsr(int n_row, int n_col, int Ap, int Aj, float Ax, int Bp, 
-        int Bj, float Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(float)> Cx)
-    csrmucsr(int n_row, int n_col, int Ap, int Aj, double Ax, int Bp, 
-        int Bj, double Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(double)> Cx)
-    csrmucsr(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        int Bp, int Bj, npy_cfloat_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csrmucsr(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        int Bp, int Bj, npy_cdouble_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
-    csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, long long Bp, long long Bj, 
-        signed char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(signed char)> Cx)
-    csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, long long Bp, long long Bj, 
-        unsigned char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(unsigned char)> Cx)
-    csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, long long Bp, long long Bj, 
-        short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(short)> Cx)
-    csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, long long Bp, long long Bj, 
-        int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(int)> Cx)
-    csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, long long Bp, long long Bj, 
-        long long Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(long long)> Cx)
-    csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, long long Bp, long long Bj, 
-        float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(float)> Cx)
-    csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, long long Bp, long long Bj, 
-        double Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(double)> Cx)
-    csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, long long Bp, 
-        long long Bj, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, long long Bp, 
-        long long Bj, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
     """
-  return _sparsetools.csrmucsr(*args)
+      csrmucsr(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          int Bp, int Bj, signed char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(signed char)> Cx)
+      csrmucsr(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          int Bp, int Bj, unsigned char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(unsigned char)> Cx)
+      csrmucsr(int n_row, int n_col, int Ap, int Aj, short Ax, int Bp,
+          int Bj, short Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(short)> Cx)
+      csrmucsr(int n_row, int n_col, int Ap, int Aj, int Ax, int Bp,
+          int Bj, int Bx, std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(int)> Cx)
+      csrmucsr(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          int Bp, int Bj, long long Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(long long)> Cx)
+      csrmucsr(int n_row, int n_col, int Ap, int Aj, float Ax, int Bp,
+          int Bj, float Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(float)> Cx)
+      csrmucsr(int n_row, int n_col, int Ap, int Aj, double Ax, int Bp,
+          int Bj, double Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(double)> Cx)
+      csrmucsr(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          int Bp, int Bj, npy_cfloat_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csrmucsr(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          int Bp, int Bj, npy_cdouble_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, long long Bp, long long Bj,
+          signed char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(signed char)> Cx)
+      csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, long long Bp, long long Bj,
+          unsigned char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(unsigned char)> Cx)
+      csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, long long Bp, long long Bj,
+          short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(short)> Cx)
+      csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, long long Bp, long long Bj,
+          int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(int)> Cx)
+      csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, long long Bp, long long Bj,
+          long long Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(long long)> Cx)
+      csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, long long Bp, long long Bj,
+          float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(float)> Cx)
+      csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, long long Bp, long long Bj,
+          double Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(double)> Cx)
+      csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, long long Bp,
+          long long Bj, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csrmucsr(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, long long Bp,
+          long long Bj, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      """
+    return _sparsetools.csrmucsr(*args)
 
 def cscmucsc(*args):
-  """
-    cscmucsc(int n_row, int n_col, int Ap, int Ai, signed char Ax, 
-        int Bp, int Bi, signed char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(signed char)> Cx)
-    cscmucsc(int n_row, int n_col, int Ap, int Ai, unsigned char Ax, 
-        int Bp, int Bi, unsigned char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(unsigned char)> Cx)
-    cscmucsc(int n_row, int n_col, int Ap, int Ai, short Ax, int Bp, 
-        int Bi, short Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(short)> Cx)
-    cscmucsc(int n_row, int n_col, int Ap, int Ai, int Ax, int Bp, 
-        int Bi, int Bx, std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(int)> Cx)
-    cscmucsc(int n_row, int n_col, int Ap, int Ai, long long Ax, 
-        int Bp, int Bi, long long Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(long long)> Cx)
-    cscmucsc(int n_row, int n_col, int Ap, int Ai, float Ax, int Bp, 
-        int Bi, float Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(float)> Cx)
-    cscmucsc(int n_row, int n_col, int Ap, int Ai, double Ax, int Bp, 
-        int Bi, double Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(double)> Cx)
-    cscmucsc(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax, 
-        int Bp, int Bi, npy_cfloat_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    cscmucsc(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax, 
-        int Bp, int Bi, npy_cdouble_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
-    cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        signed char Ax, long long Bp, long long Bi, 
-        signed char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(signed char)> Cx)
-    cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        unsigned char Ax, long long Bp, long long Bi, 
-        unsigned char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(unsigned char)> Cx)
-    cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        short Ax, long long Bp, long long Bi, 
-        short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(short)> Cx)
-    cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        int Ax, long long Bp, long long Bi, 
-        int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(int)> Cx)
-    cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        long long Ax, long long Bp, long long Bi, 
-        long long Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(long long)> Cx)
-    cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        float Ax, long long Bp, long long Bi, 
-        float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(float)> Cx)
-    cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        double Ax, long long Bp, long long Bi, 
-        double Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(double)> Cx)
-    cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cfloat_wrapper Ax, long long Bp, 
-        long long Bi, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cdouble_wrapper Ax, long long Bp, 
-        long long Bi, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
     """
-  return _sparsetools.cscmucsc(*args)
+      cscmucsc(int n_row, int n_col, int Ap, int Ai, signed char Ax,
+          int Bp, int Bi, signed char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(signed char)> Cx)
+      cscmucsc(int n_row, int n_col, int Ap, int Ai, unsigned char Ax,
+          int Bp, int Bi, unsigned char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(unsigned char)> Cx)
+      cscmucsc(int n_row, int n_col, int Ap, int Ai, short Ax, int Bp,
+          int Bi, short Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(short)> Cx)
+      cscmucsc(int n_row, int n_col, int Ap, int Ai, int Ax, int Bp,
+          int Bi, int Bx, std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(int)> Cx)
+      cscmucsc(int n_row, int n_col, int Ap, int Ai, long long Ax,
+          int Bp, int Bi, long long Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(long long)> Cx)
+      cscmucsc(int n_row, int n_col, int Ap, int Ai, float Ax, int Bp,
+          int Bi, float Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(float)> Cx)
+      cscmucsc(int n_row, int n_col, int Ap, int Ai, double Ax, int Bp,
+          int Bi, double Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(double)> Cx)
+      cscmucsc(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax,
+          int Bp, int Bi, npy_cfloat_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      cscmucsc(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax,
+          int Bp, int Bi, npy_cdouble_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai,
+          signed char Ax, long long Bp, long long Bi,
+          signed char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(signed char)> Cx)
+      cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai,
+          unsigned char Ax, long long Bp, long long Bi,
+          unsigned char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(unsigned char)> Cx)
+      cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai,
+          short Ax, long long Bp, long long Bi,
+          short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(short)> Cx)
+      cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai,
+          int Ax, long long Bp, long long Bi,
+          int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(int)> Cx)
+      cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai,
+          long long Ax, long long Bp, long long Bi,
+          long long Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(long long)> Cx)
+      cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai,
+          float Ax, long long Bp, long long Bi,
+          float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(float)> Cx)
+      cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai,
+          double Ax, long long Bp, long long Bi,
+          double Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(double)> Cx)
+      cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cfloat_wrapper Ax, long long Bp,
+          long long Bi, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      cscmucsc(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cdouble_wrapper Ax, long long Bp,
+          long long Bi, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      """
+    return _sparsetools.cscmucsc(*args)
 
 def csrmux(*args):
-  """
-    csrmux(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        signed char Xx, std::vector<(signed char)> Yx)
-    csrmux(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        unsigned char Xx, std::vector<(unsigned char)> Yx)
-    csrmux(int n_row, int n_col, int Ap, int Aj, short Ax, short Xx, 
-        std::vector<(short)> Yx)
-    csrmux(int n_row, int n_col, int Ap, int Aj, int Ax, int Xx, 
-        std::vector<(int)> Yx)
-    csrmux(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        long long Xx, std::vector<(long long)> Yx)
-    csrmux(int n_row, int n_col, int Ap, int Aj, float Ax, float Xx, 
-        std::vector<(float)> Yx)
-    csrmux(int n_row, int n_col, int Ap, int Aj, double Ax, double Xx, 
-        std::vector<(double)> Yx)
-    csrmux(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        npy_cfloat_wrapper Xx, std::vector<(npy_cfloat_wrapper)> Yx)
-    csrmux(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        npy_cdouble_wrapper Xx, std::vector<(npy_cdouble_wrapper)> Yx)
-    csrmux(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, signed char Xx, std::vector<(signed char)> Yx)
-    csrmux(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, unsigned char Xx, 
-        std::vector<(unsigned char)> Yx)
-    csrmux(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, short Xx, std::vector<(short)> Yx)
-    csrmux(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, int Xx, std::vector<(int)> Yx)
-    csrmux(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, long long Xx, std::vector<(long long)> Yx)
-    csrmux(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, float Xx, std::vector<(float)> Yx)
-    csrmux(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, double Xx, std::vector<(double)> Yx)
-    csrmux(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, npy_cfloat_wrapper Xx, 
-        std::vector<(npy_cfloat_wrapper)> Yx)
-    csrmux(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, npy_cdouble_wrapper Xx, 
-        std::vector<(npy_cdouble_wrapper)> Yx)
     """
-  return _sparsetools.csrmux(*args)
+      csrmux(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          signed char Xx, std::vector<(signed char)> Yx)
+      csrmux(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          unsigned char Xx, std::vector<(unsigned char)> Yx)
+      csrmux(int n_row, int n_col, int Ap, int Aj, short Ax, short Xx,
+          std::vector<(short)> Yx)
+      csrmux(int n_row, int n_col, int Ap, int Aj, int Ax, int Xx,
+          std::vector<(int)> Yx)
+      csrmux(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          long long Xx, std::vector<(long long)> Yx)
+      csrmux(int n_row, int n_col, int Ap, int Aj, float Ax, float Xx,
+          std::vector<(float)> Yx)
+      csrmux(int n_row, int n_col, int Ap, int Aj, double Ax, double Xx,
+          std::vector<(double)> Yx)
+      csrmux(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          npy_cfloat_wrapper Xx, std::vector<(npy_cfloat_wrapper)> Yx)
+      csrmux(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          npy_cdouble_wrapper Xx, std::vector<(npy_cdouble_wrapper)> Yx)
+      csrmux(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, signed char Xx, std::vector<(signed char)> Yx)
+      csrmux(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, unsigned char Xx,
+          std::vector<(unsigned char)> Yx)
+      csrmux(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, short Xx, std::vector<(short)> Yx)
+      csrmux(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, int Xx, std::vector<(int)> Yx)
+      csrmux(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, long long Xx, std::vector<(long long)> Yx)
+      csrmux(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, float Xx, std::vector<(float)> Yx)
+      csrmux(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, double Xx, std::vector<(double)> Yx)
+      csrmux(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, npy_cfloat_wrapper Xx,
+          std::vector<(npy_cfloat_wrapper)> Yx)
+      csrmux(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, npy_cdouble_wrapper Xx,
+          std::vector<(npy_cdouble_wrapper)> Yx)
+      """
+    return _sparsetools.csrmux(*args)
 
 def cscmux(*args):
-  """
-    cscmux(int n_row, int n_col, int Ap, int Ai, signed char Ax, 
-        signed char Xx, std::vector<(signed char)> Yx)
-    cscmux(int n_row, int n_col, int Ap, int Ai, unsigned char Ax, 
-        unsigned char Xx, std::vector<(unsigned char)> Yx)
-    cscmux(int n_row, int n_col, int Ap, int Ai, short Ax, short Xx, 
-        std::vector<(short)> Yx)
-    cscmux(int n_row, int n_col, int Ap, int Ai, int Ax, int Xx, 
-        std::vector<(int)> Yx)
-    cscmux(int n_row, int n_col, int Ap, int Ai, long long Ax, 
-        long long Xx, std::vector<(long long)> Yx)
-    cscmux(int n_row, int n_col, int Ap, int Ai, float Ax, float Xx, 
-        std::vector<(float)> Yx)
-    cscmux(int n_row, int n_col, int Ap, int Ai, double Ax, double Xx, 
-        std::vector<(double)> Yx)
-    cscmux(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax, 
-        npy_cfloat_wrapper Xx, std::vector<(npy_cfloat_wrapper)> Yx)
-    cscmux(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax, 
-        npy_cdouble_wrapper Xx, std::vector<(npy_cdouble_wrapper)> Yx)
-    cscmux(long long n_row, long long n_col, long long Ap, long long Ai, 
-        signed char Ax, signed char Xx, std::vector<(signed char)> Yx)
-    cscmux(long long n_row, long long n_col, long long Ap, long long Ai, 
-        unsigned char Ax, unsigned char Xx, 
-        std::vector<(unsigned char)> Yx)
-    cscmux(long long n_row, long long n_col, long long Ap, long long Ai, 
-        short Ax, short Xx, std::vector<(short)> Yx)
-    cscmux(long long n_row, long long n_col, long long Ap, long long Ai, 
-        int Ax, int Xx, std::vector<(int)> Yx)
-    cscmux(long long n_row, long long n_col, long long Ap, long long Ai, 
-        long long Ax, long long Xx, std::vector<(long long)> Yx)
-    cscmux(long long n_row, long long n_col, long long Ap, long long Ai, 
-        float Ax, float Xx, std::vector<(float)> Yx)
-    cscmux(long long n_row, long long n_col, long long Ap, long long Ai, 
-        double Ax, double Xx, std::vector<(double)> Yx)
-    cscmux(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cfloat_wrapper Ax, npy_cfloat_wrapper Xx, 
-        std::vector<(npy_cfloat_wrapper)> Yx)
-    cscmux(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cdouble_wrapper Ax, npy_cdouble_wrapper Xx, 
-        std::vector<(npy_cdouble_wrapper)> Yx)
     """
-  return _sparsetools.cscmux(*args)
+      cscmux(int n_row, int n_col, int Ap, int Ai, signed char Ax,
+          signed char Xx, std::vector<(signed char)> Yx)
+      cscmux(int n_row, int n_col, int Ap, int Ai, unsigned char Ax,
+          unsigned char Xx, std::vector<(unsigned char)> Yx)
+      cscmux(int n_row, int n_col, int Ap, int Ai, short Ax, short Xx,
+          std::vector<(short)> Yx)
+      cscmux(int n_row, int n_col, int Ap, int Ai, int Ax, int Xx,
+          std::vector<(int)> Yx)
+      cscmux(int n_row, int n_col, int Ap, int Ai, long long Ax,
+          long long Xx, std::vector<(long long)> Yx)
+      cscmux(int n_row, int n_col, int Ap, int Ai, float Ax, float Xx,
+          std::vector<(float)> Yx)
+      cscmux(int n_row, int n_col, int Ap, int Ai, double Ax, double Xx,
+          std::vector<(double)> Yx)
+      cscmux(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax,
+          npy_cfloat_wrapper Xx, std::vector<(npy_cfloat_wrapper)> Yx)
+      cscmux(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax,
+          npy_cdouble_wrapper Xx, std::vector<(npy_cdouble_wrapper)> Yx)
+      cscmux(long long n_row, long long n_col, long long Ap, long long Ai,
+          signed char Ax, signed char Xx, std::vector<(signed char)> Yx)
+      cscmux(long long n_row, long long n_col, long long Ap, long long Ai,
+          unsigned char Ax, unsigned char Xx,
+          std::vector<(unsigned char)> Yx)
+      cscmux(long long n_row, long long n_col, long long Ap, long long Ai,
+          short Ax, short Xx, std::vector<(short)> Yx)
+      cscmux(long long n_row, long long n_col, long long Ap, long long Ai,
+          int Ax, int Xx, std::vector<(int)> Yx)
+      cscmux(long long n_row, long long n_col, long long Ap, long long Ai,
+          long long Ax, long long Xx, std::vector<(long long)> Yx)
+      cscmux(long long n_row, long long n_col, long long Ap, long long Ai,
+          float Ax, float Xx, std::vector<(float)> Yx)
+      cscmux(long long n_row, long long n_col, long long Ap, long long Ai,
+          double Ax, double Xx, std::vector<(double)> Yx)
+      cscmux(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cfloat_wrapper Ax, npy_cfloat_wrapper Xx,
+          std::vector<(npy_cfloat_wrapper)> Yx)
+      cscmux(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cdouble_wrapper Ax, npy_cdouble_wrapper Xx,
+          std::vector<(npy_cdouble_wrapper)> Yx)
+      """
+    return _sparsetools.cscmux(*args)
 
 def csr_elmul_csr(*args):
-  """
-    csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        int Bp, int Bj, signed char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(signed char)> Cx)
-    csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        int Bp, int Bj, unsigned char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(unsigned char)> Cx)
-    csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, short Ax, int Bp, 
-        int Bj, short Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(short)> Cx)
-    csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, int Ax, int Bp, 
-        int Bj, int Bx, std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(int)> Cx)
-    csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        int Bp, int Bj, long long Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(long long)> Cx)
-    csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, float Ax, int Bp, 
-        int Bj, float Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(float)> Cx)
-    csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, double Ax, int Bp, 
-        int Bj, double Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(double)> Cx)
-    csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        int Bp, int Bj, npy_cfloat_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        int Bp, int Bj, npy_cdouble_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
-    csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, long long Bp, long long Bj, 
-        signed char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(signed char)> Cx)
-    csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, long long Bp, long long Bj, 
-        unsigned char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(unsigned char)> Cx)
-    csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, long long Bp, long long Bj, 
-        short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(short)> Cx)
-    csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, long long Bp, long long Bj, 
-        int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(int)> Cx)
-    csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, long long Bp, long long Bj, 
-        long long Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(long long)> Cx)
-    csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, long long Bp, long long Bj, 
-        float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(float)> Cx)
-    csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, long long Bp, long long Bj, 
-        double Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(double)> Cx)
-    csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, long long Bp, 
-        long long Bj, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, long long Bp, 
-        long long Bj, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
     """
-  return _sparsetools.csr_elmul_csr(*args)
+      csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          int Bp, int Bj, signed char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(signed char)> Cx)
+      csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          int Bp, int Bj, unsigned char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(unsigned char)> Cx)
+      csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, short Ax, int Bp,
+          int Bj, short Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(short)> Cx)
+      csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, int Ax, int Bp,
+          int Bj, int Bx, std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(int)> Cx)
+      csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          int Bp, int Bj, long long Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(long long)> Cx)
+      csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, float Ax, int Bp,
+          int Bj, float Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(float)> Cx)
+      csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, double Ax, int Bp,
+          int Bj, double Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(double)> Cx)
+      csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          int Bp, int Bj, npy_cfloat_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csr_elmul_csr(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          int Bp, int Bj, npy_cdouble_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, long long Bp, long long Bj,
+          signed char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(signed char)> Cx)
+      csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, long long Bp, long long Bj,
+          unsigned char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(unsigned char)> Cx)
+      csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, long long Bp, long long Bj,
+          short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(short)> Cx)
+      csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, long long Bp, long long Bj,
+          int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(int)> Cx)
+      csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, long long Bp, long long Bj,
+          long long Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(long long)> Cx)
+      csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, long long Bp, long long Bj,
+          float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(float)> Cx)
+      csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, long long Bp, long long Bj,
+          double Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(double)> Cx)
+      csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, long long Bp,
+          long long Bj, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csr_elmul_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, long long Bp,
+          long long Bj, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      """
+    return _sparsetools.csr_elmul_csr(*args)
 
 def csr_eldiv_csr(*args):
-  """
-    csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        int Bp, int Bj, signed char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(signed char)> Cx)
-    csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        int Bp, int Bj, unsigned char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(unsigned char)> Cx)
-    csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, short Ax, int Bp, 
-        int Bj, short Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(short)> Cx)
-    csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, int Ax, int Bp, 
-        int Bj, int Bx, std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(int)> Cx)
-    csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        int Bp, int Bj, long long Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(long long)> Cx)
-    csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, float Ax, int Bp, 
-        int Bj, float Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(float)> Cx)
-    csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, double Ax, int Bp, 
-        int Bj, double Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(double)> Cx)
-    csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        int Bp, int Bj, npy_cfloat_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        int Bp, int Bj, npy_cdouble_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
-    csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, long long Bp, long long Bj, 
-        signed char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(signed char)> Cx)
-    csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, long long Bp, long long Bj, 
-        unsigned char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(unsigned char)> Cx)
-    csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, long long Bp, long long Bj, 
-        short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(short)> Cx)
-    csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, long long Bp, long long Bj, 
-        int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(int)> Cx)
-    csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, long long Bp, long long Bj, 
-        long long Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(long long)> Cx)
-    csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, long long Bp, long long Bj, 
-        float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(float)> Cx)
-    csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, long long Bp, long long Bj, 
-        double Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(double)> Cx)
-    csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, long long Bp, 
-        long long Bj, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, long long Bp, 
-        long long Bj, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
     """
-  return _sparsetools.csr_eldiv_csr(*args)
+      csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          int Bp, int Bj, signed char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(signed char)> Cx)
+      csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          int Bp, int Bj, unsigned char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(unsigned char)> Cx)
+      csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, short Ax, int Bp,
+          int Bj, short Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(short)> Cx)
+      csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, int Ax, int Bp,
+          int Bj, int Bx, std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(int)> Cx)
+      csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          int Bp, int Bj, long long Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(long long)> Cx)
+      csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, float Ax, int Bp,
+          int Bj, float Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(float)> Cx)
+      csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, double Ax, int Bp,
+          int Bj, double Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(double)> Cx)
+      csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          int Bp, int Bj, npy_cfloat_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csr_eldiv_csr(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          int Bp, int Bj, npy_cdouble_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, long long Bp, long long Bj,
+          signed char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(signed char)> Cx)
+      csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, long long Bp, long long Bj,
+          unsigned char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(unsigned char)> Cx)
+      csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, long long Bp, long long Bj,
+          short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(short)> Cx)
+      csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, long long Bp, long long Bj,
+          int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(int)> Cx)
+      csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, long long Bp, long long Bj,
+          long long Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(long long)> Cx)
+      csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, long long Bp, long long Bj,
+          float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(float)> Cx)
+      csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, long long Bp, long long Bj,
+          double Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(double)> Cx)
+      csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, long long Bp,
+          long long Bj, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csr_eldiv_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, long long Bp,
+          long long Bj, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      """
+    return _sparsetools.csr_eldiv_csr(*args)
 
 def csr_plus_csr(*args):
-  """
-    csr_plus_csr(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        int Bp, int Bj, signed char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(signed char)> Cx)
-    csr_plus_csr(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        int Bp, int Bj, unsigned char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(unsigned char)> Cx)
-    csr_plus_csr(int n_row, int n_col, int Ap, int Aj, short Ax, int Bp, 
-        int Bj, short Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(short)> Cx)
-    csr_plus_csr(int n_row, int n_col, int Ap, int Aj, int Ax, int Bp, 
-        int Bj, int Bx, std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(int)> Cx)
-    csr_plus_csr(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        int Bp, int Bj, long long Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(long long)> Cx)
-    csr_plus_csr(int n_row, int n_col, int Ap, int Aj, float Ax, int Bp, 
-        int Bj, float Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(float)> Cx)
-    csr_plus_csr(int n_row, int n_col, int Ap, int Aj, double Ax, int Bp, 
-        int Bj, double Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(double)> Cx)
-    csr_plus_csr(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        int Bp, int Bj, npy_cfloat_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csr_plus_csr(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        int Bp, int Bj, npy_cdouble_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
-    csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, long long Bp, long long Bj, 
-        signed char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(signed char)> Cx)
-    csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, long long Bp, long long Bj, 
-        unsigned char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(unsigned char)> Cx)
-    csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, long long Bp, long long Bj, 
-        short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(short)> Cx)
-    csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, long long Bp, long long Bj, 
-        int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(int)> Cx)
-    csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, long long Bp, long long Bj, 
-        long long Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(long long)> Cx)
-    csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, long long Bp, long long Bj, 
-        float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(float)> Cx)
-    csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, long long Bp, long long Bj, 
-        double Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(double)> Cx)
-    csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, long long Bp, 
-        long long Bj, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, long long Bp, 
-        long long Bj, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
     """
-  return _sparsetools.csr_plus_csr(*args)
+      csr_plus_csr(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          int Bp, int Bj, signed char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(signed char)> Cx)
+      csr_plus_csr(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          int Bp, int Bj, unsigned char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(unsigned char)> Cx)
+      csr_plus_csr(int n_row, int n_col, int Ap, int Aj, short Ax, int Bp,
+          int Bj, short Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(short)> Cx)
+      csr_plus_csr(int n_row, int n_col, int Ap, int Aj, int Ax, int Bp,
+          int Bj, int Bx, std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(int)> Cx)
+      csr_plus_csr(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          int Bp, int Bj, long long Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(long long)> Cx)
+      csr_plus_csr(int n_row, int n_col, int Ap, int Aj, float Ax, int Bp,
+          int Bj, float Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(float)> Cx)
+      csr_plus_csr(int n_row, int n_col, int Ap, int Aj, double Ax, int Bp,
+          int Bj, double Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(double)> Cx)
+      csr_plus_csr(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          int Bp, int Bj, npy_cfloat_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csr_plus_csr(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          int Bp, int Bj, npy_cdouble_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, long long Bp, long long Bj,
+          signed char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(signed char)> Cx)
+      csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, long long Bp, long long Bj,
+          unsigned char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(unsigned char)> Cx)
+      csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, long long Bp, long long Bj,
+          short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(short)> Cx)
+      csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, long long Bp, long long Bj,
+          int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(int)> Cx)
+      csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, long long Bp, long long Bj,
+          long long Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(long long)> Cx)
+      csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, long long Bp, long long Bj,
+          float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(float)> Cx)
+      csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, long long Bp, long long Bj,
+          double Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(double)> Cx)
+      csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, long long Bp,
+          long long Bj, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csr_plus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, long long Bp,
+          long long Bj, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      """
+    return _sparsetools.csr_plus_csr(*args)
 
 def csr_minus_csr(*args):
-  """
-    csr_minus_csr(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        int Bp, int Bj, signed char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(signed char)> Cx)
-    csr_minus_csr(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        int Bp, int Bj, unsigned char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(unsigned char)> Cx)
-    csr_minus_csr(int n_row, int n_col, int Ap, int Aj, short Ax, int Bp, 
-        int Bj, short Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(short)> Cx)
-    csr_minus_csr(int n_row, int n_col, int Ap, int Aj, int Ax, int Bp, 
-        int Bj, int Bx, std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(int)> Cx)
-    csr_minus_csr(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        int Bp, int Bj, long long Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(long long)> Cx)
-    csr_minus_csr(int n_row, int n_col, int Ap, int Aj, float Ax, int Bp, 
-        int Bj, float Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(float)> Cx)
-    csr_minus_csr(int n_row, int n_col, int Ap, int Aj, double Ax, int Bp, 
-        int Bj, double Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Cj, std::vector<(double)> Cx)
-    csr_minus_csr(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        int Bp, int Bj, npy_cfloat_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csr_minus_csr(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        int Bp, int Bj, npy_cdouble_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Cj, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
-    csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, long long Bp, long long Bj, 
-        signed char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(signed char)> Cx)
-    csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, long long Bp, long long Bj, 
-        unsigned char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(unsigned char)> Cx)
-    csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, long long Bp, long long Bj, 
-        short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(short)> Cx)
-    csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, long long Bp, long long Bj, 
-        int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(int)> Cx)
-    csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, long long Bp, long long Bj, 
-        long long Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(long long)> Cx)
-    csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, long long Bp, long long Bj, 
-        float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj, 
-        std::vector<(float)> Cx)
-    csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, long long Bp, long long Bj, 
-        double Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, std::vector<(double)> Cx)
-    csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, long long Bp, 
-        long long Bj, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, long long Bp, 
-        long long Bj, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Cj, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
     """
-  return _sparsetools.csr_minus_csr(*args)
+      csr_minus_csr(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          int Bp, int Bj, signed char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(signed char)> Cx)
+      csr_minus_csr(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          int Bp, int Bj, unsigned char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(unsigned char)> Cx)
+      csr_minus_csr(int n_row, int n_col, int Ap, int Aj, short Ax, int Bp,
+          int Bj, short Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(short)> Cx)
+      csr_minus_csr(int n_row, int n_col, int Ap, int Aj, int Ax, int Bp,
+          int Bj, int Bx, std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(int)> Cx)
+      csr_minus_csr(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          int Bp, int Bj, long long Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(long long)> Cx)
+      csr_minus_csr(int n_row, int n_col, int Ap, int Aj, float Ax, int Bp,
+          int Bj, float Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(float)> Cx)
+      csr_minus_csr(int n_row, int n_col, int Ap, int Aj, double Ax, int Bp,
+          int Bj, double Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Cj, std::vector<(double)> Cx)
+      csr_minus_csr(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          int Bp, int Bj, npy_cfloat_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csr_minus_csr(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          int Bp, int Bj, npy_cdouble_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Cj,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, long long Bp, long long Bj,
+          signed char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(signed char)> Cx)
+      csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, long long Bp, long long Bj,
+          unsigned char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(unsigned char)> Cx)
+      csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, long long Bp, long long Bj,
+          short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(short)> Cx)
+      csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, long long Bp, long long Bj,
+          int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(int)> Cx)
+      csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, long long Bp, long long Bj,
+          long long Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(long long)> Cx)
+      csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, long long Bp, long long Bj,
+          float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Cj,
+          std::vector<(float)> Cx)
+      csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, long long Bp, long long Bj,
+          double Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj, std::vector<(double)> Cx)
+      csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, long long Bp,
+          long long Bj, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csr_minus_csr(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, long long Bp,
+          long long Bj, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Cj,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      """
+    return _sparsetools.csr_minus_csr(*args)
 
 def csc_elmul_csc(*args):
-  """
-    csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, signed char Ax, 
-        int Bp, int Bi, signed char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(signed char)> Cx)
-    csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, unsigned char Ax, 
-        int Bp, int Bi, unsigned char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(unsigned char)> Cx)
-    csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, short Ax, int Bp, 
-        int Bi, short Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(short)> Cx)
-    csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, int Ax, int Bp, 
-        int Bi, int Bx, std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(int)> Cx)
-    csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, long long Ax, 
-        int Bp, int Bi, long long Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(long long)> Cx)
-    csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, float Ax, int Bp, 
-        int Bi, float Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(float)> Cx)
-    csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, double Ax, int Bp, 
-        int Bi, double Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(double)> Cx)
-    csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax, 
-        int Bp, int Bi, npy_cfloat_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax, 
-        int Bp, int Bi, npy_cdouble_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
-    csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        signed char Ax, long long Bp, long long Bi, 
-        signed char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(signed char)> Cx)
-    csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        unsigned char Ax, long long Bp, long long Bi, 
-        unsigned char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(unsigned char)> Cx)
-    csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        short Ax, long long Bp, long long Bi, 
-        short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(short)> Cx)
-    csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        int Ax, long long Bp, long long Bi, 
-        int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(int)> Cx)
-    csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        long long Ax, long long Bp, long long Bi, 
-        long long Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(long long)> Cx)
-    csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        float Ax, long long Bp, long long Bi, 
-        float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(float)> Cx)
-    csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        double Ax, long long Bp, long long Bi, 
-        double Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(double)> Cx)
-    csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cfloat_wrapper Ax, long long Bp, 
-        long long Bi, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cdouble_wrapper Ax, long long Bp, 
-        long long Bi, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
     """
-  return _sparsetools.csc_elmul_csc(*args)
+      csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, signed char Ax,
+          int Bp, int Bi, signed char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(signed char)> Cx)
+      csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, unsigned char Ax,
+          int Bp, int Bi, unsigned char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(unsigned char)> Cx)
+      csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, short Ax, int Bp,
+          int Bi, short Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(short)> Cx)
+      csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, int Ax, int Bp,
+          int Bi, int Bx, std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(int)> Cx)
+      csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, long long Ax,
+          int Bp, int Bi, long long Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(long long)> Cx)
+      csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, float Ax, int Bp,
+          int Bi, float Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(float)> Cx)
+      csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, double Ax, int Bp,
+          int Bi, double Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(double)> Cx)
+      csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax,
+          int Bp, int Bi, npy_cfloat_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csc_elmul_csc(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax,
+          int Bp, int Bi, npy_cdouble_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          signed char Ax, long long Bp, long long Bi,
+          signed char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(signed char)> Cx)
+      csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          unsigned char Ax, long long Bp, long long Bi,
+          unsigned char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(unsigned char)> Cx)
+      csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          short Ax, long long Bp, long long Bi,
+          short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(short)> Cx)
+      csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          int Ax, long long Bp, long long Bi,
+          int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(int)> Cx)
+      csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          long long Ax, long long Bp, long long Bi,
+          long long Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(long long)> Cx)
+      csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          float Ax, long long Bp, long long Bi,
+          float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(float)> Cx)
+      csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          double Ax, long long Bp, long long Bi,
+          double Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(double)> Cx)
+      csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cfloat_wrapper Ax, long long Bp,
+          long long Bi, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csc_elmul_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cdouble_wrapper Ax, long long Bp,
+          long long Bi, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      """
+    return _sparsetools.csc_elmul_csc(*args)
 
 def csc_eldiv_csc(*args):
-  """
-    csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, signed char Ax, 
-        int Bp, int Bi, signed char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(signed char)> Cx)
-    csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, unsigned char Ax, 
-        int Bp, int Bi, unsigned char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(unsigned char)> Cx)
-    csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, short Ax, int Bp, 
-        int Bi, short Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(short)> Cx)
-    csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, int Ax, int Bp, 
-        int Bi, int Bx, std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(int)> Cx)
-    csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, long long Ax, 
-        int Bp, int Bi, long long Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(long long)> Cx)
-    csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, float Ax, int Bp, 
-        int Bi, float Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(float)> Cx)
-    csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, double Ax, int Bp, 
-        int Bi, double Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(double)> Cx)
-    csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax, 
-        int Bp, int Bi, npy_cfloat_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax, 
-        int Bp, int Bi, npy_cdouble_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
-    csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        signed char Ax, long long Bp, long long Bi, 
-        signed char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(signed char)> Cx)
-    csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        unsigned char Ax, long long Bp, long long Bi, 
-        unsigned char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(unsigned char)> Cx)
-    csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        short Ax, long long Bp, long long Bi, 
-        short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(short)> Cx)
-    csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        int Ax, long long Bp, long long Bi, 
-        int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(int)> Cx)
-    csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        long long Ax, long long Bp, long long Bi, 
-        long long Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(long long)> Cx)
-    csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        float Ax, long long Bp, long long Bi, 
-        float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(float)> Cx)
-    csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        double Ax, long long Bp, long long Bi, 
-        double Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(double)> Cx)
-    csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cfloat_wrapper Ax, long long Bp, 
-        long long Bi, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cdouble_wrapper Ax, long long Bp, 
-        long long Bi, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
     """
-  return _sparsetools.csc_eldiv_csc(*args)
+      csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, signed char Ax,
+          int Bp, int Bi, signed char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(signed char)> Cx)
+      csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, unsigned char Ax,
+          int Bp, int Bi, unsigned char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(unsigned char)> Cx)
+      csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, short Ax, int Bp,
+          int Bi, short Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(short)> Cx)
+      csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, int Ax, int Bp,
+          int Bi, int Bx, std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(int)> Cx)
+      csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, long long Ax,
+          int Bp, int Bi, long long Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(long long)> Cx)
+      csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, float Ax, int Bp,
+          int Bi, float Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(float)> Cx)
+      csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, double Ax, int Bp,
+          int Bi, double Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(double)> Cx)
+      csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax,
+          int Bp, int Bi, npy_cfloat_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csc_eldiv_csc(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax,
+          int Bp, int Bi, npy_cdouble_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          signed char Ax, long long Bp, long long Bi,
+          signed char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(signed char)> Cx)
+      csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          unsigned char Ax, long long Bp, long long Bi,
+          unsigned char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(unsigned char)> Cx)
+      csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          short Ax, long long Bp, long long Bi,
+          short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(short)> Cx)
+      csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          int Ax, long long Bp, long long Bi,
+          int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(int)> Cx)
+      csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          long long Ax, long long Bp, long long Bi,
+          long long Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(long long)> Cx)
+      csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          float Ax, long long Bp, long long Bi,
+          float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(float)> Cx)
+      csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          double Ax, long long Bp, long long Bi,
+          double Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(double)> Cx)
+      csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cfloat_wrapper Ax, long long Bp,
+          long long Bi, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csc_eldiv_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cdouble_wrapper Ax, long long Bp,
+          long long Bi, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      """
+    return _sparsetools.csc_eldiv_csc(*args)
 
 def csc_plus_csc(*args):
-  """
-    csc_plus_csc(int n_row, int n_col, int Ap, int Ai, signed char Ax, 
-        int Bp, int Bi, signed char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(signed char)> Cx)
-    csc_plus_csc(int n_row, int n_col, int Ap, int Ai, unsigned char Ax, 
-        int Bp, int Bi, unsigned char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(unsigned char)> Cx)
-    csc_plus_csc(int n_row, int n_col, int Ap, int Ai, short Ax, int Bp, 
-        int Bi, short Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(short)> Cx)
-    csc_plus_csc(int n_row, int n_col, int Ap, int Ai, int Ax, int Bp, 
-        int Bi, int Bx, std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(int)> Cx)
-    csc_plus_csc(int n_row, int n_col, int Ap, int Ai, long long Ax, 
-        int Bp, int Bi, long long Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(long long)> Cx)
-    csc_plus_csc(int n_row, int n_col, int Ap, int Ai, float Ax, int Bp, 
-        int Bi, float Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(float)> Cx)
-    csc_plus_csc(int n_row, int n_col, int Ap, int Ai, double Ax, int Bp, 
-        int Bi, double Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(double)> Cx)
-    csc_plus_csc(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax, 
-        int Bp, int Bi, npy_cfloat_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csc_plus_csc(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax, 
-        int Bp, int Bi, npy_cdouble_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
-    csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        signed char Ax, long long Bp, long long Bi, 
-        signed char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(signed char)> Cx)
-    csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        unsigned char Ax, long long Bp, long long Bi, 
-        unsigned char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(unsigned char)> Cx)
-    csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        short Ax, long long Bp, long long Bi, 
-        short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(short)> Cx)
-    csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        int Ax, long long Bp, long long Bi, 
-        int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(int)> Cx)
-    csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        long long Ax, long long Bp, long long Bi, 
-        long long Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(long long)> Cx)
-    csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        float Ax, long long Bp, long long Bi, 
-        float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(float)> Cx)
-    csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        double Ax, long long Bp, long long Bi, 
-        double Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(double)> Cx)
-    csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cfloat_wrapper Ax, long long Bp, 
-        long long Bi, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cdouble_wrapper Ax, long long Bp, 
-        long long Bi, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
     """
-  return _sparsetools.csc_plus_csc(*args)
+      csc_plus_csc(int n_row, int n_col, int Ap, int Ai, signed char Ax,
+          int Bp, int Bi, signed char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(signed char)> Cx)
+      csc_plus_csc(int n_row, int n_col, int Ap, int Ai, unsigned char Ax,
+          int Bp, int Bi, unsigned char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(unsigned char)> Cx)
+      csc_plus_csc(int n_row, int n_col, int Ap, int Ai, short Ax, int Bp,
+          int Bi, short Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(short)> Cx)
+      csc_plus_csc(int n_row, int n_col, int Ap, int Ai, int Ax, int Bp,
+          int Bi, int Bx, std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(int)> Cx)
+      csc_plus_csc(int n_row, int n_col, int Ap, int Ai, long long Ax,
+          int Bp, int Bi, long long Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(long long)> Cx)
+      csc_plus_csc(int n_row, int n_col, int Ap, int Ai, float Ax, int Bp,
+          int Bi, float Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(float)> Cx)
+      csc_plus_csc(int n_row, int n_col, int Ap, int Ai, double Ax, int Bp,
+          int Bi, double Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(double)> Cx)
+      csc_plus_csc(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax,
+          int Bp, int Bi, npy_cfloat_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csc_plus_csc(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax,
+          int Bp, int Bi, npy_cdouble_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          signed char Ax, long long Bp, long long Bi,
+          signed char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(signed char)> Cx)
+      csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          unsigned char Ax, long long Bp, long long Bi,
+          unsigned char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(unsigned char)> Cx)
+      csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          short Ax, long long Bp, long long Bi,
+          short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(short)> Cx)
+      csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          int Ax, long long Bp, long long Bi,
+          int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(int)> Cx)
+      csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          long long Ax, long long Bp, long long Bi,
+          long long Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(long long)> Cx)
+      csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          float Ax, long long Bp, long long Bi,
+          float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(float)> Cx)
+      csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          double Ax, long long Bp, long long Bi,
+          double Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(double)> Cx)
+      csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cfloat_wrapper Ax, long long Bp,
+          long long Bi, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csc_plus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cdouble_wrapper Ax, long long Bp,
+          long long Bi, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      """
+    return _sparsetools.csc_plus_csc(*args)
 
 def csc_minus_csc(*args):
-  """
-    csc_minus_csc(int n_row, int n_col, int Ap, int Ai, signed char Ax, 
-        int Bp, int Bi, signed char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(signed char)> Cx)
-    csc_minus_csc(int n_row, int n_col, int Ap, int Ai, unsigned char Ax, 
-        int Bp, int Bi, unsigned char Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(unsigned char)> Cx)
-    csc_minus_csc(int n_row, int n_col, int Ap, int Ai, short Ax, int Bp, 
-        int Bi, short Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(short)> Cx)
-    csc_minus_csc(int n_row, int n_col, int Ap, int Ai, int Ax, int Bp, 
-        int Bi, int Bx, std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(int)> Cx)
-    csc_minus_csc(int n_row, int n_col, int Ap, int Ai, long long Ax, 
-        int Bp, int Bi, long long Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(long long)> Cx)
-    csc_minus_csc(int n_row, int n_col, int Ap, int Ai, float Ax, int Bp, 
-        int Bi, float Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(float)> Cx)
-    csc_minus_csc(int n_row, int n_col, int Ap, int Ai, double Ax, int Bp, 
-        int Bi, double Bx, std::vector<(int)> Cp, 
-        std::vector<(int)> Ci, std::vector<(double)> Cx)
-    csc_minus_csc(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax, 
-        int Bp, int Bi, npy_cfloat_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csc_minus_csc(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax, 
-        int Bp, int Bi, npy_cdouble_wrapper Bx, 
-        std::vector<(int)> Cp, std::vector<(int)> Ci, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
-    csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        signed char Ax, long long Bp, long long Bi, 
-        signed char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(signed char)> Cx)
-    csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        unsigned char Ax, long long Bp, long long Bi, 
-        unsigned char Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(unsigned char)> Cx)
-    csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        short Ax, long long Bp, long long Bi, 
-        short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(short)> Cx)
-    csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        int Ax, long long Bp, long long Bi, 
-        int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(int)> Cx)
-    csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        long long Ax, long long Bp, long long Bi, 
-        long long Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(long long)> Cx)
-    csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        float Ax, long long Bp, long long Bi, 
-        float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci, 
-        std::vector<(float)> Cx)
-    csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        double Ax, long long Bp, long long Bi, 
-        double Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, std::vector<(double)> Cx)
-    csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cfloat_wrapper Ax, long long Bp, 
-        long long Bi, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, 
-        std::vector<(npy_cfloat_wrapper)> Cx)
-    csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cdouble_wrapper Ax, long long Bp, 
-        long long Bi, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp, 
-        std::vector<(long long)> Ci, 
-        std::vector<(npy_cdouble_wrapper)> Cx)
     """
-  return _sparsetools.csc_minus_csc(*args)
+      csc_minus_csc(int n_row, int n_col, int Ap, int Ai, signed char Ax,
+          int Bp, int Bi, signed char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(signed char)> Cx)
+      csc_minus_csc(int n_row, int n_col, int Ap, int Ai, unsigned char Ax,
+          int Bp, int Bi, unsigned char Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(unsigned char)> Cx)
+      csc_minus_csc(int n_row, int n_col, int Ap, int Ai, short Ax, int Bp,
+          int Bi, short Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(short)> Cx)
+      csc_minus_csc(int n_row, int n_col, int Ap, int Ai, int Ax, int Bp,
+          int Bi, int Bx, std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(int)> Cx)
+      csc_minus_csc(int n_row, int n_col, int Ap, int Ai, long long Ax,
+          int Bp, int Bi, long long Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(long long)> Cx)
+      csc_minus_csc(int n_row, int n_col, int Ap, int Ai, float Ax, int Bp,
+          int Bi, float Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(float)> Cx)
+      csc_minus_csc(int n_row, int n_col, int Ap, int Ai, double Ax, int Bp,
+          int Bi, double Bx, std::vector<(int)> Cp,
+          std::vector<(int)> Ci, std::vector<(double)> Cx)
+      csc_minus_csc(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax,
+          int Bp, int Bi, npy_cfloat_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csc_minus_csc(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax,
+          int Bp, int Bi, npy_cdouble_wrapper Bx,
+          std::vector<(int)> Cp, std::vector<(int)> Ci,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          signed char Ax, long long Bp, long long Bi,
+          signed char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(signed char)> Cx)
+      csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          unsigned char Ax, long long Bp, long long Bi,
+          unsigned char Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(unsigned char)> Cx)
+      csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          short Ax, long long Bp, long long Bi,
+          short Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(short)> Cx)
+      csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          int Ax, long long Bp, long long Bi,
+          int Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(int)> Cx)
+      csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          long long Ax, long long Bp, long long Bi,
+          long long Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(long long)> Cx)
+      csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          float Ax, long long Bp, long long Bi,
+          float Bx, std::vector<(long long)> Cp, std::vector<(long long)> Ci,
+          std::vector<(float)> Cx)
+      csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          double Ax, long long Bp, long long Bi,
+          double Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci, std::vector<(double)> Cx)
+      csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cfloat_wrapper Ax, long long Bp,
+          long long Bi, npy_cfloat_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci,
+          std::vector<(npy_cfloat_wrapper)> Cx)
+      csc_minus_csc(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cdouble_wrapper Ax, long long Bp,
+          long long Bi, npy_cdouble_wrapper Bx, std::vector<(long long)> Cp,
+          std::vector<(long long)> Ci,
+          std::vector<(npy_cdouble_wrapper)> Cx)
+      """
+    return _sparsetools.csc_minus_csc(*args)
 
 def spdiags(*args):
-  """
-    spdiags(int n_row, int n_col, int n_diag, int offsets, signed char diags, 
-        std::vector<(int)> Ap, std::vector<(int)> Ai, 
-        std::vector<(signed char)> Ax)
-    spdiags(int n_row, int n_col, int n_diag, int offsets, unsigned char diags, 
-        std::vector<(int)> Ap, std::vector<(int)> Ai, 
-        std::vector<(unsigned char)> Ax)
-    spdiags(int n_row, int n_col, int n_diag, int offsets, short diags, 
-        std::vector<(int)> Ap, std::vector<(int)> Ai, 
-        std::vector<(short)> Ax)
-    spdiags(int n_row, int n_col, int n_diag, int offsets, int diags, 
-        std::vector<(int)> Ap, std::vector<(int)> Ai, 
-        std::vector<(int)> Ax)
-    spdiags(int n_row, int n_col, int n_diag, int offsets, long long diags, 
-        std::vector<(int)> Ap, std::vector<(int)> Ai, 
-        std::vector<(long long)> Ax)
-    spdiags(int n_row, int n_col, int n_diag, int offsets, float diags, 
-        std::vector<(int)> Ap, std::vector<(int)> Ai, 
-        std::vector<(float)> Ax)
-    spdiags(int n_row, int n_col, int n_diag, int offsets, double diags, 
-        std::vector<(int)> Ap, std::vector<(int)> Ai, 
-        std::vector<(double)> Ax)
-    spdiags(int n_row, int n_col, int n_diag, int offsets, npy_cfloat_wrapper diags, 
-        std::vector<(int)> Ap, 
-        std::vector<(int)> Ai, std::vector<(npy_cfloat_wrapper)> Ax)
-    spdiags(int n_row, int n_col, int n_diag, int offsets, npy_cdouble_wrapper diags, 
-        std::vector<(int)> Ap, 
-        std::vector<(int)> Ai, std::vector<(npy_cdouble_wrapper)> Ax)
-    spdiags(long long n_row, long long n_col, long long n_diag, 
-        long long offsets, signed char diags, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Ai, 
-        std::vector<(signed char)> Ax)
-    spdiags(long long n_row, long long n_col, long long n_diag, 
-        long long offsets, unsigned char diags, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Ai, 
-        std::vector<(unsigned char)> Ax)
-    spdiags(long long n_row, long long n_col, long long n_diag, 
-        long long offsets, short diags, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Ai, 
-        std::vector<(short)> Ax)
-    spdiags(long long n_row, long long n_col, long long n_diag, 
-        long long offsets, int diags, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Ai, std::vector<(int)> Ax)
-    spdiags(long long n_row, long long n_col, long long n_diag, 
-        long long offsets, long long diags, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Ai, 
-        std::vector<(long long)> Ax)
-    spdiags(long long n_row, long long n_col, long long n_diag, 
-        long long offsets, float diags, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Ai, 
-        std::vector<(float)> Ax)
-    spdiags(long long n_row, long long n_col, long long n_diag, 
-        long long offsets, double diags, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Ai, 
-        std::vector<(double)> Ax)
-    spdiags(long long n_row, long long n_col, long long n_diag, 
-        long long offsets, npy_cfloat_wrapper diags, 
-        std::vector<(long long)> Ap, std::vector<(long long)> Ai, 
-        std::vector<(npy_cfloat_wrapper)> Ax)
-    spdiags(long long n_row, long long n_col, long long n_diag, 
-        long long offsets, npy_cdouble_wrapper diags, 
-        std::vector<(long long)> Ap, std::vector<(long long)> Ai, 
-        std::vector<(npy_cdouble_wrapper)> Ax)
     """
-  return _sparsetools.spdiags(*args)
+      spdiags(int n_row, int n_col, int n_diag, int offsets, signed char diags,
+          std::vector<(int)> Ap, std::vector<(int)> Ai,
+          std::vector<(signed char)> Ax)
+      spdiags(int n_row, int n_col, int n_diag, int offsets, unsigned char diags,
+          std::vector<(int)> Ap, std::vector<(int)> Ai,
+          std::vector<(unsigned char)> Ax)
+      spdiags(int n_row, int n_col, int n_diag, int offsets, short diags,
+          std::vector<(int)> Ap, std::vector<(int)> Ai,
+          std::vector<(short)> Ax)
+      spdiags(int n_row, int n_col, int n_diag, int offsets, int diags,
+          std::vector<(int)> Ap, std::vector<(int)> Ai,
+          std::vector<(int)> Ax)
+      spdiags(int n_row, int n_col, int n_diag, int offsets, long long diags,
+          std::vector<(int)> Ap, std::vector<(int)> Ai,
+          std::vector<(long long)> Ax)
+      spdiags(int n_row, int n_col, int n_diag, int offsets, float diags,
+          std::vector<(int)> Ap, std::vector<(int)> Ai,
+          std::vector<(float)> Ax)
+      spdiags(int n_row, int n_col, int n_diag, int offsets, double diags,
+          std::vector<(int)> Ap, std::vector<(int)> Ai,
+          std::vector<(double)> Ax)
+      spdiags(int n_row, int n_col, int n_diag, int offsets, npy_cfloat_wrapper diags,
+          std::vector<(int)> Ap,
+          std::vector<(int)> Ai, std::vector<(npy_cfloat_wrapper)> Ax)
+      spdiags(int n_row, int n_col, int n_diag, int offsets, npy_cdouble_wrapper diags,
+          std::vector<(int)> Ap,
+          std::vector<(int)> Ai, std::vector<(npy_cdouble_wrapper)> Ax)
+      spdiags(long long n_row, long long n_col, long long n_diag,
+          long long offsets, signed char diags, std::vector<(long long)> Ap,
+          std::vector<(long long)> Ai,
+          std::vector<(signed char)> Ax)
+      spdiags(long long n_row, long long n_col, long long n_diag,
+          long long offsets, unsigned char diags, std::vector<(long long)> Ap,
+          std::vector<(long long)> Ai,
+          std::vector<(unsigned char)> Ax)
+      spdiags(long long n_row, long long n_col, long long n_diag,
+          long long offsets, short diags, std::vector<(long long)> Ap,
+          std::vector<(long long)> Ai,
+          std::vector<(short)> Ax)
+      spdiags(long long n_row, long long n_col, long long n_diag,
+          long long offsets, int diags, std::vector<(long long)> Ap,
+          std::vector<(long long)> Ai, std::vector<(int)> Ax)
+      spdiags(long long n_row, long long n_col, long long n_diag,
+          long long offsets, long long diags, std::vector<(long long)> Ap,
+          std::vector<(long long)> Ai,
+          std::vector<(long long)> Ax)
+      spdiags(long long n_row, long long n_col, long long n_diag,
+          long long offsets, float diags, std::vector<(long long)> Ap,
+          std::vector<(long long)> Ai,
+          std::vector<(float)> Ax)
+      spdiags(long long n_row, long long n_col, long long n_diag,
+          long long offsets, double diags, std::vector<(long long)> Ap,
+          std::vector<(long long)> Ai,
+          std::vector<(double)> Ax)
+      spdiags(long long n_row, long long n_col, long long n_diag,
+          long long offsets, npy_cfloat_wrapper diags,
+          std::vector<(long long)> Ap, std::vector<(long long)> Ai,
+          std::vector<(npy_cfloat_wrapper)> Ax)
+      spdiags(long long n_row, long long n_col, long long n_diag,
+          long long offsets, npy_cdouble_wrapper diags,
+          std::vector<(long long)> Ap, std::vector<(long long)> Ai,
+          std::vector<(npy_cdouble_wrapper)> Ax)
+      """
+    return _sparsetools.spdiags(*args)
 
 def csrtodense(*args):
-  """
-    csrtodense(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        signed char Mx)
-    csrtodense(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        unsigned char Mx)
-    csrtodense(int n_row, int n_col, int Ap, int Aj, short Ax, short Mx)
-    csrtodense(int n_row, int n_col, int Ap, int Aj, int Ax, int Mx)
-    csrtodense(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        long long Mx)
-    csrtodense(int n_row, int n_col, int Ap, int Aj, float Ax, float Mx)
-    csrtodense(int n_row, int n_col, int Ap, int Aj, double Ax, double Mx)
-    csrtodense(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        npy_cfloat_wrapper Mx)
-    csrtodense(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        npy_cdouble_wrapper Mx)
-    csrtodense(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, signed char Mx)
-    csrtodense(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, unsigned char Mx)
-    csrtodense(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, short Mx)
-    csrtodense(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, int Mx)
-    csrtodense(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, long long Mx)
-    csrtodense(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, float Mx)
-    csrtodense(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, double Mx)
-    csrtodense(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, npy_cfloat_wrapper Mx)
-    csrtodense(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, npy_cdouble_wrapper Mx)
     """
-  return _sparsetools.csrtodense(*args)
+      csrtodense(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          signed char Mx)
+      csrtodense(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          unsigned char Mx)
+      csrtodense(int n_row, int n_col, int Ap, int Aj, short Ax, short Mx)
+      csrtodense(int n_row, int n_col, int Ap, int Aj, int Ax, int Mx)
+      csrtodense(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          long long Mx)
+      csrtodense(int n_row, int n_col, int Ap, int Aj, float Ax, float Mx)
+      csrtodense(int n_row, int n_col, int Ap, int Aj, double Ax, double Mx)
+      csrtodense(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          npy_cfloat_wrapper Mx)
+      csrtodense(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          npy_cdouble_wrapper Mx)
+      csrtodense(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, signed char Mx)
+      csrtodense(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, unsigned char Mx)
+      csrtodense(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, short Mx)
+      csrtodense(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, int Mx)
+      csrtodense(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, long long Mx)
+      csrtodense(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, float Mx)
+      csrtodense(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, double Mx)
+      csrtodense(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, npy_cfloat_wrapper Mx)
+      csrtodense(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, npy_cdouble_wrapper Mx)
+      """
+    return _sparsetools.csrtodense(*args)
 
 def densetocsr(*args):
-  """
-    densetocsr(int n_row, int n_col, signed char Mx, std::vector<(int)> Ap, 
-        std::vector<(int)> Aj, std::vector<(signed char)> Ax)
-    densetocsr(int n_row, int n_col, unsigned char Mx, std::vector<(int)> Ap, 
-        std::vector<(int)> Aj, std::vector<(unsigned char)> Ax)
-    densetocsr(int n_row, int n_col, short Mx, std::vector<(int)> Ap, 
-        std::vector<(int)> Aj, std::vector<(short)> Ax)
-    densetocsr(int n_row, int n_col, int Mx, std::vector<(int)> Ap, 
-        std::vector<(int)> Aj, std::vector<(int)> Ax)
-    densetocsr(int n_row, int n_col, long long Mx, std::vector<(int)> Ap, 
-        std::vector<(int)> Aj, std::vector<(long long)> Ax)
-    densetocsr(int n_row, int n_col, float Mx, std::vector<(int)> Ap, 
-        std::vector<(int)> Aj, std::vector<(float)> Ax)
-    densetocsr(int n_row, int n_col, double Mx, std::vector<(int)> Ap, 
-        std::vector<(int)> Aj, std::vector<(double)> Ax)
-    densetocsr(int n_row, int n_col, npy_cfloat_wrapper Mx, std::vector<(int)> Ap, 
-        std::vector<(int)> Aj, std::vector<(npy_cfloat_wrapper)> Ax)
-    densetocsr(int n_row, int n_col, npy_cdouble_wrapper Mx, std::vector<(int)> Ap, 
-        std::vector<(int)> Aj, std::vector<(npy_cdouble_wrapper)> Ax)
-    densetocsr(long long n_row, long long n_col, signed char Mx, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Aj, 
-        std::vector<(signed char)> Ax)
-    densetocsr(long long n_row, long long n_col, unsigned char Mx, 
-        std::vector<(long long)> Ap, std::vector<(long long)> Aj, 
-        std::vector<(unsigned char)> Ax)
-    densetocsr(long long n_row, long long n_col, short Mx, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Aj, 
-        std::vector<(short)> Ax)
-    densetocsr(long long n_row, long long n_col, int Mx, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Aj, 
-        std::vector<(int)> Ax)
-    densetocsr(long long n_row, long long n_col, long long Mx, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Aj, 
-        std::vector<(long long)> Ax)
-    densetocsr(long long n_row, long long n_col, float Mx, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Aj, 
-        std::vector<(float)> Ax)
-    densetocsr(long long n_row, long long n_col, double Mx, std::vector<(long long)> Ap, 
-        std::vector<(long long)> Aj, 
-        std::vector<(double)> Ax)
-    densetocsr(long long n_row, long long n_col, npy_cfloat_wrapper Mx, 
-        std::vector<(long long)> Ap, std::vector<(long long)> Aj, 
-        std::vector<(npy_cfloat_wrapper)> Ax)
-    densetocsr(long long n_row, long long n_col, npy_cdouble_wrapper Mx, 
-        std::vector<(long long)> Ap, std::vector<(long long)> Aj, 
-        std::vector<(npy_cdouble_wrapper)> Ax)
     """
-  return _sparsetools.densetocsr(*args)
+      densetocsr(int n_row, int n_col, signed char Mx, std::vector<(int)> Ap,
+          std::vector<(int)> Aj, std::vector<(signed char)> Ax)
+      densetocsr(int n_row, int n_col, unsigned char Mx, std::vector<(int)> Ap,
+          std::vector<(int)> Aj, std::vector<(unsigned char)> Ax)
+      densetocsr(int n_row, int n_col, short Mx, std::vector<(int)> Ap,
+          std::vector<(int)> Aj, std::vector<(short)> Ax)
+      densetocsr(int n_row, int n_col, int Mx, std::vector<(int)> Ap,
+          std::vector<(int)> Aj, std::vector<(int)> Ax)
+      densetocsr(int n_row, int n_col, long long Mx, std::vector<(int)> Ap,
+          std::vector<(int)> Aj, std::vector<(long long)> Ax)
+      densetocsr(int n_row, int n_col, float Mx, std::vector<(int)> Ap,
+          std::vector<(int)> Aj, std::vector<(float)> Ax)
+      densetocsr(int n_row, int n_col, double Mx, std::vector<(int)> Ap,
+          std::vector<(int)> Aj, std::vector<(double)> Ax)
+      densetocsr(int n_row, int n_col, npy_cfloat_wrapper Mx, std::vector<(int)> Ap,
+          std::vector<(int)> Aj, std::vector<(npy_cfloat_wrapper)> Ax)
+      densetocsr(int n_row, int n_col, npy_cdouble_wrapper Mx, std::vector<(int)> Ap,
+          std::vector<(int)> Aj, std::vector<(npy_cdouble_wrapper)> Ax)
+      densetocsr(long long n_row, long long n_col, signed char Mx, std::vector<(long long)> Ap,
+          std::vector<(long long)> Aj,
+          std::vector<(signed char)> Ax)
+      densetocsr(long long n_row, long long n_col, unsigned char Mx,
+          std::vector<(long long)> Ap, std::vector<(long long)> Aj,
+          std::vector<(unsigned char)> Ax)
+      densetocsr(long long n_row, long long n_col, short Mx, std::vector<(long long)> Ap,
+          std::vector<(long long)> Aj,
+          std::vector<(short)> Ax)
+      densetocsr(long long n_row, long long n_col, int Mx, std::vector<(long long)> Ap,
+          std::vector<(long long)> Aj,
+          std::vector<(int)> Ax)
+      densetocsr(long long n_row, long long n_col, long long Mx, std::vector<(long long)> Ap,
+          std::vector<(long long)> Aj,
+          std::vector<(long long)> Ax)
+      densetocsr(long long n_row, long long n_col, float Mx, std::vector<(long long)> Ap,
+          std::vector<(long long)> Aj,
+          std::vector<(float)> Ax)
+      densetocsr(long long n_row, long long n_col, double Mx, std::vector<(long long)> Ap,
+          std::vector<(long long)> Aj,
+          std::vector<(double)> Ax)
+      densetocsr(long long n_row, long long n_col, npy_cfloat_wrapper Mx,
+          std::vector<(long long)> Ap, std::vector<(long long)> Aj,
+          std::vector<(npy_cfloat_wrapper)> Ax)
+      densetocsr(long long n_row, long long n_col, npy_cdouble_wrapper Mx,
+          std::vector<(long long)> Ap, std::vector<(long long)> Aj,
+          std::vector<(npy_cdouble_wrapper)> Ax)
+      """
+    return _sparsetools.densetocsr(*args)
 
 def sort_csr_indices(*args):
-  """
-    sort_csr_indices(int n_row, int n_col, int Ap, int Aj, signed char Ax)
-    sort_csr_indices(int n_row, int n_col, int Ap, int Aj, unsigned char Ax)
-    sort_csr_indices(int n_row, int n_col, int Ap, int Aj, short Ax)
-    sort_csr_indices(int n_row, int n_col, int Ap, int Aj, int Ax)
-    sort_csr_indices(int n_row, int n_col, int Ap, int Aj, long long Ax)
-    sort_csr_indices(int n_row, int n_col, int Ap, int Aj, float Ax)
-    sort_csr_indices(int n_row, int n_col, int Ap, int Aj, double Ax)
-    sort_csr_indices(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax)
-    sort_csr_indices(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax)
-    sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax)
-    sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax)
-    sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax)
-    sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax)
-    sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax)
-    sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax)
-    sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax)
-    sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax)
-    sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax)
     """
-  return _sparsetools.sort_csr_indices(*args)
+      sort_csr_indices(int n_row, int n_col, int Ap, int Aj, signed char Ax)
+      sort_csr_indices(int n_row, int n_col, int Ap, int Aj, unsigned char Ax)
+      sort_csr_indices(int n_row, int n_col, int Ap, int Aj, short Ax)
+      sort_csr_indices(int n_row, int n_col, int Ap, int Aj, int Ax)
+      sort_csr_indices(int n_row, int n_col, int Ap, int Aj, long long Ax)
+      sort_csr_indices(int n_row, int n_col, int Ap, int Aj, float Ax)
+      sort_csr_indices(int n_row, int n_col, int Ap, int Aj, double Ax)
+      sort_csr_indices(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax)
+      sort_csr_indices(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax)
+      sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax)
+      sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax)
+      sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax)
+      sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax)
+      sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax)
+      sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax)
+      sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax)
+      sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax)
+      sort_csr_indices(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax)
+      """
+    return _sparsetools.sort_csr_indices(*args)
 
 def sort_csc_indices(*args):
-  """
-    sort_csc_indices(int n_row, int n_col, int Ap, int Ai, signed char Ax)
-    sort_csc_indices(int n_row, int n_col, int Ap, int Ai, unsigned char Ax)
-    sort_csc_indices(int n_row, int n_col, int Ap, int Ai, short Ax)
-    sort_csc_indices(int n_row, int n_col, int Ap, int Ai, int Ax)
-    sort_csc_indices(int n_row, int n_col, int Ap, int Ai, long long Ax)
-    sort_csc_indices(int n_row, int n_col, int Ap, int Ai, float Ax)
-    sort_csc_indices(int n_row, int n_col, int Ap, int Ai, double Ax)
-    sort_csc_indices(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax)
-    sort_csc_indices(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax)
-    sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai, 
-        signed char Ax)
-    sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai, 
-        unsigned char Ax)
-    sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai, 
-        short Ax)
-    sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai, 
-        int Ax)
-    sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai, 
-        long long Ax)
-    sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai, 
-        float Ax)
-    sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai, 
-        double Ax)
-    sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cfloat_wrapper Ax)
-    sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cdouble_wrapper Ax)
     """
-  return _sparsetools.sort_csc_indices(*args)
+      sort_csc_indices(int n_row, int n_col, int Ap, int Ai, signed char Ax)
+      sort_csc_indices(int n_row, int n_col, int Ap, int Ai, unsigned char Ax)
+      sort_csc_indices(int n_row, int n_col, int Ap, int Ai, short Ax)
+      sort_csc_indices(int n_row, int n_col, int Ap, int Ai, int Ax)
+      sort_csc_indices(int n_row, int n_col, int Ap, int Ai, long long Ax)
+      sort_csc_indices(int n_row, int n_col, int Ap, int Ai, float Ax)
+      sort_csc_indices(int n_row, int n_col, int Ap, int Ai, double Ax)
+      sort_csc_indices(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax)
+      sort_csc_indices(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax)
+      sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai,
+          signed char Ax)
+      sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai,
+          unsigned char Ax)
+      sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai,
+          short Ax)
+      sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai,
+          int Ax)
+      sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai,
+          long long Ax)
+      sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai,
+          float Ax)
+      sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai,
+          double Ax)
+      sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cfloat_wrapper Ax)
+      sort_csc_indices(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cdouble_wrapper Ax)
+      """
+    return _sparsetools.sort_csc_indices(*args)
 
 def sum_csr_duplicates(*args):
-  """
-    sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, signed char Ax)
-    sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, unsigned char Ax)
-    sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, short Ax)
-    sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, int Ax)
-    sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, long long Ax)
-    sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, float Ax)
-    sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, double Ax)
-    sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax)
-    sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax)
-    sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax)
-    sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax)
-    sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax)
-    sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax)
-    sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax)
-    sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax)
-    sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax)
-    sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax)
-    sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax)
     """
-  return _sparsetools.sum_csr_duplicates(*args)
+      sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, signed char Ax)
+      sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, unsigned char Ax)
+      sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, short Ax)
+      sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, int Ax)
+      sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, long long Ax)
+      sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, float Ax)
+      sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, double Ax)
+      sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax)
+      sum_csr_duplicates(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax)
+      sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax)
+      sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax)
+      sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax)
+      sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax)
+      sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax)
+      sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax)
+      sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax)
+      sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax)
+      sum_csr_duplicates(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax)
+      """
+    return _sparsetools.sum_csr_duplicates(*args)
 
 def sum_csc_duplicates(*args):
-  """
-    sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, signed char Ax)
-    sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, unsigned char Ax)
-    sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, short Ax)
-    sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, int Ax)
-    sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, long long Ax)
-    sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, float Ax)
-    sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, double Ax)
-    sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax)
-    sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax)
-    sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai, 
-        signed char Ax)
-    sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai, 
-        unsigned char Ax)
-    sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai, 
-        short Ax)
-    sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai, 
-        int Ax)
-    sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai, 
-        long long Ax)
-    sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai, 
-        float Ax)
-    sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai, 
-        double Ax)
-    sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cfloat_wrapper Ax)
-    sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai, 
-        npy_cdouble_wrapper Ax)
     """
-  return _sparsetools.sum_csc_duplicates(*args)
+      sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, signed char Ax)
+      sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, unsigned char Ax)
+      sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, short Ax)
+      sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, int Ax)
+      sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, long long Ax)
+      sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, float Ax)
+      sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, double Ax)
+      sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, npy_cfloat_wrapper Ax)
+      sum_csc_duplicates(int n_row, int n_col, int Ap, int Ai, npy_cdouble_wrapper Ax)
+      sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai,
+          signed char Ax)
+      sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai,
+          unsigned char Ax)
+      sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai,
+          short Ax)
+      sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai,
+          int Ax)
+      sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai,
+          long long Ax)
+      sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai,
+          float Ax)
+      sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai,
+          double Ax)
+      sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cfloat_wrapper Ax)
+      sum_csc_duplicates(long long n_row, long long n_col, long long Ap, long long Ai,
+          npy_cdouble_wrapper Ax)
+      """
+    return _sparsetools.sum_csc_duplicates(*args)
 
 def get_csr_submatrix(*args):
-  """
-    get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, signed char Ax, 
-        int ir0, int ir1, int ic0, int ic1, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(signed char)> Bx)
-    get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, unsigned char Ax, 
-        int ir0, int ir1, int ic0, int ic1, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(unsigned char)> Bx)
-    get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, short Ax, int ir0, 
-        int ir1, int ic0, int ic1, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(short)> Bx)
-    get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, int Ax, int ir0, 
-        int ir1, int ic0, int ic1, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(int)> Bx)
-    get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, long long Ax, 
-        int ir0, int ir1, int ic0, int ic1, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(long long)> Bx)
-    get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, float Ax, int ir0, 
-        int ir1, int ic0, int ic1, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(float)> Bx)
-    get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, double Ax, int ir0, 
-        int ir1, int ic0, int ic1, std::vector<(int)> Bp, 
-        std::vector<(int)> Bj, std::vector<(double)> Bx)
-    get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax, 
-        int ir0, int ir1, int ic0, int ic1, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax, 
-        int ir0, int ir1, int ic0, int ic1, 
-        std::vector<(int)> Bp, std::vector<(int)> Bj, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
-    get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj, 
-        signed char Ax, long long ir0, long long ir1, 
-        long long ic0, long long ic1, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(signed char)> Bx)
-    get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj, 
-        unsigned char Ax, long long ir0, long long ir1, 
-        long long ic0, long long ic1, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(unsigned char)> Bx)
-    get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj, 
-        short Ax, long long ir0, long long ir1, 
-        long long ic0, long long ic1, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(short)> Bx)
-    get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj, 
-        int Ax, long long ir0, long long ir1, 
-        long long ic0, long long ic1, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(int)> Bx)
-    get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj, 
-        long long Ax, long long ir0, long long ir1, 
-        long long ic0, long long ic1, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(long long)> Bx)
-    get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj, 
-        float Ax, long long ir0, long long ir1, 
-        long long ic0, long long ic1, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(float)> Bx)
-    get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj, 
-        double Ax, long long ir0, long long ir1, 
-        long long ic0, long long ic1, std::vector<(long long)> Bp, 
-        std::vector<(long long)> Bj, 
-        std::vector<(double)> Bx)
-    get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cfloat_wrapper Ax, long long ir0, 
-        long long ir1, long long ic0, long long ic1, 
-        std::vector<(long long)> Bp, std::vector<(long long)> Bj, 
-        std::vector<(npy_cfloat_wrapper)> Bx)
-    get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj, 
-        npy_cdouble_wrapper Ax, long long ir0, 
-        long long ir1, long long ic0, long long ic1, 
-        std::vector<(long long)> Bp, std::vector<(long long)> Bj, 
-        std::vector<(npy_cdouble_wrapper)> Bx)
     """
-  return _sparsetools.get_csr_submatrix(*args)
-
+      get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, signed char Ax,
+          int ir0, int ir1, int ic0, int ic1, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(signed char)> Bx)
+      get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, unsigned char Ax,
+          int ir0, int ir1, int ic0, int ic1, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(unsigned char)> Bx)
+      get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, short Ax, int ir0,
+          int ir1, int ic0, int ic1, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(short)> Bx)
+      get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, int Ax, int ir0,
+          int ir1, int ic0, int ic1, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(int)> Bx)
+      get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, long long Ax,
+          int ir0, int ir1, int ic0, int ic1, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(long long)> Bx)
+      get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, float Ax, int ir0,
+          int ir1, int ic0, int ic1, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(float)> Bx)
+      get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, double Ax, int ir0,
+          int ir1, int ic0, int ic1, std::vector<(int)> Bp,
+          std::vector<(int)> Bj, std::vector<(double)> Bx)
+      get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, npy_cfloat_wrapper Ax,
+          int ir0, int ir1, int ic0, int ic1,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      get_csr_submatrix(int n_row, int n_col, int Ap, int Aj, npy_cdouble_wrapper Ax,
+          int ir0, int ir1, int ic0, int ic1,
+          std::vector<(int)> Bp, std::vector<(int)> Bj,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj,
+          signed char Ax, long long ir0, long long ir1,
+          long long ic0, long long ic1, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(signed char)> Bx)
+      get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj,
+          unsigned char Ax, long long ir0, long long ir1,
+          long long ic0, long long ic1, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(unsigned char)> Bx)
+      get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj,
+          short Ax, long long ir0, long long ir1,
+          long long ic0, long long ic1, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(short)> Bx)
+      get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj,
+          int Ax, long long ir0, long long ir1,
+          long long ic0, long long ic1, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(int)> Bx)
+      get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj,
+          long long Ax, long long ir0, long long ir1,
+          long long ic0, long long ic1, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(long long)> Bx)
+      get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj,
+          float Ax, long long ir0, long long ir1,
+          long long ic0, long long ic1, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(float)> Bx)
+      get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj,
+          double Ax, long long ir0, long long ir1,
+          long long ic0, long long ic1, std::vector<(long long)> Bp,
+          std::vector<(long long)> Bj,
+          std::vector<(double)> Bx)
+      get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cfloat_wrapper Ax, long long ir0,
+          long long ir1, long long ic0, long long ic1,
+          std::vector<(long long)> Bp, std::vector<(long long)> Bj,
+          std::vector<(npy_cfloat_wrapper)> Bx)
+      get_csr_submatrix(long long n_row, long long n_col, long long Ap, long long Aj,
+          npy_cdouble_wrapper Ax, long long ir0,
+          long long ir1, long long ic0, long long ic1,
+          std::vector<(long long)> Bp, std::vector<(long long)> Bj,
+          std::vector<(npy_cdouble_wrapper)> Bx)
+      """
+    return _sparsetools.get_csr_submatrix(*args)

Modified: branches/scipy.scons/scipy/stats/models/robust/scale.py
===================================================================
--- branches/scipy.scons/scipy/stats/models/robust/scale.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/scipy/stats/models/robust/scale.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -49,7 +49,7 @@
 
     tmp = 2 * norm.cdf(c) - 1
     gamma = tmp + c**2 * (1 - tmp) - 2 * c * norm.pdf(c)
-    del tmp 
+    del tmp
 
     niter = 30
 

Modified: branches/scipy.scons/setup.py
===================================================================
--- branches/scipy.scons/setup.py	2007-11-21 12:21:03 UTC (rev 3556)
+++ branches/scipy.scons/setup.py	2007-11-21 12:32:02 UTC (rev 3557)
@@ -44,19 +44,19 @@
 os.environ['NO_SCIPY_IMPORT']='SciPy/setup.py'
 
 def configuration(parent_package='',top_path=None):
-      from numpy.distutils.misc_util import Configuration
-      config = Configuration(None, parent_package, top_path)
-      config.set_options(ignore_setup_xxx_py=True,
-                         assume_default_configuration=True,
-                         delegate_options_to_subpackages=True,
-                         quiet=True)
+    from numpy.distutils.misc_util import Configuration
+    config = Configuration(None, parent_package, top_path)
+    config.set_options(ignore_setup_xxx_py=True,
+                       assume_default_configuration=True,
+                       delegate_options_to_subpackages=True,
+                       quiet=True)
 
-      config.add_subpackage('scipy')
-      config.add_data_files(('scipy','*.txt'))
+    config.add_subpackage('scipy')
+    config.add_data_files(('scipy','*.txt'))
 
-      config.get_version('scipy/version.py') # sets config.version
+    config.get_version('scipy/version.py') # sets config.version
 
-      return config
+    return config
 
 def setup_package():
 




More information about the Scipy-svn mailing list